Genii Weblog

Weblog search results for: "rich text"

Thu 3 Mar 2005, 05:00 PM
In Notes/Domino 6, IBM created a neat new field type called Rich Text Lite, which is quite useful (even though the spelling of "lite" offends my grammatical sensibilities and probably has my librarian grandmother spinning in her grave).  The field both restricts which types of objects can be placed in it, and adds a convenient way to add those objects.  The only problem is, this field type does cause some serious confusion amongst our customers, who want to know if Midas can handle Rich Text Lite fields.

Guess what?  Rich Text Lite fields are just Rich Text fields with a different UI approach... (read on)
Mon 9 May 2005, 11:11 PM
In order to lower the cost of entry for the Midas Rich Text C++ API, and in order to simplify ordering for bundled Midas products, we are eliminating the "Maintenance Fee" which was charged prior to this point for the Midas Rich Text C++ API.  This significantly reduces the entry level price for both client and servers, and unifies the pricing for all three Midas Rich Text products.  It also reduces the cost for bundles of the Midas Rich Text products. 

As an example, a customer who wanted the ability to create LotusScript agents with the Midas Rich Text LSX, but who also wanted to add in specialized menu add-ins using the Midas Rich Text C++ API would have had to pay $3500 US for just the Base Client Licenses up until now, but the price has now been lowered to $1500 US for the two products when purchased at the same time.  Our philosophy is that once a company understands the value of rich text access using the Midas model, it should not be a significant burden to use it in different languages and contexts.  If a company is shifting from LotusScript to Java, they should be able to quickly shift from using the Midas Rich Text LSX to @Midas Formulas.  If a company wants to convert an agent using the Midas Rich Text LSX to a C++ application for performance reasons, they should be able to move into the Midas Rich Text C++ API with almost no code changes and for a reasonable price.

Normally, bundled Midas products must be purchased together, but as a special offer for existing Midas customers, from today until June 10th, any existing Midas Rich Text LSX, Midas Rich Text C++ API or @Midas Formulas customer may purchase a matching license for either of the other two products for 50% of its current cost.  You could even buy both for the price of a single product, so if you currently have a Base Client License for the Midas Rich Text LSX, you could add on the @Midas Formulas for just $500 US.  If you have server licenses for the Midas Rich Text LSX and would like to run server add-in programs using the Midas functionality, you can add on a Midas Rich Text C++ API server license for just $1250 US for the first server and $750 US for each additional server.  
Tue 16 Dec 2008, 10:55 AM
On Ed Brill's blog, I saw mention of Google Trends, and decided to do a bit of playing.  The results were surprising to me.  First, look at the stunning similarity in the two charts below.  Although someone wiser might hesitate to assume causal relationships, it seems clear to me that Google is saying that:
  • As "rich text" goes, so goes "Lotus Notes".  (Bah humbug to those who dismiss rich text!)
  • There are more searches for "rich text" than for "Lotus Notes", fairly consistently.  Who'd have thought it?
  • One of the six most important "rich text" news items in the past five years was our release of the Midas Rich Text C++ API.


Honestly, would you have thought any of those three things before reading this post?

(read on) to see the two charts.

Tags:

Mon 14 Nov 2005, 02:30 PM
In a comment on the Gold forums, I suggested that perhaps I should write another Rich Text 101 article on layers.  I have since heard from a couple of people through e-mail,asking that I continue this popular series.  I looked back to see how long it has been since I last wrote a Rich Text 101 article, and was appalled to see I haven't written one since June of 2004.  Yikes!

So, in the spirit of interactivity, I'm going to ask you which topics need such an article.  Here is the list of previous Rich Text 101 articles:

Previous Rich Text 101 articles
Rich Text 101 - Doclinks (July 5, 2003)
Rich Text 101 - Tables, Part 1 (July 15, 2003)
Rich Text 101 - Images (July 20, 2003)
Rich Text 101 - Paragraphs (August 19, 2003, updated August 20)
Rich Text 101 - MIME/HTML (September 8, 2003)
Rich Text 101 - Text (September 22, 2003)
Rich Text 101 - Rich Text Itself (October 7, 2003)
Rich Text 101 - Sections (December 16, 2003)
Rich Text 101 - Hide-when formulas (June 1, 2004)

Assorted Possible Topics (but feel free to add your own)
Rich Text 101 - Tables, Part 2
Rich Text 101 - Layers
Rich Text 101 - File Attachments
Rich Text 101 - Buttons and Hotspots
Rich Text 101 - 
Your chance to vote
Hey, don't hesitate or wait for formal rules here.  Just let me know if you would like to see one (or more) of these or other topics loosely related to rich text.  I'll see what I can do to accommodate.

Tags:

Tue 24 Aug 2004, 11:12 AM
There are a number of questions which come up on the forums over and over, and many of them relate to hide-when formulas.  I recently wrote a post on Writing better hide-when formulas, which has been very popular and is frequently visited and linked to.  I decided to follow that up with a post on hiding a rich text field... (read on)
Tue 1 Jun 2004, 08:40 AM
Rich Text 101 logo
For years, a frequent topic of discussion on the Notes/Domino technical forums has been hide-when formulas and how they "screw up" rich text fields.  I thought it might be worth describing this a bit more fully... (read on)

Tags:

Wed 15 Mar 2006, 11:01 PM
As I test Version 1.3 of CoexEdit and Version 3.61 of the Midas products (which share some of the same engine), I try to find ways to see if conversions from Notes rich text to HTML work properly, and from HTML to rich text work properly, but it tends to be a fairly manual job.  I also have some automated tools to convert either way, but those are mostly useful for detecting crash type situations or even corrupt data situations.  While I can easily convert each of the 40,000+ documents in the Business Partner forum for 2002, for example, or every HTML file in my browser cache, I can't manually look at each one to verify that it worked properly.  So, what can I do to at least reassure myself that the conversion either way worked?

Even for me, and even with Midas, it is very hard to compare two rich text fields and see if they are "essentially the same".  By that I mean, they would look and act the same, because they would not have to be identical internally to look and act the same.  There are numerous small differences, including different PABID's, explicit versus implicit paragraph definitions, extended table flags that happen to be nonessential, etc.  So, comparing rich text to rich text is very difficult.

But comparing HTML to HTML is less difficult.  While technically you can have different HTML that looks the same, I can control for that since I am generating the HTML.  So, even though I want to ensure that the rich text looks and act "right", I am left with comparing HTML.  Basically, if I start with rich text, covert to HTML, then convert to rich text, then convert to HTML again, will the HTML results from the second and fourth step be the same?  This does not guarantee fidelity with the rich text, but it does guarantee a form of stability, since the results will likely not change no matter how many iterations if it made it through two iterations.  So, if I run my agent against the 40,000+ documents in the Partner Forum for 2002, I can readily discover the trouble spots where RT1 -> HTML1 -> RT2 -> HTML2 come up with different HTML1 and HTML2.  Then, I can look and see what caused the discrepancy.  A long slow difficult effort, but the results for CoexEdit and Midas users are pretty clear.  The smaller the set of discrepancies, the better, and I can then move on to the Designer Help db and other more difficult cases.  Hence, the late nights, even when I am in the middle of moving office and home.
Wed 8 Dec 2004, 08:24 PM
Over on codestore.net, Jake Howlett posted an article on Domino Rich Text in the Browser, Advanced, in which he says
The last article I wrote - Domino Rich Text In The Browser - introduced the idea of editing WYSIWYG HTML in the browser without needing to use any Java applets. The text was stored as PassThru HTML, giving the appearance of native Rich Text. It wasn't quite the Holy Grail of being able to edit native Rich Text in both the client and a browser without losing any formatting. However, if your users don't use the client, it's a nice solution and worthy of a read.
A pretty good article, but what about that that line?
It wasn't quite the Holy Grail of being able to edit native Rich Text in both the client and a browser without losing any formatting.
Isn't it about time we did something about that?  Watch this space for details.
Thu 14 Jun 2018, 11:23 AM
This is the sixth in a series on configuring and customizing CKEditor. While some applications such as discussions may have a single rich text field, there are many where multiple rich text fields are available to include different steps or kinds of information. In these applications, the repeated toolbars and attachment sections may overwhelm the page. In this post, I'll show how you can disconnect the toolbar from the top (or bottom) of the rich text, and then share the same toolbar between multiple rich text fields.
 
1) Our goal is one toolbar which will work with multiple different rich text fields
The toolbar will understand where the cursor is, so the toolbar actions will act on that rich text.
 
Three rich text fields with one shared toolbar
 
 
2) Setting up the location of the toolbar and bottom status bar
There are actually three parts of the CKEditor to worry about. The first is the editor area itself, which is defined by where the rich text field appears. That's the obvious one. The other two are the toolbar and the bottom bar, which is the status line which appears at the bottom of the editor space in a standard CKEditor configuration. Both the toolbar and bottom bar can be shared. In this case, I went one further and hid the bottom bar. There may be a better way to disable it (let us know in the comments!), but this is what I came up with.
 
Three rich text fields with one shared toolbar
 
 
3) Adding and setting the 'sharedspaces' addin
Now that we have the divs set where we want the toolbar and bottom bar, we go ahead and add an extraplugin for 'sharedspaces'. You'll notice I also added 'autogrow' which is a useful feature that allows the rich text field editor to grow with the content. I set the minimum and maximum height for the autogrow so that it worked well with the page. Then I set the sharedspaces top and bottom values to the ids of the divs. Again, there is likely a better solution to redefining the toolbar the exact same way for each field, but this worked.
 
Three rich text fields with one shared toolbar
 
 
4) There is a great deal of flexibility possible, including side-by-side fields and a vertical toolbar
This example shows three rich text fields side-by-side. At first, I put the toolbar at the top as in my earlier example, but then decided it would be more useful to have a vertical toolbar. I should note that I spent way too long trying to make the toolbar go vertical with separators and such before realizing I just needed to put it in a column with only room for one icon at a time.
 
Three rich text fields with one shared toolbar
 
 
5) XPages, a fixed location toolbar and other thoughts
While I only showed Classic design for this demo, the process is very similar for XPages. The extraplugins get added with dojoattributes, while the shared spaces are set like a custom tooIbar with another dojo attribute. The only trick is making sure your div ids work properly in XPages, which likes to mess with such things. As for a fixed location toolbar, I didn't create an example for it, but it would be easy to put the toolbar div into a non-scrolling area of the form while the rich text fields were in a scrolling part. Do you have other ideas about how and where to use the toolbar that might not be obvious? Do you have specialized fields that are implemented other ways such as popups or floating pages? Leave a comment and let us know.
 
All topics in the series
 

Tags:

Thu 29 Aug 2013, 10:56 AM
I started working with Lotus Notes rich text (at the C API CD record level) in 1995. I have the best selling Notes rich text product in the world. Yet I still run into peculiar situations I've never seen or anticipated. This time, it was even in the Designer help. Grrr! Things like this are critical when generating HTML/MIME/EPUB, because tables don't end when they are supposed to and so forth. There isn't even any point raising this sort of thing with IBM, because the fact that it was once an issue means I have to deal with it. Still, in the Designer Help?

Well, it is fixed for Midas V5, so that is one good thing.


Rich text hotspot goes past end of table
Mon 29 Jun 2009, 12:59 PM
Having worked extensively with Notes rich text for about fifteen years, with HTML for about ten years and with CSS for, what, eight years (I'm less sure of this), I have had lots of opportunities to compare the features in rich text and the features in HTML/CSS.  Some things have been easier in rich text; others have been easier in HTML/CSS.  Of course, the comparison has been made more difficult by frequent advances in each.  At this point, most things that can be accomplished in HTML/CSS can be accomplished in rich text in Notes 8/8.5, and vice-versa.  One simple, and seemingly minor,l feature which I have long missed in rich text is still missing in 8.5 and beyond.  That is the ability to have cascading fonts.

Imagine that I create a Notes rich text document with some text in Zombie, a font my son downloaded a while back.  For example, This text is in Zombie 14pt, which looks to me (and to you if you happen to have download Zombie yourself or had your son do you the favor), 


(read on) to see rest of post.

Tags:

Tue 6 Jan 2009, 02:25 PM
One question which I have gotten repeatedly since I started discussing rendering issues in my various recent posts is whether CoexLinks only deals with outbound rendering (Notes rich text to MIME), or whether it also helps with inbound rendering (MIME to Notes rich text).  The answer I tend to give is "It could, but I don't know whether it is worth it."  I thought that rather than answer everybody who asks individually, I'd throw the question out to the huddled masses, yearning to read clear messages...

Given the enhancements to inbound email rendering in Notes mail, is there still a compelling reason/need to render MIME into rich text?  Please note the wording I chose, because the Notes mail system DOES NOT render MIME to rich text in Notes 8/8.5.  Instead, it displays MIME using an Internet Explorer embedded component.  While that may see to be a trivial distinction, anyone who has tried to edit a heavily MIME formatted e-mail message, or forward it or reply to it, will have discovered the difference.  For example, I get an email newsletter from my local grocery store that lists (presumably) yummy treats I may be enticed to buy.  Look at the two images below.  The first is rendered by the IE component in the Notes 8 mail.  The second is rendered in rich text after the MIME conversion.  I trust I don't have to point out the differences...

(read on) to see images and the rest of the question.

Tags:

Thu 21 Jun 2007, 11:22 PM
It is late, so I'll put wait until tomorrow to list features, etc., but Version 3.70 of both the Midas Rich Text LSX and the Midas Rich Text C++ API are available on our website.  Enjoy!





Tue 24 Oct 2006, 11:29 AM
For several years now, our Midas Rich Text LSX has allowed for a red-lined rich text comparison.  It is very handy, but it is extremely difficult to do well.  Unlike the Microsoft Word type of revision marks, we have no way of knowing what steps were gone through, but must simply compare one rich text field with another.  I am reminded of the difficulty because a newer customer has been using this a lot and has come up with four specific issues, one of which causes a crash (we fixed that immediately), and the others which seem to have found some of the cracks in the synchronization engine.

The good news - we have fixed most of the problems, and once they are all fixed, they will be in the next Midas release.  So, if your company uses the Midas rich text comparisons, take heart, as they will soon get better.  Better still, if you are seeing any problems or odd comparisons, let us know while wqe are making these fixes and maybe they can get fixed as well, or maybe they are the same as the ones we are fixing now.  Just rest assured that we are constantly striving to make the rich text comparison as robust and accurate as we can.

If you want to see an on-line, simpler version, of the rich text comparison, try it here.
Fri 7 Jul 2006, 10:12 AM
Along with many others, I am seeing more comment spam, but it is still along the lines of one or two a day, not gazillions.  I am intrigued by how many people shut off comments on older posts, often with commentary that says they never get useful comments on old posts.  I am intrigued because it is not uncommon for this blog to get interesting comments on older posts.  I don't know why exactly.  Perhaps it is due to the fact that some posts such as the Domino Limits post, posted April 2004 with the most recent useful comment June 2006, are pointed to by many external pages.

Which brings me to the enduring popularity of my Rich Text 101 series of articles.  Wow!  I don't have statistics on how many times they have been read, although I wish I did, but the following list should give you an idea.  Here are the articles in the series, along with the number of months after the article was posted that the most recent non-spam comment was posted.  While you are at it, feel free to read the articles and post your comments and throw my whole numbering completely out of whack.  I'm used to it.

Rich Text 101 articles
Rich Text 101 - Doclinks (Posted July 2003, latest comment March 2005)
Rich Text 101 - Tables, Part 1 (Posted July 2003, latest comment November 2004)
Rich Text 101 - Images (Posted July 2003, latest comment November 2005)
Rich Text 101 - Paragraphs (Posted August 2003, latest comment April 2005)
Rich Text 101 - MIME/HTML (Posted September 2003, December 2005)
Rich Text 101 - Text (Posted September 2003, latest comment November 2005)
Rich Text 101 - Rich Text Itself (Posted October 2003, latest comment March 2006)
Rich Text 101 - Sections (Posted December 2003, latest comment January 2005)
Rich Text 101 - Hide-when formulas (Posted 2004, latest comment July 2005) 
Rich Text 101 - Layers (Posted January 2006, latest comment February 2006)  

That is an average of almost eighteen months between the initial post and the last useful comment.  As I said, "Wow!"  I'm glad people are still reading these (which are updated periodically to correct mistakes or to add in knowledge gained since they were written or even to note changes in later versions of Notes), and I am glad they are still commenting.

Tags:

Mon 10 May 2004, 10:59 AM
Genii Software is pleased to announce the release of the Midas Rich Text LSX Version 3.30, with significant enhancements to the HTML generation engine, the HTML import engine, and the rich text manipulation engine.  This version stresses stability, performance, and breadth of support for ND 6/6.5 constructs.

The Midas Rich Text LSX gives Notes/Domino developers real control over Notes rich text fields using simple LotusScript classes. Add the power to program rich text, re-shape it to meet your specifications and integrate it into your application workflow. Create and control high quality, standards based HTML.  Sort, create, rearrange and transform tables, sections, hotspots, links and other rich text elements. Utilize features such as dynamic link creation and wildcard search/replace to build powerful template driven applications in Notes and on the Web.  The Midas Rich Text LSX is currently available for Windows 95/98/NT/XP/2000/2003, OS/2 and AIX for Notes/Domino 4.5x, 4.6x, 5.x, 6.x and 6.5x.

Read the press release, or visit the Midas Rich Text LSX page for additional information.

In addition to the features themselves, we have released a number of new samples to help explain and demonstrate what Midas can do.  Try out our Export to MS WordExport to MIMEExport to HTML/XHTML, and Report It! samples now, and watch in a few days for Resourceful Images and Picture This! which will show how to use image resources and graphics with Midas.
Tue 13 Dec 2005, 02:38 PM
CoexEdit customer called today with a rich text issue.  The issue was not with CoexEdit, which works just the way they want, but rather with a database which they only use through the web.  Using our integration database and some tips I had given them before, they had gotten the database working on the web, and were using a WebQuerySave agent to set the HTML to be passthrough HTML, thus allowing it to display properly from read mode.  This was just using the regular Notes Rich Text classes, which are actually good for something after all.

But in classic fashion, creating a rich text field and then appending some html with a style set had created two Body items.  That would not normally be a problem, because when you edit in the Notes client, it puts the items together for you, but since this database was never edited through the Notes client, that never happened.  It just so happened, the customer had a process that would take the HTML from the body field and print it from the web, but it kept on getting the empty Body field.  The customer could have written a more robust handler that would take the HTML from each item, but for internal reasons didn't have that option.  (See post for details)  So they asked me for help.

Now, what did I do?  Did I whip the answer off the top of my head?  Did I search my compendium of rich text tricks to find an answer?  Well, no, I didn't.  This falls into the vast area of "rich text stuff I don't know so well", so I wrote to Jake Howlett (whose codestore.net is an invaluable resource), because I vaguely remembered his having some such issue and resolving it when integrating TinyMCE, and since I stole his code to set passthrough HTML to send to this customer in the first place...

Jake wrote back.  He did not remember ever writing about this, but he did have a suggestion.  Why not use the 

NotesRichTextItem.Compact 

method at the end of the WebQuerySave agent?  I suggested this solution to the customer, and it appears to have worked.  But Jake's comment at the end of his note said:
That seems too easy a solution to a problem asked by "Mr Rich Text"
though ;o)
Ouch!  But Jake is right in a sense.  I know a heck of a lot about rich text, but I don't always recognize the additions of recent versions.  I added an implicit compact to my rich text processing engine in Notes R3, then moved that to the Midas Rich Text LSX when I created it for Notes R4.1, and I never noticed when IBM added the Compact method in Notes 6.  This exposes one of the major shortcomings of my knowledge about rich text - it was learned so long ago, some of it just isn't true anymore.  It also shows that while IBM may be a little late to the game sometimes (c'mon, I was sorting rich text fields in formula language in R3.3 and in LotusScript in R4.1, and they still don't have that in ND7), I should not assume that they are making no progress at all.

In any event, thanks, Jake!
Mon 1 Nov 2004, 10:22 AM
Genii Software is pleased to announce the release of the Midas Rich Text LSX Version 3.40a, with enhancements to the HTML generation engine, the HTML import engine, and the rich text manipulation engine, and the simultaneous release of @Midas Formulas Version 3.40a and Midas Rich Text C++ API Version 3.40a.  This version marks the first release with all three products sharing the same code base, but it also offers major improvements to file attachment handling and HTML importing.  (Please note, there was no Version 3.40 of the LSX, because we wanted all three products on the same version)... (read on)
Fri 29 May 2020, 04:22 PM
Inline JPEG image
 
 
I've noticed a couple of people in very different conversations talk about the idea of "round tripping" data, moving it from Notes rich text to HTML or MIME and then bringing it back. Often, this is described more specifically as moving it from "Domino to Mongo DB" or from Notes to SharePoint or simply from "the client to the web". Fundamentally, these all mean more-or-less the same thing. The internal format is Notes rich text. The "external" format is HTML or MIME, and even the MIME is really just HTML packaged differently.
 
In both conversations where it was mentioned, round tripping was treated as if it were a special case, unusual and not of interest to most Notes/Domino users.
 
This is simply not true. Round tripping happens every day, and it happens without any special coding or effort. Two of the simplest examples:
 
1) Send an email to a colleague outside of your domain. After that person replies, reply back. You've gone from rich text to MIME to rich text (again) to MIME (again). Two round trips.
 
2) Staying entirely in a Notes client, any version including Notes 11, saving a document with a rich text field set to "Store contents as HTML and MIME". Then, open it up to read it. For bonus points, make a change and save it, then open it again. You've gone from rich text to MIME to rich text to MIME to rich text again.
 
But so what? Obviously, Notes allows you to store content as HTML and MIME, so it must understand it. Right? 
 
Watch the video. All I do is save three documents with rich text fields stored as HTML and MIME, then reopen them. That's it. Watch the chaos which ensues. Then, tune in next week as I start to show the different ways Genii Software has found to make that round trip more pleasant and productive. Because we could all use a pleasant round trip right about now.
 
 
(I skipped the audio on this, but the captions should tell you what you need to know. I used HCL Notes 11.0 for this demo.)
 
 
 
 

Tags:

Fri 12 Aug 2016, 11:02 AM
For those who will be in Austin, TX next week for MWLUG, I'm looking forward to seeing you all. I also wanted to invite you to warm up (in Austin in August, who am I kidding?) for the closing session by hearing my talk in at 3pm Friday in Ballroom D.
 
Data Mining in the Mountains of Rich Text and Beyond 
Whether your company is staying with Notes/Domino, moving to only Domino and a mobile/web/XPages strategy, or moving away from Notes/Domino entirely, chances are you have vast mountains of content in databases created over many years. Accessing the simple data can be done in a number of ways, but data mining in the rich text can be more of a challenge. In this session, I discuss the myriad types of rich text and show various ways they can be valuable. There will be brief demos of techniques for extracting rich text, but the focus will be on how to use the data that is there for both analytical and archival purposes.
 
While we talk about unstructured data in Notes databases, we all know that there is a lot of structure built in by custom, policies or process. I will talk about how to take advantage of this structure, as well as how to tackle the really unstructured parts built into rich text. Data visualization will happen. Free beer will not happen unless you bring it.
 
See you there.

Tags:

Thu 21 Mar 2013, 03:22 PM
In this very short demo, I  show how you can use the Midas Rich Text LSX to build instant reports that users can either run on-the-fly or which can load as part of a document opening. In other words, you could build a little bar chart like this based on the values in the document as the document loaded
 
 
 
Let me know if you have any requests for demos either of Midas Rich Text LSX features or Notes/Domino tricks having to do with rich text and such. I am making plans to do videos on Notes 9, on exporting rich text to HTML and MIME, and on more rich text tricks without Midas like the Progressive Disclosure video I made recently.

Tags:

Wed 29 Jul 2009, 11:56 AM
The following idea was posted by Tommy Valand back in November 2007, but it deserves more support.  Even aside from the web editor use, there are many times when it would be handy to be able to create a rich text field, with both computed and static text, for example, and just check a box to say that the rich text should be treated as HTML.   It is available for a whole form, but narrowing it down to a rich text field would be more useful and powerful.

So, why not head over and vote for it if you like the idea?


Tags:

Mon 13 Aug 2007, 01:42 PM
I have been playing a lot with spreadsheets, and I was thinking it might be fun to show a Pivot Table sample in our Report It! demo using the Midas Rich Text LSX and rich text tables.  Would that be appealing?
Mon 7 Aug 2006, 02:43 PM
We are in the midst of planning for Version 4.00 of the Midas Rich Text LSX, Midas Rich Text C++ API and @Midas Formulas, and while some features are already determined (and in the process of being developed), now would be an excellent time to tell us what you would like to see in the new version.  If you have a specific feature or function, or even if you would just like to tell us to focus more on one area, such as HTML generation or rich text comparisons, you can post here or send me an e-mail at .  All suggestions are welcome!
Sat 2 Aug 2003, 12:17 PM
For those who have not used our Midas Rich Text LSX much, or have used it primarily from samples such as the Send It! sample, you might want to start by reading the first article in this series, Midas 101 - Chunk Definitions.  Even for those familiar with chunk definitions, the current topic may come as a bit of a surprise.
  
To recap a bit, the Midas engine relies on a peculiar design methodology.  The Notes Object Model, which basically maps a class to each discrete entity, such as a document, a view, a database, an item, etc.  The Midas Object Model has very few classes, and primarily relies on a single class, the GeniiRTChunk class.  This "chunk" represents a portion of the rich text in somewhat the way a view represents a portion of the document collection of a database.  

In a view, there are selection criteria which determine which portion of the document collection to show.  Within that selection, there is an order based on sorting.  In the Midas Rich Text LSX, there is a chunk definition, which also determines which portion of the rich text to use.  This may be a single element definition, such as "Button 2", or it my be a group of elements defined by a wildcard or range, such as "Section 2-5" or "Table *", or it may even be a portion of rich text bounded by one or more elements, such as "After Graphic 3".  Finally, the portion of rich text can be narrowed down by drilling down in the definition, such as "Table *; Row 1", which is the first row of every table, or "Inside Section 3; Table 1; Row 1; Column 2-4", which is columns 2 through 4 of the first row of the first table inside the third section.  Phew!

So far, anybody who has looked at chunk definitions in Midas before should be fairly comfortable.  This definition language is powerful and used to great effect, since it allows you to describe a very specific part of the rich text and act on it.  But the part that is often confusing is what happens after you act on it.  This is due to the late binding nature of chunk definitions.

Late binding, by the way, usually refers in programming languages to type definitions.  An early binding is when the type definitions can be checked at compile time.  Late binding is when the type cannot be determined or checked until runtime, which makes error checking more difficult.  The tradeoff is that late binding allows more flexibility, and that is the same tradeoff with the Midas chunk definition.

Consider a rich text field with a number of paragraphs of information including, scattered among the paragraphs, three graphics.  If you wanted to use Midas to access each of these graphics and set its HTML name value, you would have code such as the following:

Set rtchunk = rtitem.DefineChunk("Graphic 1")
While rtchunk.Exists
  Call rtchunk.SetTargetProperties("Graphic", "GraphicHTMLName=G" & Cstr(rtchunk.TargetNth))
  rtchunk.GetNextTarget
Wend

The rtchunk.GetNextTarget call changes the definition from "Graphic 1" to "Graphic 2" and so on, so you cycle through the graphics in the rich text field.  So far, so good.  Now, what if instead of changing the property, you wanted to export the graphics and remove them.  You might modify the above code to look like this:

Set rtchunk = rtitem.DefineChunk("Graphic 1")
While rtchunk.Exists
  Call rtchunk.ExportGraphic("c:\temp\G" & Cstr(rtchunk.TargetNth) & ".gif")
  Call rtchunk.Remove
  rtchunk.GetNextTarget
Wend

The code looks good, but it skips every other graphic, leaving them in the rich text field and not exporting them.  This is an easy mistake if you look at the chunk definitions as describing the original rich text.  After all, you first export and remove Graphic 1, then you export and remove Graphic 2, then you export and remove Graphic 3.  Right?

Well, not exactly.  Let's look at the rich text after each step.  First, you define a chunk called "Graphic 1".  It points to the first graphic in the rich text field.  Next, you export and remove that graphic.  What does the chunk point to?  Does it point to nothing, the way it would if you removed a NotesDocument object?  No.  It points to "the first graphic in the rich text field", just like before.  Except that now, since the graphic that was there before has been removed, it points to what was the second graphic, but is now the first graphic.  Therefore, the code should be more like:

Set rtchunk = rtitem.DefineChunk("Graphic 1")
While rtchunk.Exists
  Call rtchunk.ExportGraphic("c:\temp\G" & Cstr(rtchunk.TargetNth) & ".gif")
  Call rtchunk.Remove
'  rtchunk.GetNextTarget
Wend

This is late binding.  You define a chunk and it is evaluated just as you call the method or check the property.  If you call three methods against the same chunk, you may not be effecting the same rich text.  Remember earlier when I mentioned the similarity to a view?  If you remove a document, it is roughly the equivalent of doing the following:

Set view = db.GetView("Main")
Set doc = view.GetFirstDocument
doc.Remove
view.Refresh
Set doc = view.GetFirstDocument

Because the NotesDocument class has early binding, you have to refresh the view and get the first document again, but the "first" document in the view changes over time.  With the chunk definition, the idea of "first" or any other relative definition changes all the time without a refresh or a redefinition of the chunk.  The chunk is a definition, and the methods and properties act on the rich text through the definition, not on any specific rich text.
Wed 16 Aug 2006, 01:55 PM
Well, it had to happen, I guess.  After speaking for years at Lotusphere, at several conferences in Germany and the U.K., and even in Chicago, I am finally giving a talk right here in Ohio at the Northeast Ohio Lotus Users Group (NEOLUG).  I am talking about rich text (as if I ever stop talking about rich text), and specifically Rich Text Tips, Tricks and Techniques.  It is a condensed, updated and generalized version of a talk by that name I gave in London a few years ago, and at Lotusphere the year after that.  I'm looking forward to the talk, but also the chance to put a few names with faces, as I know some of the people coming only through the forums, even though they are right in my back yard.

I'll post the session and demo databases after the talk is over.  Stay tuned for a location.
Tue 1 May 2007, 05:47 PM
In March of 1999, IBM released the brand new Lotus Notes R5.  It included many features, but the one I want to mention is "nested table" support.  For the first time, tables could be put inside other tables, down to a depth of 10 nestings.  In addition, R5 included the first, albeit relatively limited, NotesRichText classes.  But there was no support for nested tables.  

But what got me thinking about this?  It so happens that Andre Guirard posted an article in his blog today entitled Form design: rich text field in a table cell, in which he says fairly early on:
So, just in case, here's the official line on putting a rich text field in a table cell: don't.
He has various reasons, but one of them is:
It also limits your ability to program tables in the rich text, because when you save a document that contains a table inside a rich text field that's inside a table, it gets treated as a nested table. The NotesRichText... classes don't deal with nested tables, so they can't even see this one. If the code that operates on the document is in a view agent or server agent, you wouldn't think that would matter, since these methods of accessing documents don't care about the form design. But it does matter in this case, because when you edit and save the document manually, the table is flagged as "nested" in the rich text data.
So, here it is 2007, eight years after the addition of nested tables in Lotus Notes/Domino, and there is no sign of support for nested table in the NotesRichText classes in ND7, and no sign it will be added in Notes 8.x releases, which won't even be released until later this year.

Doesn't it seem like eight years and counting is long enough?  Doesn't it seem like too long?  Shouldn't IBM be adding this functionality rather than suggesting workarounds to avoid the problem?  Andre mentions DXL, but that is pretty lame support for an eight year old feature.

Meanwhile, over here at Genii Software, we spent months in 1999 working on support for the many rich text features in R5, and in September 1999, released Midas 2.0, with an announcement the day before it was released...
At long last, Version 2.0 of the Midas Rich Text LSX will be released.  Version 2.0 offers full support for Notes R5, with R5 specific features such as dynamic tabbed tables, support for nested tables and new R5 properties, as well as importing of native GIF and JPEG images.  In addition, support has been added for manipulation of fields on forms and subforms, thus allowing dynamic forms stored in documents or forms design utilizing the power of the Midas Rich Text LSX.

Version 2.0 will have support for Notes/Domino releases R4.5x, R4.6x and R5.x.  A new sample will be available showing design form manipulation, and old samples will be updated to show such things as sorting nested tables.
Notice that not only did we support nested tables within six months of the R5 release, we even supported sorting those tables.

Of course, if this were the only feature like this... but what about layers, added in October 2002 in Notes/Domino 6, but still no rich text support after five years (not even via DXL) in Notes 8, but supported by Midas within three months in Version 3.00.
Wed 2 Jan 2008, 05:05 PM
Shortly after Lotusphere, there will be a general price increase for the Midas Rich Text LSX and Midas Rich Text C++ API.  The last time there was a general price increase for the Midas Rich Text LSX was when the United States was still trying to get over the image of then-President Bill Clinton and Monica Lewinski, and Lotus Notes users were still trying to get over the image of weird people all over the world holding up I Am posters.  Lotus R5 was the "new" version of Notes, and this blog hadn't been dreamed up yet.

Times change.  Prices change.  (Oil was not quite up to $25 a barrel back then)  Thankfully, ad campaigns change.  The cost for support gets higher.  The product is filled with more and more new features.

But you still have almost a month to miss out on the price increase.  Better yet, you can buy the Midas 4.0 licenses now and probably use them for the next two to three years without worrying about a major upgrade.  You can even upgrade your Version 3.x licenses if you like at the current price.  You can even get an official quote now if you can't get your company to spring for the upgrade that quickly.  But no complaints after Lotusphere about missing your chance.  You can't say I didn't warn you, because I just did.
Thu 13 May 2004, 11:20 PM
Well, it didn't exactly happen on purpose, but it wasn't entirely an accident either.  After introducing an HTML to Rich text conversion engine in 3.10, and improving it in 3.20 and 3.30, it is time to "fish or cut bait".  The conversion is pretty good, but pretty good usually isn't good enough for our customers, so we have started on an intense improvement scheme to bring the HTML to Rich Text conversion in Midas up to the quality of the Rich Text to HTML conversion, which is widely praised and widely used.  It happens that four different companies have had particular issues, and have started submitting issues through a simple database I set up that lets us quickly reproduce and fix problems.  The four don't know each other, and have no special mandate except for a shared interest in HTML imports, but I think of them as the "SWAT team".

So, to be fair and egalitarian (and maximize the chance of getting a real humdinger of a conversion engine quickly), I thought I'd ask if anybody else is interested in being part of the unofficial SWAT team.  Just drop me an e-mail if you would.
Thu 25 May 2006, 12:15 AM
A long time correspondent wrote asking me about Open Document Format (ODF) and the announcement that IBM will include an embedded ODF compatible OpenOffice editor instance inside Lotus Notes once Hannover comes along.  See this article for details.  This friend wrote:
I always think of you as the Rich Text expert - especially within Lotus Domino.
...
Will Notes / ODF have any effect on Notes Rich Text ?
An interesting question.  From what I can tell, the answer is "No!", because it seems very likely that IBM is simply going to extend their current ability to use MS Word as an editor in order to utilize the OpenOffice applications as editors.  This will not alter the use of rich text at all, but it does envisage a much stronger role for OpenOffice and ODF format.  One question that will likely arise is, how do you convert back and forth between ODF and rich text, if ODF is an important format?  At least, that is the question that intrigues me.

Tags:

Fri 9 Jul 2004, 09:10 AM
We have intentionally kept the C++ version of our Midas Rich Text LSX low profile with no announcements or web page presence, but as more ISVs and companies are starting to use it, it is probably time to start making its presence better known.  So far, I have been referring to the product as the "Midas Rich Text API", and you may have even seen that recently on pages such as the Midas agreement page.  But before we put it everywhere, I thought I should run this by our loyal blog readers.

Does the name "Midas Rich Text API" work, or should it be both shorter and more explicit, such as "Midas C++ API"?  Is there something else that could better communicate that we have a product with all the capability of the Midas Rich Text LSX, but which can be used in stand-alone programs (no Notes client), server add-ins, menu add-ins, extension managers, etc.  This is powerful stuff, but only if people recognize it.  While we are mostly aiming at ISVs, and even called this "Midas for ISVs" for a bit, it is also popular with some large companies who do a lot of their own C/C++ work and want to integrate this functionality without needing an agent or client.

So, what do you think?
Fri 19 Sep 2008, 09:12 AM
We released Version 4.10 of both the Midas Rich Text LSX and Midas Rich Text C++ API on our website today.  A more complete announcement will be made, probably Monday, but one notable point is that while Version 4.10 officially supports R5 to ND8.x, it also has been updated and tested on Notes/Domino 8.5.x!  Official support cannot be given until Notes/Domino 8.5.x is gold, since IBM could theoretically change something at the last minute, but you should be fairly safe using Midas 4.10 with Notes/Domino 8.5.x.

Tags:

Wed 20 Apr 2011, 11:30 AM
There are ten days left in April, so I thought I'd make a special offer to celebrate the coming of Spring (I hope), Earth Day, AntiPasto Day (well, Oct 25 is World Pasta Day, so six months later must be...)

Anyway, here's the offer. Buy any of our server licenses (CoexLinks, CoexEdit, Midas Rich Text LSX, Midas C++ API), and get a second of equal or lower value for free.  For example:

  • Buy CoexLinks to support your mail coexistence, and get a second CoexLinks server license free or a CoexEdit server license to support other app coexistence needs.
  • Buy CoexEdit for two servers for the price of one, or get a Midas LSX server license to handle other more specific needs.
  • Buy three Midas Rich Text LSX server licenses and get three Midas C++ API server licenses free at the same time.

Both paid and free license come with a year of support, maintenance and upgrades.  After that, you can choose to get maintenance for one or both based on the original cost (20% of the list price when the license was purchased).  The only restrictions are that you have to mention this offer and pay by credit card, wire transfer or check by the end of April.  Multiple server licenses are allowed, with one free for each one purchased and paid for. Client licenses are not included in this deal.

Now is your chance to get off the fence and buy those licenses you need. But you only have ten days. Hurry and place your order.

Quick recap on what the products do, for those who are not familiar

CoexLinks - Email coexistence for mail routed between IBM Lotus Notes/Domino apps/users and other email platforms. Gives you greater control over doclinks and other fidelity issues.

CoexEdit - Notes/Web editing coexistence allowing you to edit from Notes client and web client, inside or outside of XPages, with excellent fidelity. Social business connections coming soon, and would be available for free as part of upgrade plan/

Midas Rich Text LSX - Multi-purpose rich text LotusScript extension allowing you to do almost anything you want with Notes rich text, and also export to and import from HTML, XHTML, MIME and more with high levels of fidelity and control.

Midas Rich Text C++ API - Same engine as Midas Rich Text LSX, except exposed to C++, C# or any other compiled language that accepts C++ shared libraries.

Tags:

Thu 28 Apr 2011, 06:22 PM
People are still slipping in under the wire in our special 2 for 1 deal for Genii server licenses (see full offer details), but there isn't much time left.  With major releases due out soon for CoexEdit, CoexLinks and the Midas Rich Text products, there couldn't be a better time... but only if you act now.

(Don't you just love it when I sound like a used car salesman? I may have missed my calling.)

Server licenses available for the offer:

CoexLinks - Email coexistence for mail routed between IBM Lotus Notes/Domino apps/users and other email platforms. Gives you greater control over doclinks and other fidelity issues.

CoexEdit - Notes/Web editing coexistence allowing you to edit from Notes client and web client, inside or outside of XPages, with excellent fidelity. Social business connections coming soon, and would be available for free as part of upgrade plan/

Midas Rich Text LSX - Multi-purpose rich text LotusScript extension allowing you to do almost anything you want with Notes rich text, and also export to and import from HTML, XHTML, MIME and more with high levels of fidelity and control.

Midas Rich Text C++ API - Same engine as Midas Rich Text LSX, except exposed to C++, C# or any other compiled language that accepts C++ shared libraries.

Tags:

Thu 21 Jun 2007, 10:22 AM
Rest in peace: @Midas Formulas

It is always a hard thing for a product developer to discontinue a product, but the @Midas Formulas product has not ever lived up to the popularity of the other two Midas products.  While the Midas Rich Text LSX has been a fundamental part of Notes/Domino development for a decade, and the Midas Rich Text C++ API has become ever more important in both custom development and OEM solutions, the availability of rich text manipulation and querying through formula language has simply not caught on.  Rather than confuse matters and to better concentrate on the products that people do want, I must sadly put the @Midas Formulas product to rest.  Perhaps I'll shed a tear, but since nobody else well, it is better this way.
Mon 11 Oct 2004, 09:57 AM
One of the interesting ways people use our Midas Rich Text LSX is to manipulate, and often get rid of, hide-when formulas.  The reason why getting rid of them is so important is explained more fully in Rich Text 101 - Hide-when formulas.... I am working on a Hide-When sample database that will show both our Midas Rich Text LSX and @Midas Formulas setting and clearing hide-when flags and formulas on both documents and forms.
Wed 8 Sep 2004, 09:03 AM
As I have written before, there are a number of questions which come up in the forums over and over.  I have written about Hiding a rich text field, for example, and an extremely popular post on Writing better hide-when formulas.  This is a less frequently asked question, but one which shows how Midas can help if other solutions do not... (read on)
Fri 3 Mar 2006, 12:10 PM
Well, I don't know whether it is something that got in the air at Lotusphere or what, but everybody these days seems to be looking for the ability to export rich text or whole documents to Microsoft Word.  So, before a few hundred more people search the site, here are a few useful links, in no particular order:

Sample database page - This has a lot of samples for use with the Midas Rich Text LSX, but the one you want is called Export to MS Word.  But don't stop there.  Look around and see what other goodies are available if you will already have the tool.
Midas Rich Text LSX page - This is the main page for the Midas Rich Text LSX, just in case you wanted to take a look.
Evaluation request - If you want to actually try exporting to Word with Midas.
Order form - Damn the torpedoes!  Full steam ahead!  You just want to buy it right now, as you can't wait another day to start exporting to Word.
Exporting to MS Word - A Blog Perspective - A post I wrote a while back about this subject, with some nice visuals.

So there you have it.  Ready, willing and able to export!
Wed 11 May 2005, 11:23 PM
Genii Software is pleased to announce the release of CoexEdit 1.0, a new product from the makers of the Midas Rich Text LSX, created to enhance rich text editing coexistence between Notes and the web.


Shouldn't Notes icon play nicely with Internet Explorer icon Firefox icon Mozilla icon Netscape icon ?

CoexEdit lets people edit rich text from both a Notes client and a web browser without significant loss of formatting.  Images, attachments, tables and doclinks can all be added, deleted and modified cleanly from either your web editor or your Notes client.  You can even choose your own rich text web editor, using the one which best meets the needs of your organization.  Best of all, there are no agents or scripts or coding required for CoexEdit itself, and we can help you figure out how to easily integrate your chosen rich text web editor with Lotus Notes.

Read the 
press release or visit the CoexEdit page for more information, or just request a free evaluation license and get started today.
Wed 9 Mar 2005, 02:07 PM
Well, nothing is set in stone, but it is looking likely that we will offer a Midas with CoexEdit bundle that combines the flexibility and power of the Midas Rich Text LSX with the new features and plug-in capability of CoexEdit.  You could get the translation between rich text and HTML, with all the special features that have been added to CoexEdit to support web based rich text editors, all from inside LotusScript in a Midas agent, as well as in the plug-in.  Good for maximum flexibility, and a lot cheaper than buying CoexEdit from scratch.  I'll have more on this soon.
Mon 25 Oct 2004, 04:46 PM
Version 3.40a of the Midas Rich Text LSX has been released, as have companion versions of the @Midas Formulas and Midas Rich Text C++ API.  There was no Version 3.40 for the LSX since the @Midas Formulas and Midas Rich Text C++ API were released as Version 3.40 last month, and our goal is to keep all three products at the same version level.  More information will be forthcoming, but all three are now available on our website for those with valid Version 3.x license files.
Mon 20 Sep 2004, 09:57 AM
You can read the press release and read all about how our new @Midas Formulas lets you do rich text manipulation from a smart icon, treat a table in rich text as if it were a view for @DbLookup and @DbColumn, and generate HTML from a single @DbCommand, but you can also get an evaluation license and try it yourself.  Imagine a formula language command to export a graphic from a rich text, something not supported in the core Notes product even though any browser can do it... (read on)
Mon 8 Sep 2003, 04:24 PM
Rich Text 101 logo
While the subject of MIME/HTML may not seem quite in keeping with this series on rich text topics, the truth is that rich text is a loose term understood generally to mean the rich content in a field or on a form.  Under this definition, MIME/HTML is critical, as an increasing number of "rich text" fields are actually MIME fields with HTML content.  The main reason for this is SMTP and Internet mail, which comes into Notes as MIME and is transformed into rich text for rendering in the Notes client.

First, a short explanation of what MIME is, and how it relates to HTML.  MIME stands for Multipurpose Internet Mail Extensions.  There are many good explanations of MIME on the web, such as this one.  The gist is that MIME was developed as a flexible way to send messages across the internet in a way that could be transmitted as "text" instead of "binary".  It was also developed as a way to store rich content in a multiple parts, so that a simple e-mail reader could read the plain text of the message, while a more advanced e-mail reader could read the HTML (or other) to get a more rich experience.

In the Notes client, which is more advanced, we are able to read MIME messages with HTML rich content.  Graphics are stored as additional MIME parts, but are put together by the Notes client when reading the message.  Attachments may also be stored as additional MIME parts.  One thing which is not widely recognized is that the MIME is converted to rich text for rendering, even if the rich text is displayed by Domino to a web browser as HTML.  This will be discussed later, as it points out one of the major limitations of MIME content in Notes/Domino.

As mail from the Internet is very common, it is also very common to receive MIME messages.  If you have received e-mail from the Internet, you can take a look at the MIME format by selecting an Internet mail message from the Inbox, but not opening it, and looking at the document properties.  The Body field will often be split into several parts, and each will indicate that it is a MIME part.  If the Body field shows as rich text, and you have not opened the document to look at the properties, and you have not modified the document, it is likely that your incoming mail is being converted to rich text on the server.  This is generally not good, and can lead to some badly formatted messages and often broken image references.  In general, the Format preference for incoming mail in the Domino Directory Person document should be set to "Keep in Sender's format." if you are reading mail with the Notes 5 or Notes 6 client.

Yawn!  

Sorry, that part was just getting a bit long winded.  Sorry about that.  Let's cut to the more interesting bits.  How can I use MIME in Notes? What is it good for?  What are the downsides?  How long until rich text is replaced entirely by MIME?

How can I use MIME in Notes?
There are two basic ways.  You can send rich text in e-mails in MIME format by ensuring that your e-mail preference for sending to the internet is set to either HTML Only or HTML and plain text, with the latter being a better choice.  Mail messages will be converted automatically, and graphics and formatting and such will be preserved on outbound messages.

The second way allows you to use MIME even internally.  When you create a rich text field, you have a checkbox (on the second tab of the Field properties) which lets you set the storage type to Store contents as HTML and MIME.   Checking this tells Notes that when the document is saved, the rich text field should be converted to and saved as MIME.  The "HTML and MIME" simply means MIME which has at least an HTML part.

What is it good for?
Well, that depends on whether you are thinking inside or outside the box.  It allows interaction with the Java applet to be somewhat more predictable, since that is the format that the Java applet recognizes.  It similarly is accessible to other application which want to access the field through MIME parts from the web.  As various connections to Notes content through DB2 and portals and such are strengthened, this format is likely to become more important.

Thinking further outside the box, it allows you to convert rich text to HTML without running the Domino web server or HTTP task.  This HTML can then be extracted using the NotesMIMEEntity class.

What are the downsides?
Unfortunately, they are rather large.  The conversion to HTML is not a clean one.  CSS is not used, so HTML font sizes are rather crude approximations of the original font sizes (e.g., 13pt, 14pt, 15pt, 16pt and 17pt all translate to 14pt after going through the save and re-opening).  A return is added to the rich text each time the conversion i made, so after saving several times, there is a large empty space before the rich text begins.  Tabbed tables become regular tables.  Table lines converted from small think lines to "Ridge" format.  All cell borders use the value in the upper left hand corner on the left side, so a fancy table such as this:

SalespersonRegionSales '03
Jorge GonzalesSouthwest$115,305
Xavier ThomasNortheast$420,485

may be rendered instead as:

Salesperson Region Sales '03
Jorge Gonzales Southwest $115,305
Xavier Thomas Northeast $420,485

Then conversion of sections are is worse, as the section itself simply disappears, although the contents remain.

Why do you say MIME is always converted to rich text to display, and IBM says otherwise?
For some reason, many inside IBM, including developers, believe that MIME format is now supported natively in the Notes client.  This is clearly not true, as there are often messages about the conversion which trigger on opening the message, and as I have confirmed using an extension manager testing utility.  In R5, the same conversion is done when the document is rendered to the web, but it is possible (yet to be tested) that it has been fixed in ND6.  I'll update this document when I have further information.

How long until rich text is replaced entirely by MIME?
It isn't likely to happen anytime soon, thank goodness.  The higher priority at IBM right now is storing data in DB2, but it is easier to leave the basic storage as rich text and store that as a DB2 blob than to change the basic rich text format for now.  If handling of MIME gets more powerful, this might happen, but I personally think a conversion to XML is more likely, and also more desirable.

Tags:

Thu 17 Mar 2005, 08:57 PM
I was asked this question today, and it is an interesting one.  From a product positioning standpoint, CoexEdit is a coexistence product.  It will be sold more like CoexLinks, will probably be handled by resellers in a way that Midas is not, and it is much more of a solution than a tool, which makes it more like CoexLinks than like any of our Midas Rich Text products.

On the other hand, it handles HTML to rich text and rich text to HTML using the Midas Rich Text engine, and is suited to certain tasks that Midas has been suited for.  In addition, while it is a coexistence product, the coexistence is between Notes and the web, or essentially Domino, while CoexLinks is about coexistence between Notes/Domino and non-Notes/Domino.

In short, I'm not sure yet.  What do you think?

(Of course, we could just wait and see whether Crystal Coex or Mike Midas writes about it)
Thu 29 Sep 2005, 09:55 AM
The addition of DXL processing has been a great bonus for customers who need rich text manipulation, as there is now a native way to do many of the things which could previously only be done with the C API or with our Midas Rich Text LSX.  So, the question comes up sometimes, why bother with Midas for rich text manipulation? Sure, it does other things DXL can't touch, such as HTML generation, MIME e-mails, rich text comparison, contextual link matching and so on, but what about simple stuff like adding a table?  To address that, take a look at this question from the Notes 6 & 7 Gold forum: 
I am writing codes to generate a NotesDocument with a tailor-made table(diff cell color, merged cell) by DXL.

I found out using DXL to generating document with table is much slower than by using LS-RT table, especially when the table size is large.(9 sec vs 2 sec for 52row*16col table) However, DXL offers more flexible controls on complex table-making.

Is there any way to optimize the DXL codes?Excuse me, but 9 seconds?  To generate a single document with a table?

I responded with this, being as polite as I could be:
If you really want performance and control over rich text at the same time, DXL isn't going to work well for you, and neither will the native LS rich text classes.  Both are just way too slow.  If you need performance, you either need an API solution, which will be pretty complex to write, or a third party product such as our Midas Rich Text LSX, which combines high levels of flexibility with extremely high performance.

As an example, I tried creating a table such as you describe, with different cell colors and merged cells and 52 roiws and 16 columns.  I tried once creating the whole table at one call (without the merged cells), and another where every row was created separately to allow merging and changing various cell attributes.  In both cases, creating a single table was too fast to measure, so I created 100 separate documents with a table such as this in each. 

Midas Rich Text LSX times

Table created in one call
Table created a row at a time
100 documents
4 seconds
15 seconds

As you can see, well under a second is better than either the 9 seconds DXL takes or the 2 seconds the LS RT classes take.  Of course, you may not need that level of performance, but if you are creating 25,000 documents and doing other processing (as a recent customer described), you might want it to complete in less than the 62.5 hours that the DXL processing would require, or even the almost 14 hours the rich text classes would take, even if they could handle this.  The customer's job is slightly different, but does involve appending large tables a row at a time, and they report that the task runs in a bit less than 1 hour, even with all the additional processing.

So, while DXL is great, don't start using it unless you have lots of patience and like going on coffee breaks.  Nine seconds!?!?
Mon 1 Aug 2005, 08:06 PM
We are preparing final releases for CoexEdit, the Midas Rich Text LSX, the Midas Rich Text C++ API and @Midas Formulas, all at the same time.  There has been a particular focus on the HTML generation engine and HTML import engine, as both are used in CoexEdit, and the former is being used extensively by ISV's who use the Midas Rich Text C++ API, but there is definitely something for everyone in this release.  Watch here in the next couple of days for details, first about CoexEdit 1.1, then about Midas 3.50 in all its flavors.
Wed 15 Oct 2003, 01:41 PM
I have hinted around enough at what is in our new Midas Rich Text LSX Version 3.20.  Here is a short list of highlights, which I'll update if I remember anything important I have forgotten right now:

Conversion of Notes Bitmaps to GIF files
This is bigger than it may seem, as it finally allows users to Export to Word (via HTML), generate HTML, generate MIME and export graphics without having to worry whether the format is the proprietary Notes bitmap format.  You can send MIME/HTML e-mails from Send It!, convert graphics to image resources, export graphics for off-line storage and more, without needing to use our Grab It! utility or make the rich text accessible to HTTP.  This functionality is used as part of HTML and MIME generation, but is also available separately with a ConvertBitmaps method.  Since the GIF format features a better compression than the Notes bitmap format, you can also save space in your database by converting pasted in images to GIF (see my blog entry showing the code).  This feature requires Notes/Domino 6.0.2 or higher, unlike all other features documented here.

Advanced Tabbed Table and Section handling in HTML generation
It is now possible to generate functional tabbed tables and collapsible sections using HTML generation.  These use JavaScript, CSS and DIV parts to simulate the functionality of these rich text constructs, and are highly customizable to meet your specific needs.

Inclusion of Graphics as MIME parts in HTML mail
While it has been possible before to convert graphics in a rich text field to MIME parts when rich text was automatically converted to HTML, it is now possible to write HTML but point at graphics which will then be included as MIME parts.  This allows for a very flexible combination of HTML, in-line graphics and remove (URL specified) graphics.

Append/Insert HTML into rich text with automatic conversion
It is now possible to take either a file with HTML or an in-line string of HTML and insert the appropriate rich text into a rich text field, thus 

Add Embedded Editor and Embedded View into rich text
Enhances current ability to construct rich text in both design elements and ordinary rich text fields by allowing insertion of embedded editors and embedded views.  Makes it easy to construct a highly elaborate, customized document for an individual on the fly with a customized view, for example, and also makes it possible to product complex dynamic forms programmatically.

Create Design elements from scratch
While it has been possible to clone design elements in previous versions, it is now possible to create them from scratch, using the new CreateForm, CreateImageResource, CreatePage, CreateSharedField, and CreateSubform methods.  This makes creating dynamic databases easier.

Many enhancements made to HTML generation engine
Our ongoing efforts to create better HTML have been given a big boost by many small tweaks which add up to a better end result with more control.  Fixes have also been made to bugs identified by users or by testing.

Many enhancements made to HTML import engine
The HTML import engine is not quite as robust as the export engine, but it is improving rapidly.  Better and better support for CSS, anchors, and other constructs allow users to import/use highly formatted HTML newsletters and pages.  More is in the works in this ongoing effort, which will also bear fruit soon with the COEX! Web Editor product.

Added new tabbed table properties to support ND6 tabbed tables
It is now possible to create tabbed tables with tabs on the left, right or bottom, as well as the top, shift the indentation of the first tab, make all tabs the same size, or even change the tab font.  This allows better control over such tables, and the ability to create reports or dynamic forms with more flexibility.

URL links are now read/write
To match the previous ease with which a doclink could be modified, it is now possible to modify a URL link "in place", without having to append a new hotspot and remove the old hotspot, or use a complex ReplaceText method call.

Created functionality to fix URL hotspots which included parameters in URL    
Many early Notes (R4/R5) applications added the target and some HTML parameters to the URL of a URL hotspot.  Notes/Domino 6 has trouble with these URL hotspots, because it automatically encodes the entire URL string. Using the read/write URL links and enhanced SetTargetProperties logic, these can now be easily fixed to what they "should" be, with the target and HTML properties moved from the URL to where they belong.

Batch processing to run a script on all rich text fields in a document
Rather than have a script which loops through rich text items and then connects to each, a more efficient backend process is available with the BatchBackend method.  This was there, but not really functional, in 3.10.   For a very simple sample, (see the same blog entry again).
Thu 18 Sep 2003, 10:02 AM
As a follow up to yesterday's post on @DbColumn/@DbLookup on rich text tables, one of the questions I get about our beta @Midas Formulas is "Where would you use it?"  While there are lots of answers, one that might not be obvious is "From Java".

Because Java offers the ability to evaluate formulas, it can call an @Midas formula and either get the results or simply make the change.  No configuration or special linking or translation layers of JNI.  If the @Midas software and license are on your server or client, Java can use them... (read on to see how)
Mon 22 Sep 2003, 01:58 AM
Rich Text 101 logo
While many other things can be found in a rich text field besides text, such as tablesdoclinksimages and more, a great deal of rich text is just that, text.  In my previous article on paragraphs, I mentioned that even in the properties box listed as "Text", most of the properties are actually paragraph properties.  In fact, only the very first tab is actually related to text properties... (read on for more)

Tags:

Mon 22 Aug 2005, 03:12 PM
The hardest thing about selling a product is often communicating its purpose to people before they know they need that purpose.  If you do it successfully, they flock to buy the product when the need for that purpose arises.  If you don't do it as successfully, you are lucky to have them happen upon your site by accident, which is a much more iffy proposition.  For example, yesterday, I received an e-mail from a potential customer:
We're looking for a way to compare 2 fields (plain or rich text) and somehow highlight the differences (by changing the font, fontstyle, using a highlighter, etc.), as opposed to just saying they're not the same.  I saw on your website that you have something called "contextual hypermatching" and wondered if that might do it, or if the Midas Rich Text LSX provided that type of functionality in some other way.  Do you have any ideas?
The good news is, this customer had the basic assumption that our product might be able to solve a problem with rich text - a darn good assumption, if I may say so myself.  The bad news is, the customer had no idea that we specifically addressed that particular functionality.  We have obviously NOT communicated this feature as well as we have communicated HTML generation or MIME e-mail generation or dynamic table generation.  People come to us for those purposes, but tend to stumble on us for rich text comparison.

I don't have any great answer as to how to change this (or I would have implemented it long ago, but I will point to a couple of blog entries that clearly describe this functionality, in case you are a reader who is scratching your head in puzzlement right now:

The rich text has changed, but how? - best place to see exactly how this works from the outside, from how it looks
Top 10 Ways to use Midas - #10 - good place to see what the code looks like

In addition, these are links to the on-line demo and the downloadable sample for Review It!, which demonstrates the feature:

Review It! on-line - This is an on-line demo which gives a simplified version of a rich text comparison
Review It! sample db - This is a downloadable sample with which you can try the feature out for yourself
Thu 15 Jul 2004, 11:11 AM
There was a question in the Gold forums about sorting lines of text in rich text.  Somebody wanted to sort in rich text!  The nerve!  Why would anybody want to sort?  Next thing you know, they'll want to print.  Don't they know it is 2004... (read on)
Sun 13 Jul 2003, 11:04 PM
I have been working a lot with HTML recently, and not just because we have a new website design coming soon.  I have been working on our new HTML -> rich text -> HTML round-tripping logic in preparation for a new product which I have mentioned before.  I am reminded of how different HTML is from rich text, even though both may look the same on the outside, and much of the difference is not in the specs, which both show strict interpretations of how things should be, but in the implementations, which determine how things really are...
Thu 31 Jul 2014, 11:56 AM
One of the challenging aspects of describing issues with Notes/Domino rich text rendering is that there seem to be so many engines. Even on IBM Domino 9.0.1, there are multiple rendering engines that render rich text differently (different ones fail in different ways). See below an example of Notes rich text rendered by three of the different engines, or at least they appear to be different engines given the results. (Traveler may have yet another engine, but these are all built into the core Domino server.) I used screen shots for the Notes content and the iNotes rendering, as I couldn't find any good way to frame them, but the Domino web rendering is happening live and the Domino SMTP rendering is pass through HTML which I captured from an email rendered by the server. (I thought about adding the Midas LSX rendering, but wanted to focus on core Domino.)
 

Tags:

Wed 10 Apr 2013, 02:09 PM
Since Devin Olson happened to mention regular expressions yesterday in a post, I thought I'd make a very short video demo of using the Midas Rich Text LSX to find and replace strings inside rich text (in tables, text or anywhere) using regular expressions. This capability has been available since Midas 4.x was released a few years ago, and allows batch processing with all of the speed and reliability you have come to expect of the Midas Rich Text LSX. You can download the Credit Card Redaction with REGEX  sample db from our Midas LSX Samples page. If you want to give it a try and don't yet have a Midas license, request an evaluation license and get started in a few minutes.
 
 
 
Wed 2 Dec 2009, 09:24 AM
One by one, I am releasing the 64-bit Windows versions of out products.  The Midas Rich Text LSX was first, with a 64-bit Domino version on the web now.  This is Version 4.30 of the Midas Rich Text LSX, for which I released the 32-bit version a couple of weeks ago.  By the end of the day, I should have 64-bit Domino versions of all the products out there, but I'll post here when it happens.

Tags:

Mon 12 Apr 2004, 09:41 AM
upside inside out
she's living la Vida loca
she'll push and pull you down
she's living la Vida loca
her lips are devil red
and her skins the color mocha
she will wear you out
she's living la Vida loca
living la vida loca
I've been working for a while, on and off, on a Rich Text 101 article on layers, and somehow Ricky Martin's "Livin' la vida loca" just keeps running through my head.  Part of the problem is that layers on the web and layers in the Notes client are such different animals, despite the fact that the Notes client layers were modelled after the web layers.  To make it all even more confusing, we support automatic creation of layers in our Midas Rich Text LSX, but I don't ever assume people have that for the Rich Text 101 articles, and I can't figure out how you would get anywhere near as much use out of layers without an automatic way to create and modify them.  Sigh!  

I may have to write the RT101 article in an incomplete form and ask for input from you all.  Would that seem to violate the spirit of the series?  Should I wait untill it all makes sense (when I may be busy off skating with Satan)?
Wed 6 Apr 2005, 04:47 PM
A question came up in the support forum today, and I find myself answering this sort of question quite often, so I might as well post it here for a more general audience.  The specific question was:
is there a way to add a target tag for attachment links when generating html? in other words, if we are generating html from rich text, and the resulting page will be in a frameset, and we want PDF files attached to documents to appear in their own separate window outside of the frameset, is there a way to do that?

we thought about parsing the resultant text, but we were hoping that there was a way to make the call within the tool.
Putting aside the specific question, the general goal is to make some modifications to the HTML generated.  Now, Midas offers a great many of these options, but often not the specific ones people request, so here is a more general answer.  Change the rich text before generating the HTML.  You don't even have to save the changes, because the HTML generation will use the modified rich text... (read on)
Mon 13 Dec 2004, 05:08 PM
I am working on some samples showing rich text to MIME conversion as well as search and replace technology, and would like some samples of various languages such as those above to demonstrate how our Midas Rich Text products will handle such languages.  The best would be a couple of paragraphs at least, along with a word or phrase to search for and one to replace it with, and hopefully at least a very rough English translation.

If you have any samples, or know where I can get them, please let me know.
Wed 17 Sep 2003, 11:20 PM
I thought I'd focus on a few of the things we are trying out with our new @Midas Formulas, which is beta.  If you would like to sign up for the beta test, we are planning on sending out a new beta release shortly.  If you are already signed up, even if you haven't received a beta yet, you will be contacted automatically.

@DbColumn/@DbLookup on rich text tables
One of the really interesting features is the ability to treat rich text tables as data, a mantra some of you who have seen me speak at Lotusphere may have heard before.  Why shouldn't you be able to retrieve data from tables in rich text fields?  Why shouldn't you use commands most Notes developers are very familiar with for retrieving that data?

Well, with @Midas Formulas, you can do this... (read on to see the examples)
Fri 21 Nov 2003, 10:51 AM
Well, for the fourth year in a row, I will be speaking at Lotusphere, but for the first time, it won't be any variation of my rich text talk.  This year I'm doing a talk on Advanced Lotus Notes/Web Coexistence, which is all about how to exploit some lesser known, or even well known, the features in R5, ND6 and ND6.5 to design once for both platforms, and when not to bother.  The official abstract is:

Discover useful tricks and techniques for handling forms, views and databases that must be used in both the Notes client and a web browser. Learn ways to better handle rich text fields, @DbLookups, JavaScript and UI methods to allow an optimal experience for both Notes users and web users. Learn when to create two sets of design elements and when to use just one. Covers native and third party solutions for managing Notes/Web coexistence.


I hope to see some of you there!  For those of you who are going to miss my demo filled rich text talk, I still plan to include some fun and fireworks.  Come and join the fun.
Tue 7 Mar 2006, 06:28 PM
It struck me today that I spent a number of years in my professional life trying to make a difference.  Not so much a difference as in saving the world, but a difference as in writing code that would stand out, that would change, that would look appealing, or at the very least would allow others to make things stand out, change, and look appealing.  Even my first "break out" product, the Midas Rich Text LSX, was originally conceived as a way to change rich text in wild and wonderful ways.  I hope I can safely say that it has done that.

But evolving tactics has left me with a funny set of goals recently, somehow consistent with my own aging (OK, I'm only 43, but I'm certainly not 25 anymore).  Now, the lion's share of my effort is in making things not change.  Whether through products, including Midas, or through help I give people, I find a lot of what I talk about is how to make rich text still look the same in HTML, or functionality to still work the same on the Web as it did in Notes, or to make MIME look and work the same both coming and going, or to make doclinks keep working the same way they did before after getting sent to a different mail system.  I guess it is part and parcel of the coexistence kick I am on lately, but it seems ironic when I can cheer because a particularly gnarly bit of rich text can be converted to MIME and converted back and still look the same.  It just shouldn't be so darn pleasing to have something look just the way it did before.

And not only is it my passion and day to day job, other people are willing to pay for it as well.  Go figure!
Fri 1 Aug 2003, 11:15 AM
Since I started my articles on Rich Text 101, I have gotten requests from customers to write a matching series of articles on Midas Rich Text LSX subjects.  These may not have the same general appeal, but may be interesting to customers and those considering becoming customers.  I'll put links to both sets of tutorials on our weblog.

For those who have not used our Midas Rich Text LSX much, or have used it primarily from samples such as the Send It! sample, this topic may jelp explain some of the odd syntax and code samples.  While Midas was written to allow access to rich text constructs which were exceedingly hard to modify via LotusScript (or any other programming language), the strength of the product is not mostly the access it allows, but the engine which makes such access so simple...
Thu 17 Dec 2020, 11:10 AM
GET request inside POSTMAN
 
Back in 2013, I created a ten part series of blog posts and videos called Out of Notes showing how the Curb Appeal (real estate listings) database with its structured data, computed images, and so forth could be taken from Notes to various formats. Most of those posts are still valid, (though the few with EPUB turned out to be less compelling to many customers). You can still use the Midas LSX to extract data that way, but working with a new Exciton Boost customer made me think about how many challenges they face with a REST API are similar to those I posed with this database. (See bottom of this post for that first video introducing that database and its challenges.)
 
Specific challenges for this Exciton Boost customer include the following (JSON return values unless otherwise indicated):
 
1) (db) GET a list of views configured to be discoverable by the Exciton Configuration database.
2) (view) GET the contents of a specific view from the list using HATEOAS principle. Returned object includes document metadata and column values.
3) (view) GET a filtered set of documents using a primary key. Returned object includes document metadata and column values.
4) (doc) GET all fields from one document.  Returned object includes document metadata and all items, or all allowed items if Exciton Configuration restricts which are accessible. Rich text fields rendered to HTML.
5) (doc) GET subset of items from a document, including mapping of item names and suppression of metadata. Rich text fields rendered to HTML.
6) (view) GET a filtered set of documents using a primary key. Returned object includes subset of items from a document, including mapping of item names and suppression of metadata. Rich text fields rendered to HTML.
7) (rtfield) GET single rich text fields rendered to HTML.
8) (image) GET single image from rich text field as binary
9) (image) GET single image from rich text field as data URI
 
There are lots more things we could do, but these show a number of features of the Exciton Boost REST API. I'll put together a video showing these steps using POSTMAN, then a second video showing how we can take advantage of these in JavaScript. But first, take a quick look at the database from that original 2013 challenge video, and imagine the databases in your domain which include various features like these.
 
Note: Accurate closed captions have been provided, and if English is not your first language, you might want to turn on the auto-translate.
 
  

Tags:

Wed 23 Mar 2005, 02:52 PM
Another one of the games I like to play when I have a moment to spare, or a project I want to avoid, is called "Make it crash".  The idea is to take some Midas or CoexEdit or CoexLinks functionality and find a way to make it crash.  This is both fun, and leads to more stability in the product since I then have to fix the problem.  I have various rules for myself, but the main one is that the crash has to be "my fault".  In other words, it is trivial to get Notes to crash due to its own faults, but since I don't have the source code handy, I can't fix those problems.  Therefore, it has to be in the Midas code.  

Today's game was sparked by a letter from a client who says that our rich text comparison was crashing.  I found the bug, which had to do with comparing nested tables, and fixed it, but then I got into the game.  To really stress the comparison engine, I used the Partner Forum database, which I like to use as a resource with a bunch of rich text fields, and simply set up a loop which compares the rich text field in each with the rich text field in the next document... (read on)
Sat 16 Oct 2004, 10:17 AM

Sometimes you need to unfocus... (read on)
Tue 20 May 2003, 09:48 AM
It was hard not to laugh when I read this post.  While I don't have a strong opinion about Office 11, I do find laughable the idea that making unstructured data accessible and available is a revolutionary concept created by Microsoft.  Lotus introduced Notes over a decade ago to allow better control and use of unstructured data, and our Midas Rich Text LSX was introduced six years ago to give even better access to the unstructured data within Notes (rich text), and it just seems so like Microsoft to invent an idea once there are 90 million + users of the idea.
Tue 19 Mar 2013, 12:47 PM
As I mentioned, I am trying out a new style of very quick demo so that you can get a feel for a feature without spending a lot of time. Like most of these, the feature is available as a downloadable sample, but this shows how it works in two minutes so you can decide whether it is worth pursuing. If this is interesting to you, take a look at our Midas Rich Text LSX page and request an evaluation license.

Fri 25 May 2012, 10:33 AM
Regarding yesterday's post, the attachment icon logic in the soon-to-be-released CoexEdit 3.0 works equally well in the browser or the traditional Notes client rich text interface. When opened in rich text, the attachments return to traditional attachments with their standard icons. The following three shots are the same document, created originally in CKEditor. It is unaltered, but could have been created in any of the three places. Click on any of the images to see them full size.

In the Notes client using XPages...

Inline JPEG image


In the web browser, using XPages...

Inline JPEG image


In the Notes client, using standard rich text...

Inline JPEG image
Wed 4 May 2005, 05:27 PM
On his blog, Ed Brill has posted a post titled "If I could add ONE feature to Lotus Notes 7.x, it would be...", which has evoked lots of interesting comments.  I am certainly not going to hijack Ed's blog, but I have to speak from the heart here.  Some of us are waaaaay too impatient for that game.  

Back in Notes R3, I really wanted Lotus to build more power into their formula language, but they didn't, so I wrote the @YourCommand Toolkit.  In R4, I really hoped that Lotus would build in programmatic rich text support, but they didn't, so I created our Midas Rich Text LSX.  In R5, I really wished for the ability to create HTML from Notes rich text in LotusScript, but IBM first added it in a beta and then removed it, so I added that feature to Midas.  In Notes 6, my most enduring plea has been for seamless editing between Notes and the web browsers, but IBM has fallen down on the job, so I created CoexEdit.

Go ahead, make your wishes.  Just think about who you should really be asking.  After all, IBM added more power to formula language... in Notes 6.  They built in a bit of programmatic rich text support in R5, a bit more in ND6, and might have more in ND7.5.  They will probably get the seamless Notes/web editing right  by ND8.  So, ask Ed, but be prepared to wait.

Update: I should point out that I am not just suggesting people come to Genii Software for answers.  I am saying, stop waiting for IBM and take a look at third party solutions that may do the job better, faster, earlier.  Products such as ProcessIt! (instead of waiting for IBM to have a really viable workflow product) and SpamJam (instead of waiting for IBM to add in really effective, personalized spam blocking) and NCT Search (instead of waiting for IBM to build a really powerful, flexible multi-database search engine), etc.
Thu 7 Oct 2004, 01:28 AM
Using @DbCommand to query and manipulate simple rich text

I am updating a short series of posts I started last February showing how to think of @Midas Formulas as taking what you already know and extending it.  In the past couple of days, I have posted about Using @DbColumn to access Rich Text Tables, followed by Using @DbLookup to access Rich Text Tables.  Those posts should be read before this article, which builds on the lessons learned there... (read on)
Fri 10 Jul 2009, 11:59 AM
In yet another demonstration of how collaboration via email is broken, I decided to give IBM the benefit of the doubt on all counts.  This is a single company using rich text routing (where possible), with the latest released versions, Lotus Notes 8.5 and Lotus iNotes 8.5, using the latest release mail template.  In this example, I used the same SpamGeek log message created by Daniel Nashed as I did in my earlier post going from Notes to Outlook to Gmail to Notes.

In this example, Person A sends a rich text message to Person B, which is part of his own company, through normal Notes email.  It arrives in rich text format, as you would expect.  Person B wants to forward the rich text email to Person C, also in the same company.  If he had done so using a Notes client, the email would have arrived exactly as it was sent.  But Person B is working offsite today, and logs into his email using Lotus iNotes, running with the appropriate  template on the Domino 8.5 mail server he uses.  He simply forwards the email, using the regular Notes name (not an internet address) for Person C.  Later, Person C opens the email in her Lotus Notes 8.5 client.

So, Lotus Notes 8.5 to Lotus iNotes 8.5 to Lotus Notes 8.5, all within the same company using normal routing without SMTP.  Let's see what happens.



Original SpamGeek log file sent from Lotus Notes 8.5 by Person A


Original email in Notes 8.5 client


(read on) to see how one company, with one email system, can still result in one big mess.

Tags:

Tue 3 Jul 2007, 02:09 PM
I last asked four years ago, and while the responses here were generally in favor of adding a Midas for Java, the customer reaction was pretty muted, so it didn't happen.  As we work towards Midas 4.0 and as IBM moves towards an Eclipse environment, it is time to ask again, how many would like a Midas Rich Text for Java?  I have done some of the legwork, so it would be perfectly possible, but is it worth the effort?  And if I do add such a product, should it be a separate product or an add-in to the Midas Rich Text LSX so that customers can use both for the price of one?  Any thoughts?
Thu 9 Dec 2004, 04:40 PM
There seems to be no shortage of rich text editors available for the web.  Many are based on the Microsoft DHTML editor, while others are Java based or require a plug in for the web client.  I even started a list of them last year, to which I need to add one I heard about today called Fckeditor, believe it or not.

... (read on)
Tue 11 Jul 2006, 11:38 PM
To follow up on my earlier post, here is yet another interesting difference between Open Document Format (ODF) and Notes rich text

Differences in Drop Shadow (and related items) for Tables
In both ODF and Notes rich text, you can specify a shadow for a table.  They even look pretty similar, but you don't have to go much further to see differences... (read on)

Tags:

Thu 18 Mar 2004, 05:16 PM
It is disconcerting that I can't just refer to our Midas Rich Text LSX as "Midas", because now it might be @Midas Formulas instead.  Oh well, times change.

The challenge posed is this.  A previous developer at this company had written an application that used doclinks and titles, but kept them in separate field, one a rich text field and one a text list.  They want to get rid of that rather silly constraint and put the titles in with the titles, more like a newsletter.  The one gotcha is that some of the doclinks are missing, and have some text such as NA (not available) instead of the doclinks.  They just want to skip those lines, including both the title and the "NA".
Inline JPEG image
This illustrates what they have and what they want.  The question was, how would Midas (darn, there I go again - Midas Rich Text LSX) handle this?

Here is the code I came up with.  Not the most elegant in the world, but it shows a real life solution to a real life problem, for those of you who like that sort of thing.

Inline JPEG image
Mon 10 Jan 2005, 02:28 PM
A couple of people have asked about the blurb in the Lotusphere 2005 Sessions db, as in this session page:



They wanted to know what exactly CoexEdit is... (read on)
Sun 25 Jan 2004, 04:34 PM


You know the scene.  It's midnight, and you're standing around the Swan fountain in the Swan Hotel at Lotusphere, explaining to a friend (Paul Ryan of Process Stream Technologies, in this case) why cursors in rich text make less sense then chunks.

What?  That's never happened to you? (read on)
Tue 5 Apr 2005, 03:48 PM
Of course it can (what did you think I would say?).  Since CoexEdit uses both the Midas HTML rendering and Midas HTML consuming engines, each has been substantially improved in the process of getting CoexEdit working.  While you can't use Midas to do everything CoexEdit can do, you can take advantage of all the improvements to both HTML generation (RT to HTML)  and HTML consumption (HTML to RT), or you will be able to very soon when we release Midas 3.50.  Many of the major improvements are to the HTML consumption side, but some of the improvements, and quite a few of the bug fixes, are on the HTML generation side as well.

So if you are a Midas Rich Text LSX@Midas Formulas or Midas Rich Text C++ API customer, don't feel forgotten by the emphasis on CoexEdit recently.  It will help you as well.  (Not to mention, there are dozens of fixes and enhancements in the Midas products that have nothing to do with HTML, including some long over due cleanup of the rich text comparison engine).
Sun 20 Jul 2003, 11:10 PM
Rich Text 101 logo
Like so many other rich text structures, images have become more complex and powerful in recent releases.  Up until R4, all images fell into two categories...

Tags:

Tue 17 Jan 2006, 08:41 AM
Here are links to the first six of the customer inspired list of ways to Make Rich Text Your Business:
MRTYB #10 - Rich text comparisons with red-lining
MRTYB #9 - Manage doclinks, URL links and link hotspots
MRTYB #8 -  Build dynamic forms
MRTYB #7 - Work with images in rich text and in image resources
MRTYB #6 - Construct complex and elegant reports
MRTYB #5 - Build dynamic interfaces with layers

Layers are a bit exotic for a lot of people, so let's get down to a more common need, Search and Replace.  But of course, given that this is a Midas product, it is a Search and Replace far beyond any you may have seen. For #4...


#4) Search and Replace on steroids

Description
One of the most common editing activities is searching and replacing text, but searching and replacing rich text can be a bit more tricky.  Should everything you can see be searched and replaced, including the labels on buttons, the titles in sections, and the caption on graphics, or should only the "pure text" be searched?  What about the rich text you cannot see, such as action hotspots, URLs in URL links, hide formulas and that sort of thing?  In the Midas Rich Text LSX, we think you need the power to search and replace in all of these contexts, but the flexibility and control to pick and choose.  If you want to replace a fieldname used in hide-formulas, but nowhere else, you can do it.  If you want to change a server name hardcoded into URL links, you can do that.

In addition, sometimes you know the exact search string and the exact replacement string, but sometimes you only know a rough pattern.  For those times, the Midas Rich Text LSX will match simple wildcard patterns in your text and replace those with a specified string.

And beyond that, sometimes you don't know what the replacement string should be at all, but want a process to determine the string based on various factors, such as what the actual string found was in a wildcard pattern or the user who is doing the replacement.  In those cases, the Midas Rich Text LSX can trigger an event which will allow you full control over the replacement string based on the search string and whatever else you want.

History
In 1997, for Notes R4.1, the Midas Rich Text LSX was introduced, and in the original set of features was search and replace with wildcards and events on demand.  In 1998, the ability to search non-text strings was added, still for R4.1 and up.  It was not until 2002, with Notes/Domino 6.0, that IBM added even the simplest form of search and replace to its rich text classes, and even then without any of the specialized features Midas has.  Even in 2006, with Notes/Domino 7.0, there is no support for wildcards or pattern matching, no support for changes to anything other than pure text, and no ability to control the replacement based on events, formulas or scripts.

Oh yes, and speaking on search and replace on steroids, with that first release of Midas in 1997, we also released the LinkMatching method, which allows you to search for any string represented by a document in a view and replace it with a link hotspot back to the found document.  This was later enhanced, in 2003, to add the AppendMatching, InsertMatching, ReplaceMatching, KeywordMatching and PopupMatching methods, to further extend the idea of search and replace.

Comparison with standard Notes/Domino functionality
It was not until 2002, five years after Midas introduced pioneered search and replace technology in LotusScript, that with Notes/Domino 6.0 IBM added even the simplest form of search and replace to its rich text classes, and even then without any of the specialized features Midas has.  Even in 2006, with Notes/Domino 7.0, there is no support for wildcards or pattern matching, no support for changes to anything other than pure text, and no ability to control the replacement based on events, formulas or scripts.  Notes/Domino also still has nothing like the LinkMatching and other SmartRefs functionality.

Documentation
The documentation on search and replace technology is mostly found in the Midas Help database under the ReplaceText method, the UserReplaceText method (for events) and in the LinkMatching and other method descriptions.

On-line demo
Search & Replace:  Allows you to search for and replace simple words and phrases or wild card expressions, either with your own or with a standard content.

Sample Database
Jose's Keyword Replacement - Example shows how to replace keywords in a rich text field with rich text segments (images, stylized text, etc.) as would be used in a document assembly or mail merge type application.

Midas Editing - Example shows a variety of methods used to edit existing text, including search and replace with wildcards and dynamic link creation with links created in text and around graphics.

Replace URLs - This sample shows different ways to modify or replace URL's in URL hotspots both in rich text fields and in design elements such as pages and forms.
Sample Script Snippet
This snippet would replace every instance of the string LeadArbitrator with the string Leader in any hide-when formulas anywhere in the rich text.
Set rtitem = New GeniiRTItem
Call rtitem.ConnectBackend(doc.Handle, "Body")
If rtitem.IsConnected Then
   Call rtitem.Everything.ReplaceText("LeadArbitrator", "Leader", "HIDE_FORMULA");
   If rtitem.Modified Then rtitem.Save
End If
Weblog Posts on Search and Replace
Carrying Concealed (Mike Midas case file)
Wed 1 Dec 2004, 04:13 PM
There have been a few inquiries recently from current and prospective customers along the lines of this e-mail from a developer who has worked with our Midas Rich Text LSX a good bit:
I realise that this is a long shot, but I thought I'd ask if the Midas software can transform Rich Text into .eml files?
Of course Midas will do this, but... (read on)
Mon 16 Feb 2004, 10:42 PM
Updated version of this post: here

Using @DbCommand to query and manipulate simple rich text

I am writing a short series of posts showing how to think of @Midas Formulas as taking what you already know and extending it.  A few days ago, I wrote about Using @DbColumn to access Rich Text Tables, followed by Using @DbLookup to access Rich Text Tables.  Those posts should be read before this article, which builds on the lessons learned there.

Querying a Rich Text construct
You already know how to use @DbColumn and @DbLookup to query Notes view data, and with the past two articles, you also know how to use @DbColumn and @DbLookup to query Notes rich text table data.  Querying other rich text constructs is not much different or more difficult.  The @DbCommand syntax is used for all other queries and manipulation, so you had better get used to it.

Getting Started
As a simple example, let's get the Section title from the first section in a rich text field.  We need to query the rich text, but instead of columns of data, we need to get the title from a section.  So, let's see how we get from what we already know to what we want to know.  As a reminder, here is the syntax from the @DbLookup used with @Midas:

@DbColumn(class : "NoCache" ; server : database ; doc-selection ; field ; key; columnNumber [; properties] )

The @DbCommand adds a new parameter before the server : database pair, which is the thing we want to query (or, later, to do):

@DbCommand(class : "NoCache" ; function-name; server : database ; doc-selection ; field)

or frequently:

@DbCommand(class : "NoCache" ; function-name; server : database ; doc-selection ; field : chunkdef)

"Now, hold on a second!", I can practically hear you say.  "What is that chunkdef thing stuck on to the field?"

That, my dear friend, is a chunk definition, and it defines the essence of how the Midas Rich Text engine works.  But unfortunately, I don't have time to describe it right now, see if you are not familiar with the concept , stop and take a quick peek at my earlier post, Midas 101 - Chunk Definitions.  I'll wait.

(sound of tapping fingers)

OK, now that you are back, let's go on...

We want the section title, so the function name is "SectionTitle".  (We'll rate that a 10 for clarity, and a 0 for originality).  A simple example would be:

title := @DbCommand("Midas":"NoCache"; "SectionTitle"; ""; @DocumentUniqueID; "Body":"Section 1");

We added the "SectionTitle" in to tell what we were looking for, and the chunkdef "Section 1" to tell it we wanted to query the first section.  Same database parameter, same note-selection and same field-selection as in the @DbColumn and @DbLookup.  In fact, you could use the chunkdef argument with both @DbColumn or @DbLookup, which otherwise default to "Table 1".

So, this is cool.  By using what we knew before, we can now access a whole slew of new "property-functions", as they are known in the Help.  To name a very few: "ActionFormula" for the formula part of a formula hotspot, "LinkURL" for the URL part of a URL link hotspot, "CellColor" for a cell's background color, "GraphicHeight" and "GraphicWidth" for the dimensions of a graphic, and many more.

"What do you mean, many more?", you say.  "How will I know what they are if you don't list them?"

Read the Help file!  Yup, these are all listed in the on-line Midas Help file, even though the @Midas Formulas toolkit is still in beta.  Take a look for yourself.

Beyond queries
This is all cool, but what if you don't like the section title you get back?  What if the person who created it is one of those annoying sorts who LEAVE THE CAPS KEY PRESSED ALL THE TIME.  Ouch!  Let's say we would prefer it propercased.  Here's all we do:

title := @DbCommand("Midas":"NoCache"; "SectionTitle"; ""; @DocumentUniqueID; "Body":"Section 1");
@DbCommand("Midas":"NoCache"; "SectionTitle"; ""; @DocumentUniqueID; "Body":"Section 1"; @ProperCase(title));

That's right.  To set a value, you just use the same property-function, but give it a new value.  Not too difficult, even for you newbies!

Conclusion
If you were able to understand anything I said in the first two articles in this series, you shouldn't have much difficulty moving on to querying and setting values other than table values.  Just add a property-function name and query or set the value.  That's all there is.

Coming Soon
Tomorrow, or when I get to it,, I'll talk about how you can go one step forward, and query and modify more complex rich text, generate HTML from your rich text, and other things liable to make you very popular with your IT director.
Mon 10 Jul 2006, 10:19 AM
As I investigate Open Document Format (ODF) internals, and as we move closer to Hannover and the include ODF-compliant applets (for want of a better word), I am starting to compile a list of differences in inherent functionality between what you can and can't do with ODF and Notes rich text (and perhaps HTML/XHTML).  I was wondering if my readers were interested in this sort of thing.  I'll give an example:

(read on)

Tags:

Wed 24 Jul 2019, 03:33 PM
For at least the past decade, IBM has been talking heavily about mobile devices with promises such as "Mobile First" and "native apps", but while many companies have moved many apps to web interfaces using classic Domino, XPages, and various hybrid technologies, mobile app usage in the Notes/Domino/Sametime/Connections space has garnered much less of a mind share and customer share than might be expected. 
 
HCL has taken a curious step... backwards some might say. With Nomad, Notes client apps could be run natively on the iPad, and at the Factory Tour, there were presentations and demos of that approach spreading to Android tablets and both iPhone and Android phones. GPS functionality has been added to LotusScript, and formula language extensions have been added so your app, your native Notes app, can be device-aware with its UI.
 
Now, this direction has a lot of different meaning for different audiences. For long time customers, it means some of those Notes applications that have grown dusty over time can be dusted off and have continued use with a mobile workspace. For developers, it means that with traditional low-code to mid-code Domino Designer, they can create apps that run well on every mobile device as well as the desktops which still rule the desks in the corporate world.
 
But there is another implication which may go largely unremarked by anybody except, well, me. This direction means that rich text is not only not dead, it is not relegated to applications that are no longer maintained or updated. Developers can legitimately add rich text fields to apps that will run on an iPhone or Samsung or whatever, knowing that those rich text fields can be read and edited with the "normal" rich text editor, because what is running is essentially the Notes client (sans the clunky Eclipse part).
 
One of the demos shown at the Factory Tour was using the Notes mail client to create a rich text email. While at one time, HCL suggested that email would not be ported, it has been and will be part of the package.
 
Lest you think that rich text implies nothing but fonts and colors, bear in mind that it means doclinks, tabbed tables, layers, collapsible sections,etc. The following are snapshot of ordinary rich text fields, all of which could be created without a lick of programming by a power user to display on the entire panoply of mobile devices.
 
The following are not really on an iPad, I just copied them onto a template image to remind you this is possible right now with Nomad.
 
 
Tables with dynamic images and mouse-click text
 
Inline JPEG image
 
 
 
Nested tabbed tables
 
Inline JPEG image 
 
 
 
Forms with all the Notes niceties and no special coding required
 
Inline JPEG image
 
 
Of course, all of this comes with an important reminder. What is created in rich text still needs to be rendered well. Somebody creating the content above in email or forwarding a form or report may still be sending it to Outlook365 or Gmail or a Notes customer in a different domain, and to retain the appearance and integrity you will need CoexLinks Fidelity. And while all this content may be created by hand, far more intricate work can be created far more easily using the Midas LSX. This fancy content may also be used to drive apps using DERN/NERD stack or Node JS or whatever, and that may require AppsFidelity.
 
Over the next couple of weeks, I am going to post a few demos showing the value of the Genii suite of products in both your existing and upcoming world of Notes/Domino (and Verse and Sametime and possibly Connections, but more about all that later).
 
For now, just remember that rich text is back, baby. Like it or not.

Tags:

Fri 24 May 2013, 12:56 PM
My latest mini-lesson is Midas#7 Cross Reference Smartlinks, which shows off a sample database that is both very new and very old. I created an earlier version for Lotusphere 2002, I think, and have modified it and used it in a couple of other places, but never made a public sample for our website. I decided to update it more and release it now, as I have had people ask for the functionality in one way or another recently. I helped one customer build it into an XPages app, so when I get a chance I'll probably modify it again to show how it works with XPages and on the web in a classic web app.
 
If you follow the link above, you can see the code which is used, as well as links to the download and to an evaluation request. But first, watch the video (only 2 and a half minutes). Best to watch in HD full screen.
 
Wed 4 Sep 2013, 08:56 AM
In one of those last minute "Aha!" moments before releasing Midas V5 to a few early adopters, I realized that the GeniiRTCollection name did not make sense anymore. Like so many things, the original purpose has been changed. The class was originally designed to be a collection of GeniiRTItem objects that might be from multiple documents, even multiple documents in multiple databases or put together in an ad hoc way. The idea was to do GeniiRTItem and GeniiRTChunk type actions on them. As time has gone on, the real value of collections has turned out to have more to do with being a collection of documents than a collection of rich text items.
 
So the GeniiRTCollection class has become the GeniiCollection class. Not a huge change, except that it precipitates another change that has been a long time coming, which is that the Midas Rich Text LSX will become the Midas LSX. It isn't really all about rich text anymore, though it is still about rich content. When I refer to it as Midas V5, that reflects the new reality.
 
Of course, nobody probably cares but me. Customers just buy it to solve problems and open up possibilities. It will still do those things, and more with the new version, no matter what I call it.
 
 
 
 
Tue 21 Jun 2011, 03:58 PM
As I mentioned in my previous post, it has been 13 years since we have added a new class to the Midas Rich Text LSX, though obviously we have added many new methods and properties and feature sets. For our upcoming release, we are adding a new class which may seem at first to be underwhelming.

Existing classes:

GeniiSession (represents the entire session, but rarely used. Added for 1.00, July 1997)
GeniiRTItem (represents a rich text instance and the note which contains it. Added for 1.00, July 1997)
GeniiRTChunk (represents a defined chunk of a GeniiRTItem. Added for 1.00, July 1997)
GeniiRTComparison (utility class for comparing two GeniiRTItems. Added for 1.40, July 1998)

New class:
GeniiCollection (represents a defined collection of notes. To be released with next version)

Big whoop-di-doo, right? There is already a NotesDocumentCollection, and even a NotesNoteCollection, and we can cycle through those just fine.

This is true, but the GeniiCollection allows for some interesting new tricks. In the script below, I show four different ways the GeniiCollection class can be useful, two of which involve acting on the entire collection together, and two which involve cycling through it in different ways.

Collected examples

Tags:

Fri 17 Jun 2011, 03:05 PM
The Midas Rich Text LSX was first released in July 1997. It has evolved and shifted and changed over the years, adding new methods and properties to support major new functionality, but one thing has not changed since 1998, and that is the list of classes:

GeniiSession (represents the entire session, but rarely used. Added for 1.00, July 1997)
GeniiRTItem (represents a rich text instance and the note which contains it. Added for 1.00, July 1997)
GeniiRTChunk (represents a defined chunk of a GeniiRTItem. Added for 1.00, July 1997)
GeniiRTComparison (utility class for comparing two GeniiRTItems. Added for 1.40, July 1998)

After thirteen years, we are adding a new class in our next version (coming shortly). Can you guess what it is? I will give one clue, which is to say it is not functionality-based like the GeniiRTComparison, but instead is another generalized class that could contain lots of methods and properties.
Mon 10 Dec 2012, 06:56 PM
We had a minor hold up on the release, but I wanted to show you how easy it was to support an existing application with CoexEdit. There are different options which allow you to modify the design of your XPage application easily, but you can also make CoexEdit work with an existing template.

To demonstrate this, let's look at the standard 8.5.3 Discussion template. There are two forms which matter. Not the XPages or Custom Controls, but the forms which hold the data. The two that contain editable rich text fields are the "Main Topic" and "Response", though the "Main Topic" is stored as "MainTopic". Be sure to use the stored name (use the first alias if there is one). On each of these forms, the rich text field is named "Body", as many, many rich text fields are. The template name for the standard 8.5.3 Discussion database is "StdR85Discussion" (copy it from the Design properties tab). So, if we wanted to define the standard discussion explicitly, we would use:

CoexEditXPage1=StdR85Discussion
CoexEditXPage1Form1=MainTopic
CoexEditXPage1Form2=Response
CoexEditXPage1Fields1=Body
CoexEditXPage1Fields2=Body

but since the two forms both use the "Body" field, we could shortcut that to:

CoexEditXPage1=StdR85Discussion;MainTopic,Response;Body

and honestly, even shorter, since the "Body" field is the default.

CoexEditXPage1=StdR85Discussion;MainTopic,Response

Now, let's say we had a different template, possibly with a locked-down design. Let's call it "Masterworks", and it has three forms, "Performance", "Materials" and "Extended Performance". The first two have a standard Body field, but the "Extended Performance" has three rich text fields, "Teaser", "Description" and "AudioFiles". For this, we would use:

CoexEditXPage2=Masterworks;Performance,Materials,Extended Performance
CoexEditXPage2Fields3=Teaser,Description,AudioFiles

With those two lines, we have enabled CoexEdit on all databases with the "Masterworks" XPages template. Tomorrow, we'll see some of the ways the CoexEdit enabling changes the editing experience. But first, one additional tip. If you have a database with no template, you can use the Replica ID of the database instead.

CoexEditXPage2=[852566F10064AC18];Performance,Materials,Extended Performance
CoexEditXPage2Fields3=Teaser,Description,AudioFiles
Thu 7 Jul 2011, 11:20 AM
The easy part of writing software is often "making it work." It may take a lot of time and effort, but if you plan appropriately, design carefully and develop to meet your specifications, the software will eventually work.

The hard part of writing software is "making it easy." It takes effort at every stage, from planning to design to development, and still you are likely to miss the mark. So, you re-design, re-develop and keep working. Losing patience means off-loading the effort on to your customers, who may not be interested in a harder process or less intuitive interface.

With that in mind, I am close to introducing better support for XPages and CoexEdit. First, I made it easy to handle a known template, the ND 8.5.2 Discussion database, by simply adding a Notes.INI line CoexEditRecognizeDiscussion=1. No design changes necessary, but also dedicated to a single template. 

It has been harder to make things easy for any potential XPage application. I tried various methods for identifying the custom/bespoke application, but some were too cumbersome or convoluted, while others were too draconian or resource-intensive. The current plan includes two or three steps, depending on the application.

Step 1) Add a Notes.INI line CoexEditEnableXPages=1

Step 2) Add a text field, $CoexEditXPage on any form (not XPage or Custom control) that contains rich text fields to be handled. It can be computed or set, but a value of "0" means the form does not use CoexEdit, while "1" (or higher) means it does.

Step 3) If there is more than one rich text field, or if there is one which is not named "Body", add a text field, $CoexEditFlds, which may have multiple values that are the names of the rich text fields. If the only rich text field to be handled is named "Body", you can skip this.

This may still change, but at least it is close. I might even skip Step 1, and only check for CoexEditEnableXPages=0, with 1 being considered the default. Then, in many cases, only Step 2 would be necessary for adding CoexEdit support to a custom XPage app using a Body field.

Tags:

Thu 19 Nov 2009, 08:33 AM
We released Version 4.30 of the Midas Rich Text LSX on our website last night.  A more complete announcement will be made, probably Monday, but one notable point is that Version 4.30 officially supports R5 to ND8.5.1, and contains features which work with xPages, and which are set up for future additional xPage development features.

With this release, we are also starting official support for 64-bit Domino on Windows and official support for all IBM-supported flavors of Linux.  Those are not on the website, but should appear later today or possibly Monday (I will be away tomorrow).

Tags:

Tue 1 May 2007, 12:22 PM
As many of our customers have noticed, we have not released any major releases for our Midas Rich Text and CoexEdit products in a while.  We have had many interim releases fixing specific issues and adding functionality that was important to individual customers, but we are long overdue for a production release for these products.  It was originally our intention to wait for Notes/Domino 8, but that is too far away.  Over the past few weeks, we have come up with the following plan for the two sets of products.

Midas Rich Text products (Midas Rich Text LSX, Midas Rich Text C++ API and @Midas Formulas)
We will release shortly a Version 3.70 for all three products, which will include all fixes and enhancements added over the past year, as well as wrapping in a few new features that seem important to get out to all customers.  All customers with Version 3.x licenses will be able to download and upgrade to this version at no cost.  This version is planned to be the last full version in the 3.x code stream, and the last to fully support Notes/Domino Releases 4.5x, 4.6x and 5.x.  Version 3.70 will therefore support Notes/Domino 4.5x, 4.6x, 5.x, 6.x, 6.5x and 7.x, but not 8.x   Only essential bug fixes will be added to the 3.x code stream after this release.

Within the next few weeks, we will release a Version 4.00 for all three products, which will include all enhancements and fixes from Version 3.70, but will remove some obsolete properties and methods and add some functionality important to Notes/Domino 8.x.  Version 4.00 will therefore support Notes 6.x, 6.5x, 7.x and, eventually, Notes/Domino 8.x.  It will include only partial support for Notes/Domino 5.x, depending on customer demand.

Upgrade discounts from Version 3.x to Version 4.x will be based on how recently the 3.x license was purchased and whether the customer is on maintenance.  If a customer is not on maintenance, the upgrade will be free if the 3.x license was purchased within 60 days, 15% of the current cost if the license was purchased between 61 and 120 days before, 25% if the license was purchased between 121 days and 180 days before, 40% if the license was purchased between 181 and 365 days before, and 50% if the license was purchased between 366 and 730 days before.  The days will be counted from when the request is made, not when Version 4.00 is released, so it may be in a customer's best interest to upgrade quickly even if the specific features in 4.00 are not required immediately.

CoexEdit
We are releasing a Version 2.0 Gold Candidate very soon which includes all fixes and enhancements added since Version 1.4.  Version 2.0 will support Notes/Domino Releases 5.x, 6.x, 6.5x, and 7.x.  Plans are underway to support Notes/Domino 8.x, but the specific version in which that will happen has not been determined.

Upgrade discounts are not relevant, since virtually all CoexEdit customers are on maintenance.  All customers up to date on maintenance will be upgraded at no cost upon request.  Customers who are not on maintenance would have to buy a new license to get the new release.
Fri 18 Nov 2005, 10:57 AM
When you get a pedestal at Lotusphere, they give you fifty words to describe your company, or your products or whatever the heck it is you want that makes sense.  The best I have come up with so far is:
Need your doclinks to work when mailed to Microsoft Outlook?  Need to edit rich text seamlessly in both the IBM Lotus Notes client and on the Web?  We have powerful plug-in solutions for you.  And if you need to build your own solutions,  we have rich text tools to help.
but I figured a lot of you out there were smarter than I am and could possibly come up with something better.  It is due today, and I know I am probably overthinking this, but I figured it couldn't hurt to ask.  Any ideas?///
Mon 10 Sep 2007, 10:03 AM
A question came up with a customer who was trying to export e-mails to HTML.  The rich text was exported without any difficulty, but the customer wanted to include the subject, but not render the whole form.  They tried first by simply adding to the generated HTML, but their Arabic and Turkish content didn't get translated if they added to the HTML.  My first guess was that they should use the OpeningBody= parameter, or something similar, but of course those have the same issue.

Instead, the easiest and cleanest answer is to insert whatever you want generated with the HTML into the rich text before generating.  You don't have to save it, so you don't need to worry about changing the original message, but this allows the HTML generation engine to optimize the content and translate everything into the appropriate character set.  I have used this technique before, in the Help DB for example, to add a table inside the generated HTML, but I had forgotten about this technique for foreign language insertion.
Fri 7 Sep 2007, 05:20 PM
Dual licensing for brief period
As of September 10, when a customer purchases a license for the Midas Rich Text LSX or Midas Rich Text C++ API, they will get two license files, one for the current 3.x version, and one for the soon to be released 4.x.  After Midas 4.00 is released, we will stop sending Midas 3.x licenses except upon special request.

Notes releases supported by each major version
Midas 3.70a is the latest, and probably last, Midas 3.x version.  Midas 3.70a officially supports Notes 4.5x, 4.6x, 5.x, 6.x, 6.5x and 7.x, but not Notes 8.x.  

Midas 4.00, when it is released, will be the first Midas 4.x version, and the first to officially support Notes 8.x.  Midas 4.00 will officially support Notes 6.x (but not below Notes 6.0.2), Notes 6.5x, Notes 7.x and Notes 8.x.

If you have any questions or concerns about this policy, please do not hesitate to let us know.
Fri 5 Aug 2005, 01:10 PM
Today we released Version 3.50 of the Midas Rich Text family of products.  I am working on a complete list of new features and fixes, but one quick item is worth mentioning.  Running some tests with HTML generation performance on R5, I ran a test generating HTML for every document in the 2002 Business Partner forum, a total of 39728 documents with links, attachments, tables, images and more.  It took 44 seconds to run through the whole database, which is an amazing 903 per second.  Now, I have a pretty good workstation, but it isn't as fast as a robust server.  Pretty darn amazing even to me, and I am the one who has been tuning and cleaning up the engine for the past several months.

Anyway, more soon, but I wanted to announce that these were available on our website for those who have been waiting.
Tue 14 Oct 2003, 11:47 PM
How short is your shortest useful agent?  This one I wrote today converts Notes bitmaps to GIF format for every rich text field on the current document (there are several rich text fields in this form which might have images).  The full code is:

'Convert Bitmaps to GIFs for all: 

Option Public
Option Declare
Uselsx "*lsxrtc"


Sub Initialize
   Dim session As New NotesSession
   Dim doc As NotesDocument
   Dim gSession As New GeniiSession
   
   Set doc = session.DocumentContext
   
   On Event ActOnItem From gSession Call ConvertBitmaps
   Call gSession.BatchBackend(doc.Handle, "*")
End Sub

Sub ConvertBitmaps(Source As GeniiSession, Byval action As String, Byval properties As String, skipnote As Integer, continue As Integer)
   Print "Converting bitmaps in " & Source.BatchRTItem.Fieldname
   Call Source.BatchRTItem.Everything.ConvertBitmaps
End Sub


You don't get much shorter.  Maybe I should comment it or something.
Thu 2 Sep 2004, 10:38 AM
Well, Duffbert did it, and Rich Schwartz did it, so I guess I'll post some of the search terms which attracted people to our website this month.  I have to say, I don't know whether our content is "on message" or just obscure, but the hits don't get too far off base (unlike Duffbert who gets... (read on)
Tue 7 Dec 2004, 11:06 PM
I have long been frustrated by the inability to demonstrate the full functionality of our Midas Rich Text products in on-line demos.  Even though there are some cool things you can show on the web, it is hard to get past the sense that it could be smoke and mirrors, since with a sufficient amount of code, you could manage to make all sorts of things work with pure HTML.  The harder thing to accomplish is fast, simple rich text manipulation in a Notes client, and that is what Midas excels at... Well maybe there is a way to demonstrate this on-line... (read on)
Mon 1 Mar 2004, 11:50 PM
Travelling to conferences in different parts of the world is always interesting, as you never know what your audience will be like, or what they will expect from you.   I'm at the Admin&Developer 2004 conference in Munich, having finished one presentation and getting ready for another this morning.  While much smaller than the Lotusphere "big show", these regional conferences, especially the German ones, have a different sort of intensity.  People are here to learn, and you feel compelled to deliver.  Hence, I stayed up way too late adjusting my morning presentation to the different demands of the audience, plus adjusting some of the content to German content.  (I don't read German particularly well, but even I can have my election returns example use election returns from Bavaria's last election rather than from the US Presidential primaries)  In addition, while people speak English well, I have adjusted the content slightly to ensure that the business goals are very clear even if the language presents a small barrier.  Business value is what they want, and business value is what they should get.

Fortunately, I've also had a bit of time to sight see, and have travelled with my daughter and Rocky Oliver and his daughter and other Penumbra speakers to the Neuschwanstein castle in the Alps (you have probably seen it without knowing it, since it is the model for many puzzles and models, and truly looks like a fairy tale castle) and the Residence of the Bavarian kings in Munich, both of which were wonderful in different ways.  I hope to do more sight seeing once the conference is over, but I am also eager to get back to the office and work on some of the ideas I've been exposed to here, including some ways of using Midas technology with Websphere Portal, and getting the new COEX! Links version working with iNotes and Workplace.  More on those when they are closer to reality.  Meanwhile, back to my room to get ready for Rich Text Tips, Tricks and Techniques, with ssome awesome new demos.  This session is so much fun, and uses everything from regular rich text without programming (you can make it do extraordinay things) to Notes 6 MIME and rich text classes to @Midas Formulas doing @DbLookup on a rich text table.   I can't wait.
Mon 12 Sep 2005, 09:38 AM
As I blogged before, we are working on either validating our current products as supporting Notes/Domino 7 or releasing upgrades that will support Notes/Domino 7.  I thought it would be good to give a quick update on where we are in that effort.
 
Midas Rich Text LSX - Looks good so far.  One or two small oddities, but all major tests work.
 
@Midas Formulas - Crashes regularly, but appears to be a small issue that just happens to effect every call.  Sigh!  One unfortunate side effect is that we have had to disable the on-line demo from our website, which was upgraded to Domino 7 already.  The Midas Rich Text LSX on-line demos are all functioning fine.
 
Midas Rich Text C++ API - Looks good so far.  All major tests work, but same issues as with the LSX (since they share the same engine)
 
CoexEdit - Looks good, but needs more testing.
 
CoexLinks - New version to be released Wednesday will fully support Notes/Domino 7.
 
So, I'm back to the trenches...
 
 
 
The Genii Software team, hard at work in the trenches
 
OK, not really
Wed 18 Apr 2018, 11:11 AM
 
 
Way back in 1997, I released the Midas Rich Text LSX, a quirky-as-hell product which made manipulating Notes rich text not only easy, but kind of fun. You could sort tables on the fly, access almost anything, search and replace almost anywhere, lots of stuff, and it didn't think of rich text like IBM did, but like its users did. Fairly quickly, Midas became a hit as developers built all sorts of interesting and dynamic applications. It didn't cost very much, either. Personally, I thought it had a window of opportunity of about four years, if I was lucky, before IBM would swoop in and create something that would put me out of business. 
 
My youngest son was 2, and crawled all over me while I answered support calls. Fast forward 20 years, past a great many enhancements and additions and an eventual rename to the  Midas LSX, because it does so much more. The biggest reason people buy Midas these days is to generate high quality HTML/MIME/EPUB/CSV/etc. Some still use it for generating fancy emails or creating tables on the fly. My youngest is out of college now.
 
But about a half dozen times a year, I get a message from a company who has been using Midas for a decade or more, sometimes almost two decades. They've usually fallen off our radar screen, not on maintenance, not upgrading, just running apps that enhance their business year after year. They call because they switch servers or upgrade software, and manage to lose their Midas software or license or change server names so the license doesn't work. They call because this app which is so important suddenly doesn't work. Sometimes they know it is a problem with Midas, sometimes they've long forgotten they even use the product. I help them out however I can, though sometimes the combination of Notes version and Midas version is not only unsupported but dangerous. I'm helping one now that hasn't been in touch since 2004 for a Midas license they bought in 2002. Sixteen years, that app has been chugging along basically untouched. I wonder how many others like that are still humming away.
 
Sometimes, such customers buy a new license. Sometimes, I give them enough information that they get restarted with the old software and license they already have. The ROI is pretty spectacular, either way. Now, with Notes 10 on the horizon and the Notes/Domino sunset seeming further off, many of these companies are happy to spend a little more money and look forward to another decade or two of use.
 
It's been a long strange trip, as the Grateful Dead might say, and with Notes/Domino 10 on the horizon, it isn't over yet. I sell Midas to new customers, to old customers, perhaps even to you. It is not our most successful product if you simply go by total sales (that would be CoexLinks Fidelity), though it is close, but it is the longest running success story we have.
 
Have you tried Midas yet? There's still time to discover the magic, and even more time to enjoy the return on investment.
 

Tags:

Thu 29 Jan 2015, 02:46 PM
Paul Withers made an interesting comment to me today on Twitter (see below). Below that, see a portion of a slide from one of these sessions, ID106. Finally, see my video, First Test of Midas in Notes browser plugin recorded, released the first day the browser plugin was available publicly. The interesting thing that these three together point out is that IBM acted as if it could simply kill the king and eliminate the monarchy, but instead just had to replace it with another king.

Among the great strengths (and terrible curses) of Lotus Notes (aka IBM Lotus Notes/Domino, aka IBM Notes/Domino) has always been its versatile rich text. Not simply in documents, but forms, views and everywhere else, rich text is the underpinning of Notes and Domino. In Tolkienian terms, it is the king under the mountain. (Note: only I would ever describe rich text as "royal" without adding "pain in the ass" after that. I know, I know, it is hardly king of the heap for anyone but me, but it still supports tens of thousands of applications at many large companies, and supporting it pays my kid to get through college. Enough said.)

So, while IBM is happily proclaiming the end of Notes, all they have really done is put out Notes 7 (without Eclipse) and bundled it into a browser window. Same functionality. Runs LotusScript the same way. Support Notes and Notes mail the same way. Even supports addins such as the Midas LSX... because it is the same thing under the covers. The king is dead - long live the king.

Someday, Notes will go away entirely. It may be another decade, but when IBM has sessions about the "browser plugin", they are still supporting the monarchy that they despise so righteously. And on the bright side, we get away from Eclipse when we run Notes the browser plugin, which has been a dreadfully heavy load to bear.


Inline JPEG image


Inline JPEG image
Wed 5 Oct 2011, 04:40 PM
A lot of people over the years have asked why Notes doesn't support PNG graphics. After all, PNG as a format has been used more and more in web applications, and it would be cool to support alpha-transparency and such in the Notes client. Unfortunately, it appeared that IBM was not listening.

Maybe they were listening after all. They simply weren't talking. After all, why not support PNG graphics, but make it very difficult for anybody to use them or import them? That way... actually, I have no idea why they would do it, but it appears they have. You can use PNG graphics as image resources if you manually force them to pretend to be something else. You can also use them natively if the rich text starts as MIME and is converted to rich text. Neither is easy or convenient. I am adding this to Midas to make it easy and convenient for people using that toolkit, but I may write it as an import filter as well, just to make it accessible to users. Why can't IBM do that? (No, it's not in 8.5.3 either.)

Let me give a simple example of how much difference it makes to use a PNG graphic natively versus imported and converted to JPEG. Over on OpenNTF, there are a series of company logos. I tried this on several, and all showed some degradation on importing, sometimes severe. Here is one obvious example:

Inline JPEG image

Obviously, the native format (which is what Midas imports into) is more appealing, but it goes further than that. Let me take the same document and change the background to a patterned image:

Inline JPEG image

That transparency is key. But don't tell anybody, or they might realize how powerful rich text is. We can't have that!

Tags:

Thu 24 May 2012, 10:29 AM
One of the powerful features of Lotus Notes from early days was the ability to attach files in situ, where they were relevant. For reasons that have always escaped me, other products have not followed suit, and most attachments in email and elsewhere are attached to the document as a whole rather than to a specific place.

As more and more applications for Lotus Notes/Domino are created using XPages or updated to use XPages, the rich text fields are displayed using CKEditor rather than the native Notes renderer. This loses that traditional placement of the file attachments. One of the features of CoexEdit 3.0, due to be released in the next week or so, is that file attachments can again be placed where you choose and will render as they do in Notes. The following is a screen shot of a document created in the CKEditor through a standard XPage rich text control. This happens to be a standard discussion database, but the code will work without any design changes on any XPage application that uses rich text fields.

The only configuration for this was the following three lines added to the NOTES.INI:

extmgr_addins=CoexEd
CoexEditEnableXpages=1
CoexEditServerTasks=notes,notes2

Inline JPEG image

Tags:

Fri 29 Apr 2011, 12:11 AM
While working up a demo of some of the features that our coming version of CoexEdit offers with the new discussion template in 8.5.2, I decided that at least one feature could be implemented by anybody, whether or not they have CoexEdit. This is the issue of using point sizes in CKEditor, the editor that ships with 8.5.2 to handle rich text editing on the web.

The problem (at least I see it as such) is that the default font sizes in this CKEditor implementation is in pixels, not in points. While that may be comfortable for web designers, the vast majority of people writing in rich text fields are NOT web developers. Let's review:

  • Lotus Notes client - font size measured in point sizes (every release from beginning to present)
  • Microsoft Word - font size measured in point sizes (every release from beginning to present)
  • OpenOffice - font size measured in point sizes (every release from beginning to present)
  • Virtually any other word processor/editor - font size measured in point sizes

There might be trend. Therefore, it might surprise you when you set the size in the new discussion db from the web, and think you have set it to 14pt, that you have really set it to 14px, which is about 11pt.

Fortunately, there is a simple fix. Currently, you need to apply it to every rich text control (or change your CKEditorWrapper.js file), although I am working on a more elegant solution. All you need to do is go to the rich text control inside your Custom Control or XPage....

(read on) for full explanation and images.

Tags:

Tue 11 Jun 2013, 11:59 AM
The videos will show the Midas Rich Text LSX used to export either a single document or a collection based on formula, view or category, along with an exported view of the collection. Export formats will include HTML, CSV, MHTML, EPUB, EML and more, all including rich text as well as other data.. I wanted to explain in advance that I am not either for or against taking data out of Notes permanently, but I am in favor of high fidelity exports regardless of whether you want a snapshot for a client, a data set result for a salesperson, an archive for discovery or an export for the purposes of taking the data elsewhere. That is our business.

The Offer
I will highlight a number of ways to take data out of Notes, most either requiring or enhanced by Midas V5. For those of you who have bothered to read this far, I also want to extend an offer to you. Those with valid, up-to-date licenses for Midas V4 (either in their first year of free maintenance/upgrades or paid-up on renewals) on the day Midas V5 is released will get both their free upgrade to Midas V5 and the extended Midas Exports license. Those who buy Midas V5 afterwards will have to decide whether they need the Midas Exports license. Without that, there is a limit on how many documents can be bundled in a collection for export to EPUB/MHTML/HTML. So, when you watch the videos, decide whether you want to buy or renew before the offer expires the day V5 is released.
Wed 14 Oct 2009, 05:10 PM
One of the most intriguing, and irritating, aspects of writing software extensions to Lotus Notes is the way people line up and beg IBM to release features that are readily available in external tools.  Sometimes their companies won't let them buy an external tool.  Sometimes the price is not what they can spend.  Sometimes they just don't know.  But year after year, I see people request certain features and functions related to rich text, whether in the Business Partner forum or the LDD forums or IdeaJam or at Ask the Developers or in the Lotusphere labs or on their blogs.  And year after year, they seem to not really notice that IBM isn't adding new functionality to the Notes rich text classes, or at least precious little in the ND 8/8.5/8.5.1 versions.  At best, IBM will point you towards DXL, as if it really makes sense to dump everything to XML, find and process the tiny attribute you need, and then import it all back.

So, here I give you another great idea.  Imagine, the ability to change a table cell background color in LotusScript.  You can certainly vote to promote it, as I did.  But you could also read my first comment, which points out that this feature has been commercially available since Feb. 9, 1998 in our Midas Rich Text LSX.  It will cost you something, but this is only one of hundreds of properties and methods available in Midas that you could propose and vote on in IdeaJam.  Perhaps it is time to vote with your money instead of your mouse, as companies on 47 countries have already done.

You could wait another 11.5 years and see if IBM catches on.  Or, our newest version of Midas, officially supporting all ND releases from ND6 to ND8.5.1, will be here Monday.  Isn't it time to vote?


Tags:

Sun 12 Sep 2004, 11:14 PM
No, I haven't had two more kids.  Heavens, I just got my oldest off to college!  The two new members are part of the Midas family, and long time readers have heard a fair amount about them already.  Monday is the big day, barring unforeseen last minute issues, and the Midas Rich Text C++ API and @Midas Formulas will be released in production versions... (read on)
Fri 30 Jan 2009, 03:05 PM
In this post, I am talking about email once more, and about a topic particularly nostalgic for me, sections.  In 1995, my youngest son was born, and Lotus put out Notes R4.  I have to meet with my son's guidance counselor next week to decide what courses he will take in high school next year, and IBM (which bought Lotus shortly after that) has just released Notes 8.5.  But why is the topic of collapsed sections nostalgic?  The reason is that even before R4, my first Notes API add-on, the @YourCommand Toolkit, worked with rich text a bit, but with the advent of LotusScript, Notes R4 started to feel like a "real development environment:.  With the advent of collapsed sections, rich text went from mundane to magic, reflecting the games of peekaboo I would play with my son (this was long before the web and JavaScript and CSS magic).  Finally, in Notes 4.1 in 1996, the LSX Toolkit was introduced, and I started my first serious forays into rich text programmability with my Midas Rich Text LSX.  But I digress...

You might think then that IBM could not possibly fail to correctly implement collapsed sections in email.  After all, unlike my previous topic, tabbed tables, sections are a fundamental part of the email experience.  But if you thought that, you might want to read the previous five posts in this series to get a true feel for IBM's commitment to rendering.

(read on) to see what happens when the following email is rendered by the Notes 8.5 client....

Two sections in a Notes 8.5 client

Sections in rich text

Tags:

Fri 30 May 2003, 08:05 AM
One of the challenging parts of being an independent software vendor is deciding which projects or products to invest in, time wise, money wise and energy wise.  Some vendors do a lot of market research, formal or otherwise, to decide what the market will bear.  I do that by following many forums, answering lots and lots of questions both related and unrelated to our products, and trying to understand the pulse of the market.

On the other hand, I also spend a lot of time developing technology that nobody is asking for directly, or that skirts the edge of anything anyone wants.  The SmartRefs technology we just introduced is one example.  While many people use the earlier automatic contextual cross-reference links, the idea of "doing stuff" to random bits of the rich text is not immediately obvious to people.  My intuition tells me that this is powerful technology, but it is still a "gut feel" gamble rather than meeting a proven need.  Only time will tell how well it succeeds.

Another example that I am working on right now is HTML -> RT -> HTML technology in a plug in.  HTML generation was another gut feel, and one that has paid off handsomely.  Many, many customers of all sizes and descriptions are using our HTML generation and MIME mail sending ability, which was an offshoot.  Now, I am working away furiously at improving the HTML importing side, so that we can introduce a coexistence tool that allows Notes client apps and web client apps to share rich text even if the web side chooses to use one of the fancy rich text editing tools for the web, such as eWebEditPro.  Currently, sharing rich text between the web and Notes client means losing almost all the richness, but I intend to have a plug in answer for that so almost any authoring tool will coexist more smoothly.  There is more obvious demand for this than for SmartRefs, but it is still a largely unproven market.  My intuition says it will be a big one, but one of my closest ISV friends thinks it is a non-starter.  Who is right?  We'll see.
Sun 23 Jul 2006, 09:02 PM
This post shows another difference between Open Document Format (ODF) and Notes rich text, somewhat related to this last post.  Before I start, I must acknowledge that this could be considered a difference between OpenOffice.org's implementation of ODF and the Notes client's implementation of rich text, as both could handle things differently, but it would take a good deal of work in the ODF format to do what the Notes client does.

Difference in how an Image is treated when a border or drop shadow is added.
In both ODF and Notes rich text, you can import a JPEG, such as this one, and they look the same:


Figure 1: An image without borders or shadows in either Notes or OpenOffice.org Writer


Figure 2: Shadow and medium yellow border added  to the image in Notes client

In Notes, the shadow and border are added outside the image, which is left in its original size.  This is handled differently in ODF:

(read on)

Tags:

Thu 2 Jun 2005, 09:46 PM
I was doing some HTML validation yesterday, and was horrified to find how many images I add in this blog without ALT tags, which both makes the HTML invalid and harder to read for those who use need screen readers.  I decide to use our Midas Rich Text LSX to whip up a little routine to find all the images which do not have ALT tags defined.  After writing it, and after fixing quite a number, but by no means all, of the images, I decided to offer it here for those who have Midas and find the idea useful.

Midas Rich Text LSX script to find missing ALT tags
Wed 28 Sep 2005, 02:49 PM
The term lossy is often used in image compression to describe a format that retains most of the original, but will lose something over the original.  For example, JPEG is a lossy image compression format, which saves space but risks some dimunition of fidelity.  The term lossy is also used for various other data compression format, including ZIP and RAR.

But what about lossy data conversion?  In particular, "rich text" formats such as MS RTF, HTML, XHTML, MIME, Word and Notes rich text all may represent formatted data in ways that look alike but are different under the covers.  What is worse is that these formats almost all have capabilities, both visual and action oriented, that do not match up.  Specifically, I spend a lot of time on Notes rich text to HTML/XHTML and HTML/XHTML to Notes rich text, especially with CoexEdit.The obvious goal is to minimize the loss in any conversion, how can you measure the loss?

The following three graphics might help explain what I mean.  The first is a Word document, which I then copied and pasted into the browser window for FCKEditor using CoexEdit.  I used a Firefox browser, but the result is similar with Internet Explorer.  After pasting into FCKEditor, I saved, which let CoexEdit do its bit of magic, then switched to my Notes client, where the final graphic is shown.

So, is this "good enough"?  I'm not sure.  There are a few slight differences, such as round bullets in MS Word becoming triangular bullets in FCKEditor and then back to round bullets in Notes, but that is probably just the presentation of the default bullet type.  There also seems to be a spacing issue after the Version 2.0, where an extra space has been added.  Are those good enough?  Only time (and our customers, who are always right) will tell... (read on) for graphics and more
Mon 24 Sep 2007, 11:01 PM
Since one of the features of both CoexEdit 2.0 and Midas Rich Text 4.0 releases is better support for "right to left" languages such as Arabic and Hebrew, I have been doing some investigation of the bidirectional capabilities inside Notes.  I have to say, I am somewhat dismayed.  The Notes client has excellent right  to left and bidirectional (aka BIDI) support, as you would expect from a product with active sales in Israel and various Arab countries, and a long history of multilingual support.  But, as so often seems to be the case, the Notes to Domino rendering does not live up to the standards of the Notes client itself...

(read on) to see examples.

Tags:

Tue 19 Aug 2003, 12:04 AM
Rich Text 101 logo
Paragraphs are essential to rich text, both on forms and in rich text fields, but they are not well understood.  Even in the properties box, it is not very clear which properties are text properties and which are paragraph properties, since the title says "Text".  The easy way to remember is that the first tab is the only one that is not paragraph related.

(extended on Aug. 20, 2003)

Tags:

Mon 5 Jan 2004, 02:12 PM
There is an interesting article on next generation search engines on the CNN site today.  I tried out Vivisimo.com to see how it compared to Google, and I must say I like the results.  



If I search for "rich text" on Google, I get 6,910,000 results!  Nearly seven million hits, which means that the vast majority is useless to me and essentially inaccessible in ten page increments... (read on)
Thu 17 Feb 2011, 12:37 PM
In Notes/Domino 8.5.2, what are the choices given in the dropdown list for rendering your rich text field on the web (no XPages, just regular database)?  What does each do in Internet Explorer 8 and in Firefox.

No peeking, trying it out or looking at other people's comments.  I'm just curious what level of awareness there is.

Tags:

Tue 19 Mar 2013, 10:32 AM
I am practicing the elevator pitch demos I mentioned yesterday with a couple more on Gimp 2.8, but I hope to have my first one for Midas out a little later, and possibly also my first on a general Lotus Notes/Domino topic. I might start by doing a few rich text topics like my old Rich Text 101, or possibly something with XPages that can be shown in a minute or two. The idea is to make a specific feature or topic accessible... not to cover it in depth.
 
Having said that, here are the two additional demos I did while practicing. One is a simple demo of the regular Clone tool in Gimp 2.8, used to copy from one image to another selectively. The other is a follow-up on the Perspective Clone demo that shows a more complex perspective and how to "fix" overwritten areas without undoing the whole clone. Both are on my Youtube channel.
 
 
 
 
 
Wed 16 Feb 2011, 12:13 PM
Having avoid giving presentations for a while, I'm diving deep into the pool in Gelsenkirchen, Germany. I have two scheduled sessions already, and it appears that due to the illness of another speaker, I may do one or two more. The sessions I am definitely doing are:

Web Editors - CKEditor and Others
Montag, 21.02.2011 at 13.45-15.15 

A version of the CKEditor is now included with Domino 8.5.x. We will discuss how to use it in your applications, how to enhance it with custom settings, and when to use one of the other editors available. Related issues of Notes/Web coexistence will also be discussed. 


Spicing Up XPages with Classic Notes Development
Mittwoch, 23.02.2011 at 09.00-10.30 

In this session, we will explore ways to use the classic Notes development techniques and tools to enhance the Web 2.0 and XPages applications you are building today. Formula language, LotusScript and C API tricks and expertise don't have to be tossed out when you develop with the newer tools. Your will be given examples to take away as well as ideas to explore on your own. 

The sessions I might do are:

Putting Layers to the Test
Unknown date & time

This session will show a whole new array of techniques using layers, including techniques for building layers in DXL in Notes 8.5.x, and for using layers in any Notes version from Notes 6 onward. Discover tricks to create interactive layer techniques that will empower your applications in ways you didn't think possible.

Rich Text Tips, Tricks & Techniques
Unknown date & time

Explores many cool techniques available in Notes rich text that may surprise even experienced developers. From tips a user can perform to tricks and techniques for developers, these will open your eyes to the power of Notes Rich Text.

I'd be happy to see any of you there. I should note, there will be a special offer for Genii Software products to those who attend. Details at the conference.

Update: I'll be doing the Rich Text session and not the layers. Should be fun to update it a bit over next few days.
Thu 18 Nov 2010, 11:20 AM
Sorry about the typo in the title earlier.

A customer asked whether it was possible to use our Midas Rich Text technology to search through rich text, inside tables, in different fonts and with different attributes, and replace a specified pattern with a string of X's.

It couldn't be much easier. The Midas Rich Text LSX and Midas Rich Text C++ API both support regular expressions (mostly consistent with Perl expressions), and contain a number of methods to allow their use.  In this case, let's say the pattern was ORDnnnnnnnnnnnn where the n's may be any twelve digit number.  The code would simply be:

Call rtitem.ConnectBackend(doc.Handle, "Body", True)
Call rtitem.Everything.RegexReplace("ORD([0-9]{12})", "XXXXXXXXXXXXXXX")

but, let's say that isn't specific enough, as it could turn CHORD1234567890123456 into CHXXXXXXXXXXXXXXX3456, so let's say that the string must either be separated by whitespace or by the beginning/end of the text, so that "CHORD1234567890123456" would not match but "The order# is ORD123456789012" would.  Simple enough, just change the regular expression as below:

Call rtitem.ConnectBackend(doc.Handle, "Body", True)
Call rtitem.Everything.RegexReplace("(^|[\s*])ORD([0-9]{12})([\s*]|$)", "$1XXXXXXXXXXXXXXX$3")

and that's all it takes.  We could make it easier, but we'd probably have to read your mind.

Tags:

Wed 9 Apr 2008, 10:19 AM
Does anybody have an opinion on whether we should use products for idea spaces, so a list such as: CoexEdit, CoexLinks, Midas Rich Text, OpenSesame, New Product Ideas

or should we use functionality for idea spaces, so: Coexistence, Editing, Migration, Programmability, Rendering

or something else entirely.  Any opinions?
Wed 23 Jul 2003, 11:40 AM
Avowed Lotus geek Rocky Oliver has been blogging about some hidden gems in Notes 6 that you may not have gotten a chance to see...
Tue 11 Jan 2005, 11:30 AM
Thomas "Duffbert" Duff asked me to contribute an article for the e-ProWire: Lotus Developer Tips newsletter, and today it was published.  You can read Rethinking Rich Text as a Strategic Asset on-line.  What is especially cool is that the articles published along with mine are by such luminaries as Damien Katz and Vince Schuurman, not to mention the article by Tom Duff himself... (read on)
Tue 13 Sep 2005, 09:09 PM
I had a US government agency ask me recently if our software is Section 508 compliant.  No surprise, as we sell to governments all over the world, including the US, and they have to ask the question, but it is a difficult one to answer.  Genii Software has five major products, CoexEdit, CoexLinks, Midas Rich Text LSX, Midas Rich Text C++ API and @Midas Formulas, and not one of them has a user interface. But is that enough? (read on)
Mon 10 Sep 2007, 10:09 AM
As I mentioned in my first tip today, I wanted to insert some text at the beginning of a message.  It turns out that with the Midas chunk model, this is a bit more difficult than appending at the end.  The reason is simple, but perhaps more clear if I write in pseudo-code:

[Text 1 ==>]This is the first line of my rich text, and it can go on until a paragraph break, [Text 2 ==>]or until a font or style change[Text 3 ==>], which breaks the text into multiple records.

The text above represents a paragraph, with each text record identified.  Now, let's try and insert the following

Subject: A fairly meaningless paragraph

If we go with the intuitive choice, we would have:

Set rtchunk = rtitem.DefineChunk("Text 1")
Call rtchunk.InsertText("Subject: ", "+Bold -Italic 10pt")
Call rtchunk.InsertText(doc.Subject(0)+Chr(0), "+Bold -Italic 10pt")

but let's look at what the result after each line of code

Set rtchunk = rtitem.DefineChunk("Text 1")

[Text 1 ==>]This is the first line of my rich text, and it can go on until a paragraph break, [Text 2 ==>]or until a font or style change[Text 3 ==>], which breaks the text into multiple records.

Call rtchunk.InsertText("Subject: ", "+Bold -Italic 10pt")

[Text 1 ==>]Subject: [Text 2 ==>]This is the first line of my rich text, and it can go on until a paragraph break, [Text 3 ==>]or until a font or style change[Text 4 ==>], which breaks the text into multiple records.

Call rtchunk.InsertText(doc.Subject(0)+Chr(0), "+Bold -Italic 10pt")

[Text 1 ==>]A fairly meaningless paragraph
[Text 2 ==>]Subject: [Text 3 ==>]This is the first line of my rich text, and it can go on until a paragraph break, [Text 4 ==>]or until a font or style change[Text 5 ==>], which breaks the text into multiple records.

This obviously ins't what we want, as the subject goes before the word "Subject:".  The problem is, as soon as we insert the text, the newly inserted text becomes Text 1.  The easiest solution, although it looks odd in the code, is to add the desired text in reverse:

Set rtchunk = rtitem.DefineChunk("Text 1")
Call rtchunk.InsertText(doc.Subject(0)+Chr(0), "+Bold -Italic 10pt")
Call rtchunk.InsertText("Subject: ", "+Bold -Italic 10pt")

[Text 1 ==>]Subject: [Text 2 ==>]A fairly meaningless paragraph
[Text 3 ==>]This is the first line of my rich text, and it can go on until a paragraph break, [Text 4 ==>]or until a font or style change[Text 5 ==>], which breaks the text into multiple records.

There are other ways, such as inserting a table and adding content to that, or adding something fixed, such as an anchor, and then inserting before that so that it never shifts, but I want to make clear that this is not a bug, but a feature.  (You knew that, right?)  Of course, it is also why OpenSesame offers a chunk which can become a cursor.  We have to learn, don't we?
Fri 13 Apr 2007, 12:25 AM
My Rich Text 101 series has been very popular, and I have thought about starting a Productivity Editors 101 series to help people with similar topics inside the Notes/Domino 8 word processor, spreadsheet and presentation editor, but the product is still in beta.  Should I hold off until the release, or should I put out "beta 101" topics to start to introduce people to features and tricks that might not be obvious?  Any thoughts?

Tags:

Fri 23 Jan 2004, 10:56 AM
Here I was under the impression that if I gave a session on something other than rich text, which everybody thinks of as "my thing", I could at least be assured of a small, quiet crowd who mostly wandered in thinking they could catch an afternoon nap.  After all, while I have done a lot of thinking and talking about "Notes/Web Coexistence", I kind of made up the term myself, so it should scarcely be a big draw.  At least, that is what I have told myself... (read on)
Tue 8 Jul 2003, 10:53 PM
One of the truly amazing things to me about the Notes C API, and in fact the whole Notes/Domino product line, is the amazing forward compatibility.  I recently came across an old copy of my @YourCommand Toolkit written for R3.3 and compiled with the R3.3 C API.  I had a test database from back then, so I tried running the database unchanged on Notes 6.0.0 (which is what I have on that machine), and it ran perfectly.  (What I do find a bit funny is that the code sorts a table in rich text, something that Lotus still does not include in Notes 6.x)

That is pretty amazing when you come to think of it.  API programs running three to four major versions after they were written.  Why doesn't Microsoft support that kind of thing?

I thought of a demo that would be fun to show at Lotusphere at my booth.  I would recompile my new @Midas Formulas to work with the earliest version of the Notes C API I could find.  Anybody know if R2 supported db drivers?  Then, I would have a machine set up with every major version of Notes from the earliest to the ND6.5 beta, and have @Midas Formulas do its stuff in each version, all with the same DLL.  Possible?  I don't know, but it would certainly be a good advertisement both for the forward compatibility of the Notes product and the Midas engine.  Heck, I might even use @Midas to create a rich text field in R3.3, for example, and then show the same rich text in each of the subsequent versions of Notes.  The trick would be, I could use features that would show up in each subsequent version, such as collapsable sections in R4, anchor links in R4.6, tabbed tables in R5 and layers in Notes 6, all created from R3.3 and showing just what they can in each version.  Would that be weird?  More important, would it make people buy @Midas or just make them think I was nuts?  That is the hard question I always have to ask myself about marketing. <grin>
Mon 29 Nov 2004, 10:08 PM
Here is one of those questions which may seem at first gasp to have a "Duh!" answer, but which may not be as obvious as it seems... (read on)
Wed 11 Jul 2007, 11:00 AM
One of the hardest things to decide when building a toolkit like OpenSesame is when to be clever, and when not to be too clever.  For example, there is functionality inside OpenSesame to render a view as a spreadsheet or a table, to render rich text in ODF format, to render an entire document as rich text and then render that in ODF, etc.

But what should the developer using this see?  Let's start with the following... (read on)

Tags:

Wed 25 Oct 2006, 08:18 AM
Last night, I wrote of using code that had last been saved and compiled eight years ago, and I confess I was somewhat proud of the upward compatibility and stability of both Notes and our Midas Rich Text LSX.  In a comment, Philip Storry directed me back to his blog for So many wasted opportunities..., where he sets me straight about the missed opportunities that are implied by this.  I'll save the best quote for you to read there, but one excerpt I like is:
If Ben did need to change the code, his complete lack of familiarity would be a major problem. Reliant upon comments that made sense at the time, and vague documentation that relies upon assumptions common before the liberating experience of developing with Buzzword 2.0, Ben will be lost if he ever does need to change this code.

He'll have his own little Y2K moment, except he'll also have to face the horror that HE is the COBOL programmer he needs to hire!
A great read, and I feel properly chastened.
Wed 24 Nov 2004, 02:42 PM
Here in the United States, we celebrate Thanksgiving Day tomorrow.  I thought I should offer up my thanks to the two behemoth corporations that have meant so much to me in recent years... (read on)
Thu 10 Jul 2003, 10:32 PM
Ed Brill loves to talk about the difference between advertising and marketing, and I was forced to think about this again today.  We have never advertised our Midas Rich Text LSX, yet it has over 800 thousand licensed client seats (I know, Ed would gripe about using seat wars, but since we have little real competition, what the heck) in 42 countries on six continents.  On the other hand...
Mon 19 May 2003, 11:12 AM
What do you do when you realize you have invented something new, but didn't recognize it for what it was?  Not quite serendipity, since I knew what I was creating, but simply didn't recognize the possible uses.

Anyway, I have started to realize that there is a lot of power in the concept I use in the LinkMatching method I mentioned before which uses a view to create cross reference links automatically.  I first added in @YourCommand for Notes R3, but I didn't realize that it might have more universal uses.  I have added several new methods into Midas 3.10 (soon to be released) which use these, include ReplaceMatching, AppendMatching, HighlightMatching and KeywordMatching, as well as the additional capabilities I built into the original LinkMatching earlier.  I mentioned some of this capability before in my second post on how Midas could help blogging, but I am starting to realize that there are uses outside of blogging.

The only problem I really see is, what do I call the darn thing?  Anybody have any idea what to call the whole concept of searching and acting on keywords derived from a view or external data set?  Keyword search?  Contextual cross references?  Simple KM? Data Mining for dummies?
Wed 23 Dec 2020, 11:23 AM
Inline PNG image
 
In my last post, Out of Notes revisited with Exciton, I described a current customer's requirements for getting data from Domino with Exciton Boost's REST API, and promised I'd make a couple of videos showing how to accomplish these specific tasks using our Curb Appeal sample db. This first video takes you through the whole process using POSTMAN, a free development and testing tool popular with mobile/web developers who need to send requests and record responses. In it, I will show the URL endpoints, URL parameters, and HTTP headers used to accomplish each task.
 
Here are the nine tasks, restated slightly to clarify, and with a brief description of what is being demonstrated. (If you would like, you can request an Exciton Boost evaluation license and follow along the steps yourself. I think could provide a Postman collection to work with.) UpdateCheck out the companion blog post with exact requests and sample code.
 
Task 1: Get list of accessible views
Returns a JSON array of objects, one for each view that is included, implicitly (all views) or explicitly (specified views), in the Exciton configuration db and marked as discoverable. Exciton is strict about data security, so views may be accessible but not discoverable. Views not included are inaccesible and will return a 404 error.
 
Task 2: Get view with columns & metadata
Returns a JSON array of objects, one for each document in the view. Each document includes a link to get the document from the documents collection as well as item values for each view column. Note that there are parameters to page through the view if desired.
 
Task 3: Get filtered view
Returns a JSON array of objects, a subset of the full view filtered by a key match with the first view column. There are alternative ways to filter the view, but this is easiest.
 
Task 4: Get all items from the document
Returns a JSON object containing each item found on the document, or at least all allowed. Items may be explicitly allowed or disallowed in the configuration database, or all may be allowed by default. Some items such as time/date, author and reader fields, and rich text items will be represented by subobjects. Rich text fields are rendered to high fidelity roundtrippable HTML.
 
Task 5: Get only selected items
Using an item list via URL or HTTP header, the request determines which items to returns in the JSON object. In addition to actual items, the request may use Notes formula language to create additional items or may use filtering to get subsets of rich text items.
 
Task 6: Add selected items to view results
Going back to the view, the request can include either additional or replacement items for the view columns using an item list via URL or HTTP header. This allows retrieval of any allowed items with the view results, including rendered rich text items.
 
Task 7: Get RTItems (as a list, as individual rtitems in JSON, as rendered HTML pages, or rendered HTML fragments)
Explores some of the different ways to retrieve rich text.
 
Task 8: Get image from rich text (either as an <img> link or as components in a JSON object, either allowing binary retrieval of the image from the server)
Depending on what exactly is needed, different ways to retrieve an image as a link back to the Domino db.
 
Task 9: Get image data URI
Retrieves an image as an <img> link with the data URI included, so that the entire image is local. The dataimgs parameter shown can be used for any rich text or document retrieval so that the rendered HTML has the images locally available without any requirement for the Domino image to be accessible.
 
Note: Accurate closed captions will be provided shortly.
 
 

Tags:

Thu 3 Apr 2014, 07:22 PM
Back in October, I announced that we were changing the name of the Midas Rich Text LSX to the Midas LSX after 16 years. Today, I announced that we were changing the name of CoexLinks to Coexlinks Fidelity after 11 years. Which brings up the obvious question, what will we call CoexEdit when we announce a new major release in a week or so?
 
I'm thinking Bruce. Not for any practical purpose, only philosophical ones. Just to keep it clear.
 
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

Tags:

Tue 12 Nov 2013, 09:35 AM

Inline JPEG image


Finally, a real book (I hope I haven't cried wolf too often). I decided to demonstrate how the Instant Ebook sample works by taking a popular, and still surprisingly accurate and useful, set of articles I wrote about Notes rich text starting ten years ago and updated occasionally to reflect version changes. I made a few more updates, pasted each of the articles into the Instant Ebook sample, added the cover you see above and pressed the button. In less than a second, the ebook was available, so I published it over on Smashwords as a free ebook. You can click on the cover above or go directly to Rich Text 101 on Smashwords and download it from there. (The download is not the huge Download button on the right on Smashwords, but the small Download link at the bottom of the page where the huge Download button takes you. Perhaps I need to write User Interface 101 for them.)

In addition, the Instant Ebook sample comes complete with the entire Rich Text ebook exactly as I generated it. Of course, you will need a Midas LSX evaluation license and the Midas LSX software to try it out, but the database can be downloaded and looked at without those if you are just curious.

But now it is your turn. Is there a series of articles you might want to put together, a presentation you might like to solidify and turn into a short ebook, a set of code samples already formatted you would like to get in the hands of more people? All you need is the content, because the sample doesn't require even owning Domino Designer. Installation is as simple as copying the DLL and license into your Notes executable directory, or you can add them to the Midas in a Minute sample and let your users auto-install the Midas LSX and license.

Inline JPEG image

Tags:

Mon 4 Jun 2012, 03:53 PM
In my last two posts on XPages and attachment icons, Part 1 and Part 2, I stayed entirely within XPages, but many XPages databases including the default discussion database template use both traditional Notes rich text for the Notes client and XPages for the web. In addition, people have years worth of documents already in traditional Notes rich text.

A large part of the reason for adding attachment support to CoexEdit 3.0 is to handle this situation. The following two documents were created to be exactly the same, but one was created in the standard way without CoexEdit. You can see how the attachments show on the web. The second was created with CoexEdit running, and you can see the icons in the body as they were on the client. As I showed before, these fields can be edited with full preservation of the file attachments. Finally, I show how CoexEdit can handle the old documents created without CoexEdit so that even they appear as if they were created with CoexEdit.


Combo XPages/Notes rich text discussion

Inline JPEG image


Identical documents created from Notes client rich text, one without CoexEdit (current standard) and one with CoexEdit

Inline JPEG image


The document created without CoexEdit as it normally appears in XPages on web:

Inline JPEG image



The document created with CoexEdit opened in XPages on web 

Inline JPEG image


Finally, the document created without CoexEdit  but opened with CoexEdit running as it appears in XPages on web:

Inline JPEG image

Wed 13 Apr 2005, 02:28 PM
Recently, on the Notes 6 Gold forum, Torben Sorenson asked about replacing the rich text applet :
When editing a document in web browsers, richtext fields are edited with the standard richtext applet.... we want to create tables, pictures etc. but that can not be done with the standard applet.

Does anyone know of an applet that does can do that?
And how to replace the standard applet with another one?
and I replied with a bit of information about CoexEdit and rich text editors for the web.  Andre Guirard, who works for IBM and answers a great many questions, posed a one liner Ben, do you dislike the "Best fit fit for OS editor"?, and I answered that I had not had a lot of success with it.  But in retrospect, I do think the topic deserves a better response.  I greatly appreciate that IBM is working to address some of the concerns with rich text editing, both in Notes and on the web, and this was clearly an attempt to address that need.  Unfortunately, there are a few problems... (read on)
Tue 22 Mar 2005, 02:18 PM
A popular idea these days is the concept of "degrading gracefully".  No, this is not related to "aging with attitude" or other aphorisms we forty-somethings use to distract from the sagging and bulging of our approaching, but never arriving, middle age.  This is the idea, popularized with web design in general (and CSS in particular), that when people do not have the same specifications, software version, browser type  or what have you, that you, the designer, intended, their experience should be less like falling off a cliff and more like gliding down a slope.  If I happen to have Internet Explorer, and the site was designed for Firefox, I may not have every bell and whistle, but my experience should still be smooth, and I should not necessarily be aware of the loss of function.  A good description of this, and how it extends to other parts of the IT experience, is written up on Flashes of Panic under the title Degrading gracefully  

I have been dealing with this concept, if not the particular terminology, for years when dealing with Notes rich text, but in CoexEdit, it is of even more paramount importance.  What happens when a client edits the rich text from Safari on a Mac?  What happens when the database is replicated locally and edited by someone who does not have CoexEdit, then replicated back?  What happens when the company decides to standardize on an ActiveX editor, and a user accesses with a browser on Linux?

(read on)



Fri 14 Nov 2003, 01:23 AM
Yesterday, I blogged about re-inventing the wheel.  It was a very long post, so I'll keep this relatively short.

I am busy creating a new demo for the @Midas Formulas beta release, and it just feels... different. (read on)
Mon 4 Feb 2008, 01:58 PM
Reflecting the fact that a large number of Genii Software's customers are, and always have been, from outside the United Stated, we are now listing prices for all our products in U.S. Dollars, Euros and British Pounds.  Requests for quotes in other currencies will be handled on a case by case basis.  Due to the fluctuation in currencies, we will recalibrate our prices more frequently, probably on a quarterly basis.  See the newly revised pricing pages: CoexEdit pricingCoexLinks pricingMidas Rich Text LSX pricingMidas Rich Text C++ API pricing.

Any customer outside the United States may choose which currency is to be used for quotes and payment.  Continuing our current policy, payments made by check must be denominated in U.S. dollars drawn on a U.S. bank or bank with U.S. presence.  Once a currency is chosen, that same currency must be used for subsequent maintenance payments.

It is our hope that this move will help customers who need published prices in their local currency, or at least in a currency other than U.S. Dollars.
Mon 17 May 2004, 04:45 PM
The third reproduced and fixed bug due to the SWAT team's reporting was found.  Incidentally, my wife object's to the SWAT team concept, because, as she says, "You fix the bugs - they don't!"

Well, I know what she means, but I have to say, the credit goes largely to anybody who can identify and reproduce the bugs.  This doesn't just go for the four companies in this group, it goes for any person at any company who can identify and create a reproducible bug.  All kudos to them.  I'll work as hard as I need to to get the bug fixed once it is identified.  For that very reason, I have another customer who seems grumpy because of a bug they have found that I haven't fixed yet.  You know who you are - and I'll have it as soon as I can.

Anyway, this was actually a bug with rich text to HTML that the company identified.  In certain configurations, when the very first line (or really, paragraph) is centered in rich text, it doesn't get centered in the HTML.  Actually, the problem is even bigger than that, since almost no paragraph attributes were carried into the first HTML paragraph.  This is fixed.

Success #3
Tue 28 Sep 2004, 10:18 AM
There are plenty of places reporting on our press releases for @Midas Formulas and Midas Rich Text C++ API, but one that surprised me was Wikiverse showing this press release under the Java Programming Language... (read on)
Tue 8 Jun 2004, 02:19 PM
Had an interesting discussion in the BP forum about when tables and layout regions were added to Notes.  Some people thought in R4, but I knew it was at least R3, because I added the ability to sort tables in rich text in our @YourCommand Toolkit in R3 (and IBM still doesn't have that in either formula language or LotusScript in 6.5 or even in the ND7 beta - hah!) which was part of the first motivation for building Midas, and the first functionality I added to Midas back in 1996.  Layout regions seemed newer.  While out scouting for an answer (and proof I was right), I happened upon one of those gems which I am sure I have seen before, but had completely forgotten... (read on)
Sat 1 Jan 2005, 08:00 AM
It is funny how certain areas of functionality become hot all of a sudden.  Recently, there have been a whole spate of people trying out our on-line Review It! demo, which shows the Midas Rich Text LSX doing a red-lined comparison of two rich text fields, highlighting what was deleted and what was added, and that sort of thing.  While a whole bunch appear to be from one person (who I strongly encourage to request a Midas evaluation license to try this out personally), there have been increasing numbers from various parts of the world.  I thought I'd take this opportunity to explain this feature for those who aren't familiar with it... (read on)
Thu 19 Feb 2004, 11:08 PM
Nothing unusual about the fact that it is taking unusually long to finish the latest (and probably last) @Midas Formulas beta.  Development  always takes longer than I expect.  In any case, I decided to put up a demo so that those long suffering beta testers (and the rest of you) can have something solid to look at rather than just listen to me blab on about it.

As I have mentioned before, developing with @Midas feels quite different than developing with the Midas Rich Text LSX.  In fact, the on-line demo I have added is the one hinted at back in November in my post @Midas demos feel quite different... (read on)
Thu 17 Jun 2004, 10:55 PM
No matter how much you love Lotus Notes (and I can work up quite a bit of enthusiasm), you have to admit that a good Lotus Notes developer better be ready and willing to workaround a few of the, shall we say, "oddities" in the software.  I have worked around a number of "features" myself, but I am not always the best person for this.  I have met a few pros in my day, and Rocky Oliver has to be one of them.  He is a wizard with formula language and a virtuoso with LotusScript, as many who have seen him speak can attest, but above all, he has a knack for solving problems with whatever works, even if it isn't the obvious.

Anyway, Rocky called me today because he was experiencing a problem with an application... (read on)
Thu 11 Mar 2004, 10:17 PM
I am getting increasingly excited by our new @Midas Formulas.  I originally thought of it as just Midas for formula language, and it is that, but it is more as well.  I hope some of the beta testers can take it ways I haven't thought of as well.

Maybe you are satisfied with your rich text table just looking good, like this wonderful plate from the Residence of the Bavarian Kings in Munich.  Maybe looking at it is enough for you.


But, if you want to do more than look, and see how a rich text table can become true data, not just a pretty blob, using simple formula language calls such as: 

delegates := @Sum(@DbColumn("Midas":"NoCache"; ""; @DocumentUniqueID; "Body"; 4; "SkipTitle=2 Format=Number"));

then sign up for our beta by filling out the beta request form and we'll send along a beta license.  Come on, you know you want to give it a try! 
Fri 4 May 2007, 12:40 PM
In my quest to provide true integration between Notes and ODF (a.k.a. tilting at windmills), I have put together code that builds and modifies spreadsheets, presentations and word processing documents, but I have also put in a fair amount of time converting rich text to ODF and back.  While it is certainly not finished, I have enough done to test performance a bit.  As many regular readers here know, I am a bit of a fanatic about performance, believing that it is better to build scalability in from the beginning.

But what is the milestone or goal at which I should aim?  Right now, I can export about twenty reasonably diverse documents a second to ODF files (albeit with weird memory leaks and all the other fun factors of early development).  The fidelity is good, but is the speed reasonable?  If I convert rich text to HTML, I can do over 400 a second, but that is not saving anything to disk, and I haven't tested that way with ODF yet, since it is a less likely scenario.  Obviously, if this is a once at a time export to get into a productivity editor, the speed is fine.  But is there a scenario where companies will export hundreds of thousands of documents?  Or, is there a scenario where on-the-fly conversion will make sense, as in CoexEdit?

I don't know.  I don't even know how to know.  Sigh!  I guess I'll just keep making it faster until I run out of patience with that process.  Anybody have an opinion?

Wed 29 Sep 2004, 09:45 AM
John Roling (aka Greyhawk68) invited me to speak at the GRANITE User Group meeting in Chicago next Monday, October 4, and I gladly accepted.  It is a mix of admin and developers, so I will talk briefly about CoexLinks and then more extensively about the Midas Rich Text LSX, with lots of live demos.  A new twist for me is that I can show how the Midas Rich Text C++ API and @Midas Formulas fit into the Midas picture, and show a couple of quick demos of those.  

I intend to keep it fairly informal with lots of room for questions and discussion, and I hope it is both fun and informative.  While I've spoken at a number of conferences big and small, I've never spoken at a User Group meeting before, but I would like to do that more.  (Any of you in user groups out there who would like to have me talk, take note!)

If any customers or potential customers would like to meet with me while I'm in Chicago, get in touch soon, as I am only planning a day trip right now.
Fri 20 May 2005, 09:20 AM
Feedback so far is positive, with only a relatively few gotchas.  

1) Some GIF images show up with the incorrect dimensions (really, really, really big), which we will fix in a patch release shortly.  

2) It is hard to get local images into the rich text editors, because Domino doesn't want you to load them to the server, but the server can't see the local image.  There will be a dual fix for this with a small change to CoexEdit for the patch release and a change to the rich text editors to allow loading the image as an attachment.  Both should be out shortly.

3) Besides that, the only reported problem was with tables turned into tags after local editing, and it appears that may be due to a beta version on the client with a Gold version on the server.

Positive feedback has been comments such as 
Works well with both Internet Explorer and Firefox.  Nice job!
and 
If it keeps working this well, we may move a lot more of our apps to the web.
Not sure how I feel about that latter response, but any positive feedback is good to hear.

Any other CoexEdit evaluators want to weigh in with your opinions?  There are quite a few of you now, although there is always room for more.
Thu 2 Jul 2009, 10:46 PM
Many of you are probably sick to death of iFidelity, unless you are some of the ones who have gotten your free Business Partner license or those who are evaluating it.  Nonetheless, I bet this will still impress you - it practically knocked my socks off.

A customer wrote in today, asking whether iFidelity would allow him to send a table with computed image resources as cell backgrounds in several different cells.  I'm still researching that, but while I was testing with image resources and such, I happened upon the Report It! sample db which I created for our Midas Rich Text LSX years ago (and blogged about five years ago), and I decided to dare myself.  What would happen if I sent these highly complex rich text reports through the mail using iFidelity?  Watch and see (I only show the results for one report, but would be happy to show any of the other three - the results are equally or more compelling).


Vertical Bar Chart - As created by the Midas Rich Text LSX, this is a series of image resources sized to different heights.  The total number of units sold per state is shown at the top of each bar, and if you click on the bar or mouse over it, the invoice quantity is shown (I clicked on PA for this image):


Original rich text report


(read on) to see this report rendered by Notes and iFidelity.

Tags:

Mon 17 Nov 2003, 11:14 PM
A potential customer was evaluating our Midas Rich Text LSX recently, and commented that the documentation was great, but he wished there was one place where it listed the top ten ways to use Midas.  Now, I am not a big fan of top ten lists, especially the Dave Lettermen "Top Ten Stupid Pet Tricks" variety, but the customer is always right, so I decided to try creating a top ten list.  To give this list more lasting value, I'll try to post one post each day and provide some explanation and links to relevant sample code and Help documents.  Starting with #10...
Wed 4 Aug 2004, 07:29 PM
I have gotten a lot of hits recently originating from a post I made in the Gold forum about bar charts... (read on)
Fri 24 Feb 2006, 11:10 AM
One thing I find really annoying in Notes is that when new interface options are added, particularly in rich text, they are often hidden. For example, how do you create these sections?

(read on)
Tue 10 Jan 2006, 11:36 PM
A couple of years ago, I started this list... and only made it part way through the list due to time constraints.  With ten days left until I leave for Lotusphere 2006, I decided to reprint these and, I hope, finish off the list.  In addition, I will update the topics to reflect changes in the past couple of years...

A potential customer was evaluating our Midas Rich Text LSX recently, and commented that the documentation was great, but he wished there was one place where it listed the top ten ways to use Midas.  Now, I am not a big fan of top ten lists, especially the Dave Lettermen "Top Ten Stupid Pet Tricks" variety, but the customer is always right, so I decided to try creating a top ten list.  To give this list more lasting value, I'll try to post one post each few days and provide some explanation and links to relevant sample code and Help documents.  Starting with #10...


#10) Rich text comparisons with red-lining

Description
Midas enables rich text comparisons in two modes.  The comparison "with deletions" shows both additions and deletions.  It is generally considered the "Approver" view, since it allows a person approving the modifications to see what is removed as well as what is added or modified.  The comparison "without deletions" shows additions and modifications, but not deletions.  It is generally considered the "Public" view, since it allows the public to know what is new is a document without emphasizing what has been taken out.

History
Rich Text comparisons were introduced in Version 1.4, released in July 1998.  The functionality was developed as a custom enhancement at the request of a company in the UK that wanted to highlight changes to policy documents.

Comparison with standard Notes/Domino functionality
Standard classes in Notes/Domino have no rich text comparison ability at all, and there is no talk of adding such functionality.  Customers wanting such functionality sometimes resort to exporting data to MS Word, with all the data loss that entails, and doing the comparison there.

Documentation
Documented in the Midas Help database by looking at the Contents view and going to 04 Midas Classes/04 GeniiRTComparison.  Start with the GeniiRTComparison class and look at the various properties.  Also look in particular at the Compare method.  Also, take a look at the Working with rich text comparisons document (02 Reference Guide/02 Working with/Working with rich text comparisons), which lists the assumptions and rules under which comparisons are made.

Screenshot (from Review It! sample db - see below)
Screenshot of reviewed text

On-line demo
Review It! On-Line: An adaption of the downloadable Review It! sample demonstrates the Midas Rich Text LSX doing red-lined comparisons on the web. A slightly modified version that uses the rich text applet is also available upon request.

Sample Database
Review It! (Notes client, Web browser) Richtext comparison, Red-lining
Example shows how to use the red-lining rich text comparison features of the Midas Rich Text LSX both in the Notes client and on the web.

Sample Script Snippet
This is adapted from a customer's script, and is very similar to that of the on-line Review It! sample:

Dim cmp As New GeniiRTComparison
Dim flag As Variant

cmp.InsertionFont = "Blue"
cmp.InsertionTagFont = "Blue Superscript Roman"
cmp.DeletionFont = "Red +Strikethrough"
cmp.DeletionTagFont = "Red Superscript Roman"
cmp.TableRowDeletionTag="(-Rows)"
cmp.TableRowInsertionTag="(+Rows)"
cmp.TableColumnDeletionTag="(-Columns)"
cmp.TableColumnInsertionTag="(+Columns)"
cmp.BitmapDeletionTag="(-bmp)"
cmp.BitmapInsertionTag="(+bmp)"
cmp.SectionDeletionTag="(-section)"
cmp.SectionInsertionTag="(+section)"
cmp.DoclinkDeletionTag="(-link)"
cmp.DoclinkInsertionTag="(+link)"
 
cmp.IdentifyFontFaceChange =False
cmp.IdentifyColorChange = False
cmp.IdentifyBoldChange = True
cmp.IdentifyItalicChange = False
cmp.IdentifyPointSizeChange = True
cmp.IdentifyUnderlineChange = True
 
Call cmp.RTItemOriginal.ConnectBackend(doc.Handle, "BodyBefore", True)
Call cmp.RTItemRevised.ConnectBackend(cmp.RTItemOriginal.Handle, "BodyAfter",True)
Call cmp.RTItemCompared.ConnectBackend(cmp.RTItemOriginal.Handle, "ApproverBody",True)

' *** First, create the comparison "with deletions" into the ApproverBody field ****   
flag = cmp.Compare(True)
 
' *** Second, create the comparison "without deletions" into the PublicBody field ****    
Call cmp.RTItemCompared.ConnectBackend(cmp.RTItemOriginal.Handle, "PublicBody",True)
flag = cmp.Compare(False)
Mon 16 Jul 2007, 03:01 PM
Alan Lepofsky has one of his very useful reminder posts, this one about Highlighters, a handy but underutilized feature in the Notes client.  At the end of the post, he points out a couple of caveats:
Before you ask...
1.) No, highlighting does not work on documents sent to the internet.
2.) No, there is no toolbar icon for them.  (I've only been asking for this for about 5 years!)
I can't do much for you about the toolbar icon, but I thought I should point out that if you use our Midas Rich Text LSX or Midas Rich Text C++ API, this highlighting can be preserved for the text.  Let me repeat and emphasize that: this highlighting can be preserved for the text.  Just thought you should know.
Thu 13 Feb 2020, 11:29 PM
Inline JPEG image
 
I don't respond to ideas like this because it would be self-serving, but it is entertaining to go back and look at when we added such functionality. In this case, we expanded the AddLink method to allow formatted URL hotspots in R5 in 1999, because that is when the web took off.
 
Just one of hundreds of methods and properties that allow you to control Notes rich text, and so much more, using the Midas LSX. What will people be requesting in 20+ years that we already have? I guess we'll have to wait and see.
 
 

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.

Tags:

Wed 19 Jun 2013, 03:37 PM
This is the first in my new series, Out Of Notes, which shows how the Midas Rich Text LSX can be used to take data out of complex, structured Notes documents and use it elsewhere. Whether a company needs to send small snapshots of documents usable outside of a Notes environment, or needs to export all of its data to an external system such as Sharepoint, they need the data in some different format. Midas allows high fidelity, flexible exports in a variety of formats. The one shown here is the Microsoft Web Archive format (*.mht), which is only visible in Internet Explorer, but which is a very handy single file format containing images, formatting and data together. Future videos in the series will show exports to structured columnar formats such as .csv, ePublishing formats such as EPUB, word processing formats such as MS Word and display formats such as HTML. In addition, the ability to create collections based on selection, view or formula and tied together with exported views will also be shown.
 
Note: Accurate closed captions have been provided, and if English is not your first language, you might want to turn on the auto-translate.
 

Tags:

Wed 17 Apr 2013, 05:52 PM
It's hard to believe that it was only a month ago that I posted my Elevator Pitch demos post in which I suggested that very short Youtube demos, like an elevator pitch compared to a full presentation, might have a special appeal to people. Since then, I have produced fifteen of these short videos (plus a longer one for the Crystal Coex story) averaging under two and a half minutes. Those videos have accumulated 2500 together with momentum growing all the time. Several have been on Gimp 2.8, the FOSS image processing software which is roughly comparable to  Photoshop. Others are on the Midas Rich Text LSX, CoexLinks, Notes 9 and general rich text topics. I expect more of all of those in the future, but I think the concept has been validated. People like short and sweet videos.
 
My latest among the Gimp 2.8 mini-lessons is below, but you can see the whole playlist at Gimp 2.8 mini-lessons playlist..
 
 
 
Tue 10 May 2011, 01:26 PM
I was chatting with Bill Buchan today, and as I looked up a fact related to his tweet, I realized that our Midas Rich Text LSX Version 1.00 was published Aug. 6, 1997, which is only 37 days after J.K. Rowling published Harry Potter and the Philosopher's Stone (renamed for U.S. audiences as Harry Potter and the Sorcerer's Stone).

The only possible connection I can find between the two, besides the fact that selling Midas worldwide has sometimes felt like a magical journey, is that both franchises are going strong almost 14 years later.

See, I told you it was utterly useless trivia.
 

Tags:

Wed 27 Jun 2007, 05:00 PM
One of the features I really like in CoexEdit 2.0 (in final testing - not out yet) is the Style sheet support.  FCKeditor has a default style sheet, and if you simply add it as a file resource to your database, CoexEdit will find it and recognize it and use it as well.  Drop it onto the form above your rich text field and Notes will enforce it as well, all without any programming or special settings.  Just point and click.
Tue 19 Apr 2005, 07:21 AM
Well, we are starting final testing for the Midas Rich Text 3.50 versions, so unlike any sane software company, I thought I'd invite you to send any nagging bugs, oddities and leaks to my attention now.  Obviously, I can't promise we will fix them now, but at least we can test along with the final versions and find out what is easy to throw in before complete system testing, what we can identify as "not fixed" so you won't wonder, and those wonderfully fortunate "things we fixed while solving some other problem".  Feel free to send it along, or just a reminder of it, even if you have already reported it, as it might have slipped our minds or it might have been fixed three months ago and we should really re-test it specifically.
Wed 28 Jan 2004, 01:56 PM
Long before reality TV sank down to the nadir of poor taste and then pulled out a pneumatic drill and kept going down, before Peewee Herman was caught with more than just his hand in the not so proverbial popcorn, Peewee's Playhouse was one of those guilty pleasures on television... (read on)
Mon 30 Oct 2006, 10:41 AM
I have always wished I could be a singer in a rock band... but, alas, I am tone deaf.
I have always wished I had that artistic touch... but, alas, I am both color blind and my people are indistinguishable from prairie dogs.
I currently wish I could design websites... but, alas, they are better left to others.

I guess I better stick to being a guru of Notes rich text... much less competition and no natural limitations.
Thu 12 Feb 2004, 09:16 PM
A couple of the new beta testers for our @Midas Formulas have asked for a "for Dummies" run down of how to use @Midas Formulas.  I have never actually read one of the "... for Dummies" books, so instead I'll take my inspiration from Tom Duff and Joe Litton's excellent presentation at Lotusphere 2004, BP117 - Java for Lotus Domino Developers.  One of the best things about the presentation was that it made LotusScript developers realize how much they already knew about Java development in Domino, because they already knew the object model...
Thu 15 Nov 2007, 10:10 AM
I was talking with Nathan Freeman last night, because he and Chris Blatnick have done such cool things with layers and embedded editors, and he told me a tidbit I should have known about embedded editors, and I told him about a bit of functionality our Midas Rich Text LSX has that he didn't know about, and...

I went and made dinner, as a good husband should.  But after dinner, and after the kids were settled, I got to thinking...

Maybe in a day or so, I'll show you exactly what I was thinking about.  I'm still having trouble believing it works.
Thu 23 Feb 2006, 11:09 PM
Having run into this issue twice in just a couple of days, and with a strange twist to the second time, I thought I'd mention it in case anybody is having this problem... (read on)
Wed 9 Feb 2005, 10:23 PM
On February 21-22, I will be at Das EntwicklerCamp 2005 in Dortmund, Germany.  I am giving a new presentation this year called Pushing the Limits - Building Top Notch Lotus Software Extensions.  While I have a good grasp on the technology I am showing and advice I am giving, I am looking for simple extensions I can implement so that the attendees can walk away with something useful... (read on)
Fri 7 Nov 2003, 03:50 PM
I am not sure how to categorize this post, so let's just file it under "Oddities".  While preparing for my session on Advanced Notes/Web Coexistence at the UK Admin-Developer Conference, I came across this odd behavior with CSS in the Notes client.

Showing the problem
Here is what I did to cause the problem.  I created this very simple CSS in a Style Sheet resource:

TD
{
   font-family: Verdana;
   font-size: 8pt;
}

and I inserted that StyleSheet resource into the CleanSheet form, which is basically just one big rich text Body field.  I then created a table and entered some text into the table.  Sure enough, it was in 8pt Verdana.

So far, so good.  Next, I highlighted one part of the text and tried to change the font to 12pt Comic Sans MS.  I say "tried" because it didn't work.  The StyleSheet seemingly takes precedence over even specifically applied text attributes.  

Still OK, but not intuitive.  But here comes the odd part.  Next, I previewed the text in a browser.  Guess what?  The text that I had entered in the table but not modified was still in 8pt Verdana, but the part I had tried to change was in 12pt Comic Sans MS.

So what?
OK, the reason this is stupid is because the IBM developers took a feature from the web, applied it to the Notes client, and made it work only differently in the Notes client even though there is a direct mapping to the web feature.  Or to put it another way, they made it not work properly in Notes because the specific attributes should have overridden the style.  Instead, the style overrode the specific attributes.

What is the core problem?
There is a "core problem" or really "core difference" between HTML and Notes rich text.  In HTML is that there is such a thing as "plain text", or text with no attributes.  Just add text to the HTML with no font tags or CSS and you have "plain text".  This is not true in Notes.  In Notes, all rich text has text attributes.  Thus, the CSS can't just apply to unadorned "plain text", because there is no such thing.

How could IBM address this?
One thing they could have done when implementing this is to new font setting called "Default Plain Text".  Setting text with this would let it either follow the workstation default settings (similar to how Default Sans Serif and Default Serif work) or follow the CSS, if there was any.  This would be an "ideal" solution, but probably not a good solution, as it would be hard to go back and change all the text that should be "plain text".

A more realistic approach which could still be utilized very easily  would be that IBM could simply do what they do with the web, which is accept Default Sans Serif 10pt as "plain text".  This would be easy to use, as it is already done with the web and would not require changing most existing rich text.  Anything in plain 10pt Default Sans Serif would either use the workstation defaults or the CSS.  I would recommend IBM do this for ND7, if they have not already for ND6.5 (I haven't tested it yet)

What to do in the meantime?
Be careful if you use this in the Notes client to inform users they should not change the text directly, or at least be aware of the problem so you know what is happening if you get a bug report.
Tue 30 Aug 2005, 09:41 AM
The Gold release of Notes/Domino 7 is now available on Partnerworld and Passport sites.  Our goal is to have either new versions that work with Notes/Domino 7, or certifications that existing versions work with Notes/Domino 7, within fifteen business days.  This applies to our entire product line, CoexEdit, CoexLinks and the three Midas Rich Text products.
 
 
 
Tick tick tick...
Thu 2 Nov 2006, 11:38 AM
Rich Text 2.0 logo

After joking with Philip Storry recently about Rich Text 2.0, I was worried that readers might get the impression that the Midas Rich Text LSX was not somehow relevant with all the new technologies, so I decided to post one (or more if they get interesting) example of how easy it is to use our Midas Rich Text LSX with Ajax, which is probably the buzzword of the year.  It turns out to be a pretty slick technique, so I might work on it a bit more. To try the demo, (read on)

Tags:

Thu 21 Apr 2011, 10:20 AM
It's Day 2 of our special buy one server license, get one free offer, so I thought I'd post a few demos. The first creates cross reference links using the Midas Rich Text LSX.  Many people use the Midas in the Notes client to change rich text in the front end without hanging the back end (i.e., changes aren't saved).  This demo shows that working on the web (works with traditional and XPages web interfaces). 

The MedXRef db has a view with 2,214 medical terms taken from WebMD.com. In this demo, the LinkMatching method finds any of those terms in the rich text and creates links to the relevant article on WebMD. Below, I include a snippet from a health article on CNN Health called Sad in the spring? Allergy-mood link is real. In your applications, you can create cross reference links using any view, such as part names from a product database or matter numbers from a legal brief repository. The manipulated text is not saved, so the links can even be to different things depending on the action or person invoking it. Try the two actions below and see how the results change:


(read on) to view the demo...

Tags:

Thu 30 Jun 2011, 12:49 PM
The Lotus Notes/Domino Fix List contains SPRs in various stages of the release process. I decided to use this database for a short demo of one possible use for the new GeniiRTCollection class and EPub generation. In the demo, I select certain SPR documents from the Fix List database and combine them into an EPUB file which could be sent to any mobile device that reads that format, such as an iPhone/iPad or Android device.

While the Fix List database has a public web view, this demo is intended to show how you could encapsulate Notes data without the requirement for either a web view or Notes/Domino access for the recipient. EPub data is also served up in a flow-oriented stream so that it sizes well down to the smallest device, while the automatic Table of Contents feature allows a view-like approach to navigation of the documents.

The Fix List database does not use rich text, so this is also a demonstration of how the Midas class works with a rendered form if desired. Click on the image below for the short demo:



The GeniiCollection class is a feature of the yet-to-be released Midas Rich Text LSX 5.00, and changes may be made before release.

Tags:

Wed 16 Oct 2013, 09:47 AM
Last night, Genii Software Ltd. released Version 5.00 of what is now known as the Midas LSX (formerly the Midas Rich Text LSX). This new release offers powerful features for using Notes/Domino data outside of the standard client, whether in XPages, mobile apps, portal apps and more or whether the data is to be migrated to SharePoint, Google Apps or elsewhere. Data can be exported as separate files or in capsule views.

Midas LSX 5.00 supports all Windows 32-bit and 64-bit versions of Notes/Domino from IBM Lotus Notes/Domino 6.5x to IBM Notes 9.x Social Edition.

Evaluation licenses may be requested by filling out the evaluation request form
Production licenses may be ordered through the production order form.
Midas LSX 5.00 for both 32-bit/64-bit Windows is available for download from the Midas Download page.
Existing customers with up-to-date maintenance for the Midas Rich Text LSX may request their free upgrade to Midas LSX 5.00 by contacting us at    

As a small gift to the Notes/Domino community, I have provided the IBM Notes 9 Client Help in ePub format at NotesClientHelp.epub. Put it on your tablet, phone, eReader or PC, and you'll always have Help when you need it.


Inline JPEG image

Tags:

Tue 19 May 2015, 10:20 AM
Last night, we released CoexLinks Fidelity 3.71 on our website, and today will be uploading the revised user guide and additional materials. There are a number of fidelity enhancements, support for custom forms, enhancements for right-to-left tables/sections and performance enhancements. In addition, a number of changes have been made to facilitate our upcoming public release of CoexLinks Client, an optional client component which enhances the rendering of forwards and replies which lose fidelity due to conversion to rich text. Request your free evaluation license and see for yourself..

Fidelity enhancements
While many of the enhancements are subtle by themselves, a few are more obvious. For example, buttons in rich text are now represented as inactive buttons in HTML, going along with our attempt to use standard representations for elements that map well between rich text and HTML+CSS. But enhancements can be seen throughout the product including gradient colors, enhanced border matching, tabbed table labels that retain size, font and attributes, better graphical support for section and tabbed table icons, and so forth.






Additional forms including custom forms
Prior to Version 3.71, CoexLinks Fidelity would render embedded forms, but would leave alone other forms such as the Phone Message or custom forms added by a company to its mail template. Now, when a form is sent that exists in the mail template, CoexLinks Fidelity will render it using our enhanced engine. Below is the same Phone Message as rendered by the standard Notes 9.01 email, and then as rendered by CoexLinks Fidelity 3.71. Which is likely to be helpful to the recipient?

Inline JPEG image

Inline JPEG image


Better support for right-to-left Tables/Sections
In languages such as Hebrew and Arabic, the text is read right-to-left, and so sections and tabbed tables and such are also read right-to-left. While earlier versions of CoexLinks supported this, they didn't do a great job, Now, a right-to-left section looks the way a reader would expect. (I didn't show the Notes default rendering, as it leaves the section titles off entirely, which is ridiculous.)

Inline JPEG image


Fri 28 Feb 2014, 10:06 AM
Given that our products often enhance features or patch holes in IBM's products, I may sometimes seem hard on IBM, and particularly on their rich text rendering capabilities. Over the next week, I will show a few posts which demonstrate how our CoexLinks Fidelity product corrects further issues with email, but before I do, I want to give a huge shout out to the Notes developers who worked on Notes 9. Customers have complained about rich text to MIME rendering for years, and IBM listened. Specifically, here is an example I have used often in the past, and how it looks when sent via Notes 8.5.3  and Notes 9. Note: Among my customers, Notes 8.5.3 is still the most common version out there, but Notes 9 use is growing.

The difference between the Notes 8.5.3 and Notes 9 mail is night and day if you have your location document set to send as MIME so the client renders the mail. Since tables have long been one of the most visible failings in the Notes rich text -> MIME conversion, the fact that Notes 9 now renders hidden/visible cell borders, cell border thickness and cell border color is a huge improvement. For sake of comparison, I also included the rendering sent from Notes 8.5.3 using the new CoexLinks Fidelity, and while there are few marginal improvements in exact font sizes and the text highlighting, for example, I wouldn't have written the product for this alone. And while it may be nice that Notes 8.5.3 users can also have this fidelity, an upgrade to Notes 9 would do it as easily and with other benefits.

Fortunately, there are other excellent reasons for companies to use CoexLinks Fidelity, but in the interest of general acceptance of IBM Notes 9 Social Edition, I applaud IBM and its developers. I'd far, far rather provide enhanced features/functionality than repair holes and defects, and this is a big step forward.

Correction: While this wonderfyl rendering is in the Notes 9 client, the rendering I thought was 8.5.3 was actually Domino 9.0.1 (rendered by the server rather than the client). The Notes 8.5.3 rendering is still not good, but it is not as bad as the Domino 9.0.1 rendering. Sigh! Still more work to do for IBM. At least we know the code already written.

Inline JPEG image

Inline JPEG image


Inline JPEG image

Inline JPEG image

Correction: This is actually the Domino 9.0.1 rendering:

Inline JPEG image
Wed 14 Sep 2011, 07:37 PM
I am working on a project for a customer, and part of it entails finding (and fixing) images in Notes rich text fields. Have any of you had problems with corrupted, partial, missing or broken images? Ever seen the following message?

Error message

If you have had, or are currently having, any problems with broken images, especially on pasted in images, let me know. If you have discovered what corrupts the images (other than editing on the web or going from to MIME and back, which are different problems), I'd love to know that as well.

Tags:

Mon 2 Feb 2009, 11:47 PM
The rules are simple.  Without testing before hand, make a prediction about a MIME rendering problem (in other words, mail getting sent or iNotes mail being read that isn't sent or read well), preferably one I haven't already identified.  For example, I'll make a couple more and then test them...

(read on) to see new predictions and rules for the game.

Tags:

Wed 25 Feb 2009, 08:32 AM
I was interested to see Robert Ibsen Voith posted a free tool to do a couple of things that our Midas Rich Text LSX already does.  Robert has previously dabbled in competing with Midas for image manipulation, and I imagine he has had and will have some success as a cheaper, or in this case free, substitute.  It got me thinking about free competition, something I have dealt with before with the Exchange Connector competing with CoexLinks, for example.  It doesn't much bother me, and if this saves somebody a bit of cash in these stretched times, more power to them.

Before you run out and choose this over Midas, I would mention the following items to think about:

  • Midas has a bit more history and experience with these functions.  Fixing server hints was in Version 1.00 (released in July 1997), while fixing hide-when formulas was in Version 1.50 (released in March 2001).
  • Midas has been licensed to over one and a half million clients in 47 countrues, and has been tested and honed under fire by some of the largest, smallest and most demanding companies on the planet for over a decade.
  • Midas does not require reliance on the Notes C++ API, which has reported bugs and memory leaks when it comes to rich text handling.
  • Midas is available on multiple operating systems for versions R5 to ND8.5.
  • Midas does not require adjusting environment variables or installing any DLLs but its own.
  • Midas will handle doclinks that are in the rich text (such as those created by LotusScript) and not just ones in the $Links.  It will also handle the popup hint and other issues not addressed in the free tool.
  • These are but two of the well over 150 functions handled by Midas.
  • Robert doesn't have the irrepressible Mike Midas to illustrate the hide-when problem, as in Carrying Concealed (case file) back in 2004.
  • Midas does not have to include warnings such as "A word of warning; While the DLL has been reported to be stable, some problems may still exist, and thus you should always make a backup of your database in question before  attempting to use this DLL."


Nonetheless, it is encouraging to see others working with rich text.  Free is free, after all, and that is something many can afford right now..

Update: this may have come off as overly obnoxious.  I am glad that Robert and others are creating tools to help the community, and I know they are not really a threat, but my instinctive capitalistic nature makes me leap at the chance to promote my own product.  I apologize if I came off too harshly, or seemed to discourage tool development.  I am sure there are those for whom these tools will be perfect, and they probably are not in the market for Midas for a one off solution of this kind anyway.  So, full steam ahead on the tool development (although I can't promise I won't be slightly obnoxious in defense of "my turf")

Tags:

Wed 2 Jun 2010, 01:43 PM
Today, Genii Software is releasing a new product, @Midas Lookups, which will be free for use by anyone in the community.  (Those who have been watching Genii Software for a few years will recognize this product as an updated subset of the @Midas Formulas.)  The product is available today for Windows 32-bit and Windows 64-bit, and we anticipate release of support for AIX and Linux within about a week.

@Midas Lookups allow the developer to treat rich text data as tabular data, accessible just as views are using @DbColumn and @DbLookup.  There is no registration, just a free download, although we would love to hear stories about how you use the product.  See the help, download the software and download a sample database, all on one page:  @Midas Lookups.

In addition, we are having a contest during the month of June to see who can come up with the most creative and useful formulas or applications.  Details of the contest will be posted later today, but download a copy and start thinking about how you could use this functionality in computed text on a webpage, in an action formula, in validation of rich text, used with @Do and @Transform, in xPages, etc.  Valuable and unique prizes for the top three ideas.  But first, you need the software.

As a reminder, there is no official support provided.  If you company needs official support, let me know and I'll see what we can arrange (on a paid basis, obviously).  Otherwise, go forth and enjoy.

Tags:

Fri 23 Jan 2009, 12:05 PM
In Lotus Notes rich text, just as in HTML/CSS or in MS Word or Symphony, there are different ways to create content that appear identical to the user.  It isn't always obvious what you are really seeing.  Because of that, there can appear to be very, very different results when rendering similar looking rich text as HTML or MIME.  For example, look at the following five similar looking "tables".  If the text in the middle did not explain what each was, you might think they were identical, but instead they are a mixture of paragraph and tables with borders on and off in various configurations.  (If you didn't know, more recent versions of Notes allow a paragraph to have borders, which can be quite handy)  Besides these, I could have used other techniques such as a combination of two layers or an an image to make the same appearance, but the ones I chose are used far more frequently and casually, so they make a better test case, in my opinion.

After emailing this content to Outlook 2003, the different renderings become obvious.  Perhaps most annoying, the renderings are different between the Notes client rendering and the Domino server rendering.  Of course, I added the iFidelity rendering at the end, just to poke a fork into it.

(read on) to see the various renderings.

Tags:

Thu 30 Nov 2006, 05:18 PM
If I've said it once, I've said it a hundred time, companies that want to succeed today need to understand software coexistence.  While IBM and Microsoft and others fight for dominance and talk about "wins" and "win-backs" and that sort of thing, the reality for most companies today is not whether to use one vendor's software or another's, but how to get the software from each vendor to work together.  Domino with Exchange, Notes with Sharepoint, anything with Blackberry Enterprise Server, and on and on.  Since we switched from being a "rich text tools" only company to providing "coexistence solutions", our growth has been phenomenal.  Domino customers use CoexLinks to empower workflow on their Blackberries.  Sharepoint or web customers use CoexEdit to empower rich text editing integration with their Domino backends.  And so on.

Proposion Software

But it sometimes feels like the message isn't getting through to many Notes/Domino ISV's, who want to be one vendor zealots.  But it certainly got through to one company...

(read on)
Wed 10 Sep 2003, 12:19 AM
As I am sure many of you are aware, our Midas Rich Text LSX has evolved a lot over the past few years.  You can work with all sorts of structures in rich text on documents, as well as with rich text in design elements such as forms, image resources and such.  Nonetheless, the biggest area of growth and new usage is in HTML generation for one purpose or another.  Companies use Midas to project better HTML on their Domino websites, to export Notes content to MS Word, to migrate out of Notes entirely, or to save snap shots of Notes data for those without a Notes client.

We are constantly working to find better ways to represent Notes rich text, especially as we are more and more likely to render a form along with the document.  One issue which seemed unimportant when simply rendering documents without forms was tabbed tables.  Domino handles tabbed tables somewhat poorly, and their approach requires that you have Domino behind the HTML to serve up the pages, but that is not an adequate solution for customers moving data out of Notes to SQL Server, or to stand alone pages, or even to Domino websites.  Therefore, we are working on ways to represent tabbed tables using CSS and JavaScript, with results such as that below.  Please note that this is implemented in an interim release, so is not available yet in 3.10.  Also, it has some slight quirks that we would like to work out before releasing the functionality.

Those of you who have seen my Fix Lists in the BP forum may recognize the tabbed table below as a snippet of one of those nested tabbed tables.  Midas will generate HTML that will, work with nested tabbed tables, but I didn't want this demo to be too heavy.

So, the question is, would you want to use this approach, or do you have a better one?  Does it work in your browser?  Is this the best thing since sliced bread, or are we creating more chaos?  Let me know what you think... (read on for demo)
Mon 22 May 2006, 11:28 PM
After a heroic effort by Chris Byrne to finish up the design for the Midas Rich Text LSX on-line Help database with a slick new web presence, I am adding the design into the live database.  Mostly, it is in place, but there is a bit of housekeeping to make sure all the links work and that the specialized features work with the customized HTML generated.  I'll blog a bit in the days to come about how this was accomplished, but for the moment, please excuse any oddities in the functioning of the on-line db.

Updates to the CoexEdit on-line db will follow once I figure out how the heck Chris got this to work.  AJAX is not my area of expertise.
Mon 8 Mar 2004, 11:39 AM
...but I had no idea how small.  Mercedes Benz, a Midas Rich Text LSX customer for what it is worth, displayed this ulta-mini in their display window.  I would so not fit in that.  I'm not sure even Team-TSG would.

Wed 2 Mar 2005, 02:30 PM
One of the challenges of selling development tools is understanding the mind set of those who are likely to evaluate your product.  Different types of development tools are of interest to different types of evaluators.

For example, our Midas Rich Text LSX is evaluated by a wide range of developers, including many with relatively little programming background.  Those evaluators want a sample database that "does the job", so our Send It! sample is extremely popular, as our the Export to HTMLExport to MS Word, etc.  These samples do the job the evaluator wants to do, so he or she simply has to figure out how to fit the code within their own application.

The Midas Rich Text C++ API is a very different tool, even though the two products share the same engine underneath.  People who evaluate a C++ API are very likely to know C++ (or very likely to be frustrated if not), so we can assume a much different level of programming background.  Which brings is to my question... (read on)
Tue 7 Nov 2006, 02:33 PM
Turtle Partnership logo
Back in June, I announced that we had agreed with The Turtle Partnership to provide primary support for CoexLinks due to its phenomonal success, thus providing a deeper resource for all customers and easier access for our numerous customers in Europe and Asia.  I am glad to report that the arrangement has been an unqualified success, and that we are therefore expanding the relationship to have the Turtles, as we like to refer to them, provide primary support for CoexEdit and our Midas Rich Text products, and generally handle "customer facing" support activities for us.  Genii Software will continue to be in charge of marketing and sales, as well as secondary support and research and development.  Over the next few months, we will be shifting various activities to the Turtles, but this move should be seen as an extension of our current support, not an alteration. We will still be here, but better able to focus on new development and enhancements to our existing products.

E-mail support will be provided twenty four hours a day, and is recommended, as it allows both support groups to access the information provided and respond in a timely manner.  E-mail should be directed to the support address for each product group:

E-mail support for CoexEdit:  
E-mail support for CoexLinks:  
E-mail support for Midas Rich Text LSX, Midas Rich Text C++ API and @Midas Formulas:  

If you have difficulty getting a response in a reasonable time, you may contact our old support line at , but please start with the addresses above.

Phone support will be available from 8am to 6pm GMT, or in the United States from 8am to 3pm EDT.  The numbers to use are:

From the United States, Canada, Mexico, and South America: +1 (216) 920-4378
From Europe, Asia, Africa and Australia: +44 (0) 208 099 8324

In an emergency after hours, or if you are unable to reach anybody at the numbers above, please contact us on our sales number at +1 (216) 991-5220, and we will work with you directly.
Thu 7 Apr 2005, 07:22 PM
A large customer trying out CoexEdit has made a request that is quite difficult to know how to implement.  Since I haven't anyone else to bounce it off tonight, I thought I would use you all as my sounding board.

Requirement: Pass through HTML with square brackets
The customer has rich text fields that are edited in Notes and then shown and edited on the web, but in the Notes client they want the ability to "pass through" HTML which will be used on the web, but which will remain designated as "pass though HTML".  They currently use the square bracket approach, so that [<b>this</b>] appears like this.  That part would be easy, but when the document is edited on the web and returned, they want it to appear back as [<b>this</b>].  Obviously, they would use it for that sort of pass through, but rather for complex JavaScript, or with applications that automatically generate a link or image with HTML marked off this way.

(read on) for implications and ideas.
Fri 5 Sep 2003, 05:54 PM
Word Association: When you see the word Rocky, you may think of Rocky I, II, III, IV..., or perhaps Rocky and Bullwinkle, but what I think of is Rocky Oliver, co-author of the Lotus Notes and Domino 6 Programming Bible along with Brian Benz (Brian de Palma?, Life of Brian?).

Challenge Overview: Rocky has written a series of excellent technical articles, many of which draw on his work in the Programming Bible.  The challenge which I set forth is that I find a constructive way to use either the Midas Rich Text LSX or @Midas to work with each of these technical articles... (read on)
Fri 1 Feb 2008, 08:13 AM
As I speak, the busy gnomes at Genii Software are testing and documenting and testing some more and then documenting some more (we like to keep our gnomes busy here), getting ready for the imminent release of three of our core products, CoexEdit 2.0, the Midas Rich Text LSX 4.0 and the Midas Rich Text C++ API 4.0.  But, to avoid problems other major players in the industry have had recently, we have decided to release before we launch, as opposed to the other way around.  Therefore, our goal, and we'll see if the gnomes can make it, is to release all of these major releases before the end of the day today.

But only after they are released, and to avoid a problem we have had ourselves in the past, only after the documentation is substantially ready, we will launch next week.  What is the difference, you might ask?  Well, the title of my blog post that day is likely to be something closer to "Launch day (not to be confused with Release day)".  Is that clear enough?

Anyway, to celebrate Release day, which is a holiday meant for merrymaking and joy for all except gnomes, I have a few quotes from a couple of those gnomes.

Mike Midas:
It is about time Ben got off his a$$ and released something around here.  Maybe he'll remember to release a bonus for those of us who do the real work.
Crystal Coex:
Wait until you see these Releases.  They are big.  Really, really big.  Oh, I am feeling so hot.  I must go outside and find ...
See what I have to deal with around here?

Tags:

Wed 16 Nov 2005, 10:49 AM
Last night, Bruce Elgort and Julian Robichaux talked with me about rich text for their great new Notes/Domino podcast series.  Click on the image below to get there and listen for yourself.  Don't worry, it is only 20 minutes long.  Let me know if you don't think I answered any question completely, or if you have more of your own, and I'd be happy to elaborate.


Taking Notes podcast listing
Wed 25 Oct 2006, 12:07 AM
I was working on the rich text comparison issues I mentioned yesterday, and I noticed something that made me rub my eyes and check twice.  The standard Review It! sample database we use to show off red-lining has been around for a long time.  In fact, see the image below:

Design elements from 1998

The standard agent for use in the sample is the Process Standard Comparisons with UI, and it was last modified and saved in October 1998, eight years ago. 

That bears repeating.  Eight years ago.  It was compiled in the fairly new Notes R4.6 using Midas 1.51, and is now running without any problems in ND7.0.2  using Midas 3.61. Three full releases of the Notes/Domino family and two full releases of the Midas Rich Text LSX product line.  Of course, the Midas Version 1.51 code itself would not handle the complex structures added in R5 and ND6, but the agent was compiled in that version and just keeps working.  We test each sample db for each release of Notes and each release of Midas, but we don't bother to recompile if we don't have to, and I guess with this one, we never had to.  That is upward compatibility.

Maybe it is just me, but I find that amazing.
Tue 19 Sep 2006, 09:38 PM
This post is a bit different than my past few which showed differences between Open Document Format (ODF) and Notes rich text, as this shows differences between OpenOffice.org Writer and the Notes client rich text editor.  Let me start by saying I vastly prefer the Notes client approach.  The most obvious issue with the OOo Writer properties is that they are modal, meaning that you must act on the dialog box or cancel out of it before you can go to another element.  To see how incredibly annoying this is, simply try to find out the widths in a simple table, such as this... (read on)

Tags:

Tue 26 Oct 2004, 10:08 AM
We are in the midst of rolling out the new on-line Midas Help database, but don't be surprised if it is a bit dodgy today, as we are making rapid changes and you may catch us in the middle of a replication.  Also, some of the information may not be updated completely for the @Midas Formulas and Midas Rich Text C++ API.  Still, if you don't mind the occasional gotcha, it is worth taking a look at, and I'd be happy to hear any suggestions or comments.  After the dust settles, we will have this available for download as well.
Tue 9 Nov 2004, 10:35 PM
I was talking with a fellow ISV about new versions of his software, and he said that he thought that putting out too many new versions of software indicated instability, so he didn't think you should ever put out a new version, except maybe a critical patch, more than once every four months.  My feelings on this are mixed, and I wonder what you think. (read on)
Thu 2 Jun 2005, 11:04 PM
I happened to be checking total page hits today, and noticed that our main CoexEdit page had exactly the same number as our main Midas Rich Text C++ API page.  Why is this amazing?   Simply because the Midas Rich Text C++ API was introduced on September 16, 2004, over eight months ago, while CoexEdit was introduced on May 11, 2005, less than a month ago.

Does this just mean the Midas C++ API is a dud?  No, it has been quite popular, but the Midas C++ API is an API, after all, while CoexEdit is a solution, and the solution to a pretty universal problem for Notes/Domino shops.  Nonetheless, the early response to CoexEdit has been stronger than that for any product I have ever introduced.  It should be interesting to see what happens when the first evaluation licenses run out in a few weeks.
Wed 12 Mar 2008, 11:17 AM
Mike MidasWicked Thoughts
by Mike Midas, Ace Developer

Some people grow up wrapped in the arms of loving parents and moral rectitude, focused on God and country, in that order.  Not me.  I grew up thinking the seven deadly sins were my to-do list, focused only on wine, women and song, not necessarily in that order.  For that, I count myself luckier than a sharp eyed midget at a miniskirt convention.  The closest I ever came to religion was when Sister Maria Bonita at the local convent went stir crazy and gave up her habit for Lent, running down the street past our school and exposing us all to her Holy Mysteries.

Bearing that in mind (with Sister Maria still bare in my mind as well), I was sitting in my office ignoring how my Sametime client kept chirping like a demented parakeet about some "unfinished project" my boss had discovered.  I had just about decided to slip down to the Rusty Spigot for a well deserved nip when into my office walked a blonde bombshell with a red fox stole and an attitude to match... (read on)

Tags:

Sun 7 Mar 2004, 10:47 PM
I'm back from Munich (a wonderful city, with many wonderful sights such as that above in the Residence of the Bavarian Kings).  This is going to be quite a week, with a new release of COEX! Links, a new release of the Midas Rich Text LSX (probably) and the beta release of @Midas Formulas, which I showed in Germany for the first time.  It will also be busy as I catch up with all the people who have sent questions and concerns and even, gasp, bugs.  Please be patient, as I am working on all of these as quickly and efficiently as I can.
Fri 5 Oct 2007, 05:57 PM
I know I am a bit of a nut about HTML rendering, but look at the image below:

Table rendered in Notes 8Table rendered in Notes 8

Here is the same table rendered by our Midas Rich Text LSX 4.00

Rendered by Midas Rich Text LSX

They look pretty similar, right?  I first created this sample was back in Notes 6.x days.  I don't even have a Notes 6.x version on this machine, but I do have Domino 6.5.3.  Here is how that same table renders in Domino 6.5.3 (and how it rendered in Domino 6.0.0, for that matter):

Rendered by Domino 6.5.3
So here is the kicker.  Here is how the same table renders in Domino 8.0.0:

Table rendered in Domino 8

Um, progress, right?
Thu 1 Sep 2005, 10:29 AM
I was amused to see WYSIWYG defined on the Word of the Day calendar that my wife has in our kitchen.  We both have very good vocabularies, so it is common when we see a word we don't recognize to ask if the other knows it.  So my wife asked if I was familiar with WYSIWYG, and I had to laugh.  Because of our Web Editors (list of WYSISYG editors for using rich text web editing) our website is on the first page when searching through at least some search sites... (read on)
Thu 25 Jan 2018, 01:22 PM
I made a very brief demo (53 seconds!) to show two different ways tabbed tables could be rendered by the Midas LSX or AppsFidelity. While your users may not add tabbed tables to rich text, it is quite likely your developers have added them to forms, so when you want a snapshot of a document, or want to display it on the web or in a mobile app as a rendered document, or email the document, the tabbed tables must be handled.
 
Try forwarding a document with a tabbed table either in the form or in the rich text itself, and you will get a "flattened" version where every row is shown. Depending on whether your client or server handles the MIME, the tabs may be lost completely or added to a separate row. With the Midas Exports engine, you can get a similar, but more well-rendered version of this "flattened" look. That is the default, and is certainly preferred for email or printing.
 
But the Midas Exports engine can also generate a JavaScript version of the tabbed table which allows for a look-and-feel much closer to that in Notes. It is preferred for archived snapshots (in MHT or HTML), as well as for apps that won't edit the content but do want to display it on the web or in a mobile app. This demo shows both approaches.
 
 
This is the first in a planned series of very brief demos showing how the Midas Exports engine handles different optional rendering to meet whatever needs you may have. Using only standards-based HTML, CSS and JavaScript means that whatever your intended target, it will almost certainly support the rendered Notes content.
 

Tags:

Fri 22 Apr 2016, 12:25 PM
A first look at how you will be able to retrieve Domino data in a myriad of formats, but in this case in JSON. This is a simple demo of an HTML page that retrieves Notes data including rich text and uses it on the page. In this case, it retrieves JSON, but can also retrieve CSV data, HTML, EPUB, MHT and EML from a view, document or field, all using the high fidelity rendering and advanced data mining features of the AppsFidelity Render engine.
 
You can try AppsFidelity for yourself by requesting an evaluation license (oops, corrected). Anybody with an active evaluation when AppsFidelity 4 is released will get a new eval license for AppsFidelity Render and will also get a special discount if they choose to buy it. AppsFidelity Render is part of AppsFidelity, and is licensed along with it for the same price.
 
Best viewed in HD. Closed captions will be provided shortly., though the majority of the impact is visual.
 
 
 
The lines I added to my NOTES.INI to make this demo work are below. There are a couple of additional parameters to restrict exactly what can be done with a db, but the URL will only work with a db that is enabled by name, replica id or template.
 
extmgr_addins=AppsFidelityEdit32
AppsFidelityRenderEnabled=1
AppsFidelityRender1=<LSess12.nsf>

Tags:

Thu 3 Apr 2014, 04:01 PM
Today, we released a new version of CoexLinks called Coexlinks Fidelity. While it is technically CoexLinks 3.5 for internal reasons, it is the biggest addition of functionality for CoexLinks in years. The core CoexLinks functionality of converting doclinks to usable links in Outlook, Google Mail or other web mail is still in place, and more flexible and powerful than ever. But now, there are two additional areas of functionality added to enhance the power and value of CoexLinks:

Email Fidelity
As the name CoexLinks Fidelity suggests, a large focus of the new version is email fidelity - making sure the email arrives at its destination looking the way it left the sender. Whether the destination is Outlook, Outlook Webmail, Gmail or another email system, high quality HTML and CSS can now be counted on almost anywhere to present an appearance like the Notes rich text appearance. CoexLinks Fidelity takes on the task of converting the email from Notes rich text to MIME, and doing it with far better fidelity and more adherence to modern standards than the Domino SMTP task even in Domino 9.0.1. Where Domino constructs don't quite match up to HTML/MIME displays, CoexLinks Fidelity uses an intelligent, coherent approach to converting what it can to maximize clarity and professional appearance.

Message Store
While most email can be rendered to a MIME/HTML standard, some Notes functionality doesn't translate and some Notes security is unsupportable outside the Notes/Domino environment. For those cases, CoexLinks Fidelity offers a Message Store database. When an email is identified as having potential security or functionality issues outside Notes, a copy is secured in the Message Store database, controlled by document level reader access so that only designated recipients can open it. This includes encrypted mail, but also a configurable set of Notes constructs such as buttons, tabbed tables, etc. Then, the original email is sent on with a custom disclaimer and link back to the Message Store document. This way, the recipient in Outlook or Gmail or whatever can follow the link back they way they do other doclinks managed by CoexLinks, and open the email in a Notes client where it can be read and acted on.

More details and videos will be available shortly. Existing CoexLinks customers on maintenance may upgrade to CoexLinks Fidelity at no additional cost, or if they are already on CoexLinks Version 3.0 may use their existing license files.
Thu 18 Apr 2013, 12:45 PM
 
It seemed about time to create another video demo on IBM Notes, so this is a short exploration of some of the things you can do with borders in tables either in documents or on a form/page/etc. (which are rich text as well). No third party tools or even Domino Designer needed. All of this can be done by any Notes user. Think of it as virtual Speedgeeking.
 
If you are curious, you can download the image file used for the border.
 
 

Tags:

Wed 19 Mar 2014, 04:51 PM
I thought it might be worth laying out a roadmap for where I see Genii Software and its products going in the future. While these are mostly continuations of current directions, not everybody is aware of the different overlapping features. So, here goes.

Lane 1: Companies leaving Notes behind or moving part of their infrastructures away from IBM
This lane is often seen as "migration", but frequently turns into "coexistence". We support both things. This lane is likely to be quite active.

CoexLinks Fidelity will allow email infrastructure to move to Microsoft or Google or anyone else, while allowing high fidelity email to be sent to the new mail system with total control of doclink and with a built in Message Store for emails with Notes-specific functionality. CoexLinks Fidelity serves both those in the process of migrating and those coexisting between IBM Notes/Domino and other software infrastructures.

Midas LSX allows the high quality export of both mail and other data to a variety of formats supported outside of Notes/Domino, whether in other IBM software or software from many other companies including Google, Microsoft, Oracle and many, many others. Hands-off exports will be increasingly used so that no developers are needed for this process.

Product X will provide a more seamless migration process for email, utilizing both the Midas engine and additional functionality. Details not currently public.


Lane 2: Companies staying with Notes but without significant developer resources
This lane reflects the reality of many companies today, not only in Notes but in many technologies. Some companies have only a skeleton developer staff, while others have no developers, but their infrastructure has been mostly paid for and they are not interested in moving. We are finding more and more ways to support these companies, and see this as an area with significant growth potential, both for Genii Software and for other flexible software and consulting companies. This is the middle lane because those in both Lane 1 and Lane 3 may drift this direction.

CoexLinks Fidelity will allow a company with an existing Notes/Domino email infrastructure to improve the quality of their customer-facing emails. It may also improve the quality of email accessed through the iNotes web interface. Since it can be deployed/configured without developers needed, it allows a company to do more/better with their existing infrastructure.

CoexEdit will offer enhanced functionality to both XPages and classic web interfaces, whether they are Notes/Web combined or not. The interface will be primarily non-developer focused, with no changes to templates or database designs required.

Midas LSX already offers many templates for processing/importing/exporting and managing rich text resources, but will increasingly offer a line of designer-free templates which are data driven and can be used by either administrators or users as is. The scope of such templates will not be limited to rich text, just as the Midas LSX is less tied to rich text.

Midas C++ API will increasingly be used to provide add-in functions either through a menu interface or a data driven interface so that specific functionalities will be available "built in" rather than through a database. This will be increasingly important for server applications. Some of these may be labeled as separate products, but will still fall into this product family.


Lane 3: Companies moving to Notes or with significant Notes developer resources
There are still companies moving to Notes/Domino or maintaining and growing their Notes/Domino infrastructures. While this may not be a growth area, our products provide the ability to do more and get better returns on the Notes/Domino infrastructure, even if IBM does not significantly invest in new features.

CoexEdit will offer enhanced functionality to both XPages and classic web interfaces, whether they are Notes/Web combined or not. The interface will be primarily non-developer focused, with no changes to templates or database designs required.

Midas LSX offers many templates for processing/importing/exporting and managing rich text resources, but will increasingly offer templates which work beyond rich text. Developers can build in this functionality to make enterprise-class applications that go well beyond what IBM envisions in Notes/Domino. Hooks are being added to provide more functionality inside XPages, but also in non-XPages applications. Also, data import functionality allows customers to bring data in from other platforms using the powerful Midas fidelity engine.

Midas C++ API is available and being enhanced to allow sophisticated developers to build Midas power inside their own software, or offer extended functionality with hooks to the Midas functions optionally available for those who "buy up".


Exit Lane A: Products built for other platforms
No details at this point, but we may release one or more products for other platforms that may or may not be integrated with our Notes/Domino products.

Wed 24 Jul 2013, 12:51 PM
This is the fifth in my series, Out Of Notes (see Part 1 - The ChallengePart 2 - Capsule ViewsPart 3 - ePublish from XPages and  Part 4 - Linked Collections), which shows how the Midas Rich Text LSX can be used to take data out of Notes either temporarily or permanently. In this part, I show how to export an entire database to SharePoint via CSV (comma-separated values), including both rich text fields and all other fields, as well as all attachments and images. This code has been used already by early adopter customers to export many gigabytes of data to SharePoint. In a very short video, I demonstrate how easy this can be with Midas V5. More information and the script used are at http://mini-lessons.info/Midas12 
 
Note: Accurate closed captions have been provided, and if English is not your first language, you might want to turn on the auto-translate. I also advise turning on HD and watching full screen so the captions show under the video.
 

Tags:

Mon 15 Apr 2013, 01:00 PM
My approach of making very short demos and tutorials has been well received (in my estimation). The average length of all sixteen Gimp and Notes videos is under two and a half minutes. The most popular video showing the Midas Rich Text LSX has about 500 views, while the most popular Gimp 2.8 mini-lesson has about 1000 views. I have been encouraged enough to purchase a better microphone and pop filter, so I will re-record all of the tutorials and demos when that arrives. Until then, I apologize for the scratchy audio.
 
I created my first playlist for the Gimp 2.8 videos (see below), and as soon as I figure out how best to group them, I'll create playlists for the IBM Notes and Midas Rich Text LSX videos, as well as the Mike Midas and Crystal Coex stores. (If you missed them, you can go to Luck Be A Lady Tonight - a Mike Midas case file and Size Matters - a Crystal Coex case file directly).
 
You can go to the Gimp 2.8 Mini-Lessons playlist directly or view it below:
 
 
Wed 7 Apr 2010, 03:30 PM
We have had some phone support issues in the past couple of days.  It turns out, the phone provider used by the Turtle Partnership went belly-up, a victim of the economic stresses of the day.  Fortunately, there are always new providers, so new numbers are now available.  At the same time, I thought it might be a good idea to reiterate the support email addresses

E-mail support will be provided twenty four hours a day, and is recommended, as it allows both support groups to access the information provided and respond in a timely manner.  E-mail should be directed to the support address for each product group:

E-mail support for CoexEdit:  
E-mail support for CoexLinks:  
E-mail support for iFidelity and iFidelity Gateway:  
E-mail support for Midas Rich Text LSX and Midas Rich Text C++ API:  

Phone support will be available from 8am to 6pm GMT, or in the United States from 8am to 3pm EDT.  The numbers to use are:

From the United States, Canada, Mexico, and South America: +1 (216) 920-4378
From Europe, Asia, Africa and Australia: +44 (0) 208 099 8324

In an emergency, or after hours, customers may still contact Genii Software at its sales number at +1 (216) 991-5220.

Tags:

Mon 7 Sep 2009, 01:03 PM
This is hardly surprising.  All software has bugs, and the bigger and more complex your software, often the more bugs.  I have focused on a few very significant bugs, but "significant" is a tricky word.  Bugs in a Notes client have no significance to those who use only the server.  Bugs in application development code have no significance to those who use only mail.

So, let me be completely clear.  I have a complete, total obsession with rich text, MIME, HTML and coexistence.  There is quite likely nobody at IBM who spends as much time pushing and shoving and fighting with rich text, MIME and HTML as I do.  That means that issues I find with these areas have great significance to me.  They may not have similar significance to you.  You may not care about whether your emails show up in clear, coherent MIME, or whether they show up at all.  You may not care whether some set of circumstances may lead to corrupted or incorrect data.  The famous Pentium FDIV bug probably didn't actually affect almost anybody, but the significance was huge to those who depended on absolute reliability in large number crunching applications.

The bugs I find and make a big stink about (I find many that are not worth noting, or only worth noting internally) are significant to me, and perhaps to IBM.  I don't expect IBM to assign the same significance to them that I do, but I do assume that it might be worth paying a bit of attention to the one person who really cares enough to push on these issues, cares enough to painstakingly analyze and document not only the bugs by the reasons for the bugs.  IBM doesn't have to pay attention, but if I am finding issues their QA department is not, perhaps they should.  Who else is going to waste the cycles?

Let me repeat again and again - Notes/Domino 8.5.1 is a wonderful advance in a terrific piece of software (or will be once it comes out of beta).  I think it should be widely considered by all Notes customers.  They should just be aware of all the facts, good and bad, so they can make an informed decision.

Disclaimer: Notes/Domino 8.5.1 (beta 8) is beta software, and nothing I say or do may be relevant to the final release.

Tags:

Mon 2 Feb 2009, 09:49 PM
Sometimes I feel like I MUST be missing something.  Mail has been a critical part of Lotus Notes for two decades, so obviously there must be someone, or perhaps multiple people, at IBM whose job it is to think... think about potential issues... think about scenarios where mail might not get through successfully... think about the customers who have to be able to use the system with confidence.  But sometimes it is hard to believe.  More often, I simply think "What would happen if somebody wrote this who didn't bother testing - what would they miss?" and then I go test it.  Usually I find a problem, although sometimes not exactly the one I expected.

My challenge: Predicting an untested problem
I'm going to try an experiment.  I'm going to predict a problem before even trying it out, then test to see if I am right after I post this challenge.  I have no way to prove to you that I have not already tested this, so you will have to trust me.  To hedge my bets a bit, I will make it a bit of a broad prediction.

My prediction: iNotes will render tabs and sections as if on the web
I predict that if I have a tabbed table or section in a rich text email, and I go to iNotes to view the email with the tabbed table or section, it will render as if it were going to the web, with active hotspots to switch tabs or open/close the section, rather than as if it were sent by mail, with a flattened table or opened section.  Then, when I forward or reply the message from iNotes, the hotspots will remain but have lost their meaning, so that the tabbed table will only show one tab, or the section will remain closed if it was closed in the rich text message.

Watch for my follow up to see if my prediction is correct.

Tags:

Wed 25 Feb 2009, 10:20 AM
In my earlier post, I was a bit snarky about a new, free (did I mention freeutility that Robert Ibsen Voith has posted to fix a couple of rich text issues.  I refer to these sorts of utilities as fixlets, as they fix specific issues or problems.  Free fixlets are a wonderful thing, and I don't want to discourage their development or use in any way.  Of course, I have the second of three kids in private colleges, so I will continue to attempt to crush all competition in the pursuit of the almighty buck, but I will strive to do so in a kind, supportive way.  Please do share your fixlets with the world.  I even have a couple of my own that should come out of the EntwicklerCamp, and I will offer them for free as well.

Long may fixlets live and prosper to the betterment of our greater Lotus Notes/Domino community.

Tags:

Fri 13 May 2005, 09:36 AM
This continues on from yesterday's post where I go through the exercise of adding CoexEdit to a well known, existing database, documenting each step.  I chose the Partner Forum because it is currently a Notes only database, so I thought it would be easier not to work around the web elements already in place.  This post was motivated by Bill Buchan, who laughed that I seemed regretful that the first part was so easy, so in this case, I am going with the Possible Bug Report form, which has three rich text fields.

Now, let me reiterate that I have no desire to see the Partner Forum web enabled, and that what I did will not web enable it.  I worked on a copy of the Partner forum on an internal database.  

Here were the steps as I record them: (read on)
Wed 19 May 2004, 11:30 PM
We released Version 3.00 of the Midas Rich Text LSX back in February of 2003.  Since then, we have offered a discount of 50% for anybody wanting to upgrade from Version 2.x to Version 3.x  Most people have upgraded, but there are still some hold outs who still use Version 2.51, or earlier.  Well, your time is running out.  At the end of May, the discount ends.  People upgrading after that will just pay full price.  We have sent out emails to everybody, we have contacted a few larger customers directly, but time is running out.  Upgrade now, or pay more.

Frequently Asked Questions (and Answers) about the Upgrade
  1. Do I have to upgrade, or can I keep using Version 2.x? Nobody has to upgrade.  Your license for Version 2.x is perpetual.  On the other hand, Version 2.x is NOT supported for Notes/Domino 6.x and higher, and you will not be able to take advantage of the many new features.  Still, you can use Version 2.x as long as you like.  We just advise strongly against using it with Notes 6, or even with Notes 6 generated rich text, as it can cause some odd data corruptions.
  2. Can I still use Version 3.x with Notes R5? This is one of the most frequent misunderstandings about the Midas Releases.  Version 2.x supports R4.5x, R4.6x and R5.x.  Version 3.x supports R4.5x, R4.6x, R5.x, ND6.x and ND6.5x, so there is no need to worry.
  3. If I buy Version 3.x for R5 now, do I have to upgrade again when I move to ND6 or ND6.5?  No.  The Midas Version is not tied to the Notes Release.  You may need to download a different version from our website when you upgrade, but the same license is used for all Notes releases.
  4. My company doesn't move fast enough, or doesn't have budgeted, the money to upgrade now.  Is there any way we can delay this?  Give us a call and we will talk.  I don't anticipate long delays, but we are reasonable people.


I have to say, when we announced the end of the upgrade discount, I anticipated a few complaints.  I certainly did not anticipate thanks, but two customers have done just that, thanked me.  Both had basically the same thing to say, "I couldn't convince my company to upgrade, and this gave me the ammunition to convince them.  Thanks!"

You don't have to thank us, but you still might want to take the opportunity to upgrade now.
Wed 22 Oct 2003, 12:10 PM
I'm travelling to London on Saturday for the Groupware Magazine Admin-Developer 2003 conference, which starts Monday.  I'll be presenting a couple of sessions, one called Rich Text Tips, Tricks and Techniques and another called Advanced Notes/Web Coexistence.  In addition, I'll be meeting with a few people, and should have some material at the Penumbra booth.  I'd love to meet up with any clients, partners or even blog-devotees.  Let me know if you are attending or will be in the area and would like to meet up.

Other presenters include Rocky Oliver, Rich Schwartz, Andrew Pollack, Dieter Stalder and a bunch more.  It should be a great conference, and a bet you could still get in if you tried.  

I'll be connected and might blog while in London, but I will certainly post the session materials and demos after they happen.
Fri 17 Dec 2004, 12:28 AM
For many years, Kryos Systems hosted our corporate website, and I have worked with several people there (using our Midas Rich Text LSX with their customers, mostly).  It was with great pleasure that I read that Kryos has won the Lotus Award (aka Beacon Award) for Best Content Management Solution for their TitanWEB product.  I have been given "the demo", and it is a very slick and powerful solution.  I wish them the best, and hope this award takes them far.

Congratulations as well to all the rest of the winners and finalists!
Mon 10 Sep 2007, 11:56 AM
As others have noted already, IBM and OpenOffice.org have announced that IBM is contributing both code and resources to OpenOffice.org.  Andy Updegrove has a good writup of the facts and possible implications.

One item jumped out at me.  IBM is dedicating approximately 35 developers to this effort.  Holy cow!  I am highly tempted to point out that IBM sometimes seems resistant to dedicating one developer to Notes rich text, but that might be snarky of me.  Still, it might explain to some naysayers why I am focusing on OpenSesame these days.
Mon 8 Dec 2003, 09:41 PM
A customer has posed an interesting challenge, and I am playing with different ways to accomplish what he wants using our Midas Rich Text LSX.  He is looking for a dynamic table which represents a number of other documents, but his users want to be able to make changes to this one document and the changes reflected in all the other documents.  This "grid control" is a more grandiose version of what can be done in Notes 6 to a small degree with in-view editing, except with more control and with an R5 client as well as a Notes 6 client.

Now, I am under a bit of a time crunch here, but I want to experiment with the best way to do this.  Here are a few options, but I am trying to keep my head open to other alternatives as well:
  1. Create a table in rich text and let the user edit the cells, then push back the changes based on position or cell values:
    • Pros: Easy to create, low overhead, very flexible
    • Cons: Users can fiddle with the table, deleting rows for example, or can alter the key value
  2. Create a document with a stored form, and have the individual cells actually contain fields, then push back the changes on any document as it is modified
    • Pros: Tight control over what can and cannot be modified.  Possible to add a Save/Revert mechanism.
    • Cons: Lots of fields may be required, and no easy way to clean them up from UNK table.  Also, may be problems with signing scripts appropriately.
  3. Create a document with a stored form, and have each document have its own table, so the key can't be changed and any table alteration will simply cause that document to be left alone.
    • Pros: Medium control over what can and cannot be modified.  Possible to add a Save/Revert mechanism per document.  Also, no limit to rows because it isn't a real table.
    • Cons: Fewer fields, but way more tables.
  4. Some other choice I haven't considered yet.


I plan to use the Pinnacle East sample database, which some people may have seen used in my Lotusphere demos, and I'll try to implement all three solutions (and any more that occur to me) within that one database.  If it works well, I'll publish it as a sample on our website.  If it goes badly, well, I guess that is the risk of taking a challenge publicly.

If any of you have ideas of how this could work, or would like variations that would make sense in your business, feel free to post of send me e-mail, but if you want it done for this demo, send it quickly.

Update 1) I now have the selection working and it creates a tabbed table with the appropriate information, then takes changes and pushes them back.  Essentially Option #1 with a bit of flash.
Thu 4 Dec 2003, 11:26 PM
Sometimes it is clear why things are the way they are.  Sometimes it is not.  Reading through the Gold forums, I hear a lot of complaints about how things are, and a lot of plaintive "But why doesn't..." or "But why does...".  Often, the only answer is "Just because".  A good example might be GetDocumentByUNID, which does not return Nothing if the universal id is invalid, but instead raises an error, even though other similar methods such as GetDocumentByKey do return Nothing if not found.  Raising an error might make sense in Java or C++, but in LotusScript, it is bloody annoying, and at the very least, the behavior should be consistent, not to mention clear in the documentation.  So people ask and ask and ask, but the answer is still "Just because".

Well, in my smug and self-satisfied way, I assume that our products do not suffer from such annoying "features".  So, it was with a great deal of chagrin and embarrassment that I sat on the phone with somebody a couple of days ago explaining why our Midas Rich Text LSX can connect to a document using a note id, but not a universal id.  "It doesn't make sense", he said, "since I am much more likely to have the universal id than the note id, especially if I get it from a URL or something like that.  Why can't you just use a universal id if that is what you have?"

Ouch!  Double yikes with a cherry on top!  The only answer would seem to be "Just because", and I realize what a horrible answer that is.

So, even though Midas came out in the summer of 1997, and even though we have over 850 thousand licensed users in 43 countries, and even though I am supposedly "THE acknowledged expert on Notes Rich Text", I must contritely admit that I never really thought about what a total nuisance this limitation would present, and have no idea how many developers have shaken their heads over the stupidity of the limitation.  Well, at least they won't have to live with it much longer.  In Version 3.21, only about fifty or sixty releases into the lifespan of the product, I have modified the Connect method to accept a universal id instead of a note id, if that is what you want to use.

How much time did this radical change take?  How much effort did it take to make people's lives easier when doing the most basic function possible in Midas, connecting to a rich text field?  How long did I have to struggle to fit it into a model where it had never been before, including modifying the documentation and writing a release note, and then writing this note of contrition?

Two hours.
Fri 14 Jul 2006, 03:25 PM
The question I keep expecting to hear people ask IBM, but I have heard very little, is "What makes the IBM Productivity Editors different than eSuite and Lotus Components?"  Of course, I don't mean what makes them technically different.  I mean, what is going to make them successful where the other two efforts failed?  I certainly hope that IBM is asking itself that, even if the partners aren't (and maybe they are, but I haven't heard it much).

Tags:

Mon 25 Jan 2021, 11:28 AM
Inline JPEG image
 
Continuing on from last week's post, we are looking at better ways to retrieve data based on two factors:
 
1) How much data do you need from any given record, and which records do you need it from? If there is related data in another record, can you get it without pulling in loads of stuff you don't need? 
 
2) What format should the data be in? How should it be structured or grouped for maximum usability? While you can certainly write code in your application to reformat or restructure, that adds complexity and room for error on your client.
 
Again using Exciton Boost 4.6 with the Curb Appeal database, we'll examine a couple of additional Fancy Tricks (aka "useful features").
 
 
Fancy trick 3: - Saving preliminary values
This may not sound so fancy, but sometimes the value you want is the result of multiple operations. Rather than passing back all the pieces and doing the processing on the client, which might require multiple requests, we can save the results of a formula or rich text operation into a temporary field, and then use those temporary fields to create the result.
 
On Friday, I posed a challenge called Sorted lists of bullets. In the real estate listings in Curb Appeal, there are usually two, occasionally, three columns of bullet items under the Features heading. These are rich text fields, but all we really care about are the text values for each bullet. In our second Fancy Trick from the first post, I talked about using rich text items as a data source.
 
Inline JPEG image
 
Using that trick, we could get the list of bullets from each of the three rich text fields, Col1, Col2, and Col3. (Imaginative naming, eh?) For this fairly simple example, we could return all three lists as separate arrays, then merge the arrays, then sort, all using JavaScript or whatever language. The item list to retrieve these would look something like this:
 
Col1[BulletList *;$UnformattedText]{A}=bullets1,Col2[BulletList *;$UnformattedText]{A}=bullets2,Col3[BulletList *;$UnformattedText]{A}=bullets3 
 
This would produce three arrays named bullets1, bullets2, and bullets3. But this is where the Fancy Trick comes in. By changing the type string in curly braces from {A} to {AP},  with the P meaning Preliminary, none of the three arrays would appear in the result. Instead, a multi-value temporary text list item would be be added. It uses the name preceded by two dollar signs, e.g., $$bullets1 plus a period plus the chunk property, so the field $$bullets1.UnformattedText is now a Notes text list.
 
Col1[BulletList *;$UnformattedText]{AP}=bullets1,Col2[BulletList *;$UnformattedText]{AP}=bullets2,Col3[BulletList *;$UnformattedText]{AP}=bullets3 
 
As a final step, we can use formula language now that we have simple text list fields, so we add an additional item as 
 
@Sort($$bullets1.UnformattedText:$$bullets2.UnformattedText:$$bullets3.UnformattedText){A}=bulletsSorted 
 
The three text lists get appended together then sorted with @Sort, and the result is a sorted list bullet values returned as bulletsSorted. Since we can use all of Notes formula language, we could done @ReplaceSubstring or @Unique or whatever. The client app simply gets the data it needs in the form and format it needs them.
 
Imagine the following code. Can you see what it would do, and how you might be able to use it while building a web page result?
 
Body[Graphic *;%GraphicWidth]{AP}=widths,@Max($$widths.GraphicWidth)=maxWidth
 
 
Fancy trick 4: - Retrieving related data from other documents and databases
Anyone who has worked with Notes for a while will know that a view cannot do @DbLookups to get related information. If an item number is used but the item name, description, and price are in another database, you can do @DbLookups to retrieve them from inside a document but not from a view. In a typical REST API, you might do one request to get this document's information and then other calls to retrieve related information, but Exciton Boost allows you to use formulas, so you can retrieve related information in your first request. Rather than retrieving lots of data and dealing with it on the client, this also allows highly efficient view operations and caching to empower these lookups. As a simple example from our Curb Appeal database, we could use the following to display the average price of all houses in the current city.
 
City+", "+State{P}=key,@DbLookup("";"";"Listings\\by Location";$$key;2){P}=prices,@Text(@Sum($$prices)/@Elements($$prices);"C")=avg 
 
so, for a listing in Beachwood, OH, you would get
 
{
    "@unid""524C08BF648BE77A85257B8600798F5B",
    "avg""$460628.57"
}
 
Note that I used the previous Fancy Trick twice to save the key and then save the results of the lookup. Also note, when the values do not come from chunk properties but rather from formulas or items, the name is simply preceded by the two dollar signs. This process is very similar to saving variables in any language, but especially in cases where many data points are involved, it saves considerable time and bandwidth.
 
=> Request a free Exciton Boost eval in January, and if you later purchase a license. we'll add in four hours of development assistance, a $700 value. <=
 
If you have found these tricks interesting or intriguing, let me know and I can show more that relate to other parts of the REST API or remote procedure calls.
 

Tags:

Mon 3 Apr 2006, 12:01 PM
So, six of the top ten companies have purchased licenses for our products.  I'd name them, but two of them are a bit secretive about such things, so I'll leave it up to your imagination.  I will say that five of them have bought licenses for our Midas Rich Text LSX, and two of them (yes, one overlap) have bought licenses for CoexLinks.  None of them use CoexEdit yet, so I guess I know what to work on this year.  
 
Shesh, it seems pretty amazing to me.
Wed 29 Aug 2018, 10:31 AM
Over the past few years, we have expanded our offerings at Genii to allow more exchanging of data. To be honest, most of it has been outgoing, whether migrating Notes data to SharePoint or many other systems, or simply rendering Notes information to be more consumable on the web. We have added support for CSV to allow large batch exports, but also JSON to allow more RESTful exchanges. Rich text is included, of course, but much of the focus is on powerful extraction of data of all sorts.

It is with that latter goal in mind that I have been working with a few different systems including SharePoint, Confluence, and Salesforce. But times are changing. There are many positive signs out of IBM and HCL about the soon-to-arrive Notes/Domino 10, as well as future, even more ambitious plans for Notes/Domino 11. With that in mind, I am focusing a little more energy on drawing date into Notes/Domino.

One example of the work I have been doing is between Notes/Domino and Salesforce, because the latter has grown by leaps and bounds in popularity. But most companies don't get to choose either Notes/Domino OR Salesforce. Instead, they are left with Notes/Domino AND Saleforce. With that in mind, I am working on how to use a REST interface as well as events in Notes/Domino and the Streaming API in Salesforce to move data back and forth, either keeping it in sync or storing the appropriate pieces of one system in the other as needed. Notes/Domino has its advantages, Salesforce has different ones. Companies which can easily share and exchange information between them can pick and choose where an application or data resides, which may not be the same place it is collected.

Getting all of that in place will take a while, and I hope to document some of the steps. Obviously, we would welcome any companies that want to use our products now to move data, but we will also try to be transparent about the advances we make. As a simple example of how extensive this can be, I show here some fields including a Notes rich text field moved to a Salesforce Contact with a rich text area field.

The following is after the POST to Salesforce (red arrows show updated fields).

Inline JPEG image



And this is the source in Notes/Domino (red arrows show fields to use for REST).

Inline JPEG image

So far, it is pretty good, but we intend to improve it. If you would like to be part of a test with some of your data, contact me and we'll work it out.

Tags:

Tue 22 Mar 2016, 09:41 PM
Every few years, our Midas LSX evolves to take on new challenges. Sometimes, those are challenges that seem obvious, such as exporting Notes data to HTML or JSON with high fidelity. Sometime, though, the challenges are not so obvious. Over the past year, we have been evolving the data export features to allow data mining, or selective extraction. While I could show lots of details, I thought I'd write a few posts showing different sorts of data extraction. All are done with the Export to CSV sample, and so require no "programming" even with LotusScript. For these, I'll generally use Tableau, an excellent data visualization tool, though honestly the output is a CSV file which could be analyzed in almost any software package.

For the first post, I thought I'd search for a specific phrase in rich text fields, although I will export more than just the phrase. Each row contains a text record along with the name and UNID of the documents, so if somebody mentions the phrase multiple times, there will be multiple rows. If there are no mentions, there are no rows created.

I did two simple charts, one for the phrase "rich text" and the other for the phrase "security". For both, I searched the Business Partner forum from 2004. (At the very bottom, you can see the Export Directive I used to get an idea how this works.)

Inline JPEG image


Inline JPEG image

The form I filled out for the "security" search is below.

Inline JPEG image


Thu 10 Mar 2011, 01:50 PM
I made an offer the day before yesterday: Gripe about XPages and win valuable software.  Today, I'm announcing the first winner, although the offer is still open, of course.  

Inline JPEG imageUlrich Krause
Website: http://www.eknori.de/
Twitter: http://twitter.com/eknori



Ulrich suggested a few things, but the idea that definitely made sense to me was this (rephrased since I better understand his point after a follow up email):

The concept to support multiple languages in an XPages based app is great and simple but lacks an easy way to maintain the file resources which hold the language settings. You need to either use Domino Designer or a fairly complex agent to transfer the language information from a normal notes document to the file resource. If there were an easier way to have the language information in the front-end but still leverage the eclipse features for handling the file resources, XPages would be more powerful. 

I thought how best to do this. As with any new feature, I worried about how to make the methods as powerful and general as possible so they could be used for various purposes, while still being easy to use and understand. After a few discarded attempts, I have come up with two methods that are being added to the Midas Rich Text LSX and Midas C++ API for the next version. 

The methods will be part of the GeniiRTItem class, and are GetAsText and SetAsText. The script example below retrieves the string properties from a file resource, copies them into a rich text field where they can be modified, then retrieves them from the rich text field and puts them back into the file resource.  This would work with HTML files, CSS files, themes, etc.  The developer could just as easily copy them into a text field, but rich text works better for large files.

' *** Put the contents of a properties file resource
' *** into a rich text field where it may be modified
' *** and then replace it in the file resource
Dim rtItem As New GeniiRTItem
Dim rtProps As New GeniiRTItem

Call rtItem.CreateBackend(doc.Handle, "Body", True)
Call rtProps.ConnectFileResource(db.Server, db.FilePath, "settings.properties")
str = rtProps.GetAsText()
Call rtItem.Everything.AppendText(str)

' *** Do whatever processing of rich text that you like

str = rtItem.GetAsText()
Call rtProps.SetAsText(str)
Call rtProps.Save()

Congratulations, Ulrich. For that idea, you win a free 50-user client license for the Midas Rich Text LSX with support and maintenance for a year, a $1500 US value.

Do you have any complaints about XPages? You could be a winner too.

Tags:

Tue 9 Apr 2013, 11:54 AM
One of the features in our new Midas Rich Text LSX 5.0 release will be EPUB support. I would be interested in working with a couple of companies who use, or have interest in using, EPUB format for accessing data via smartphones or ereaders or whatever. While the EPUB generation is good now, there are choices to be made regarding large scale generation, on-demand generation and generation for EPUB 3 devices. Contact me if you are interested at   and we can talk.

Below is a page from the Domino Designer help file rendered in EPUB and show via EPUBReader in Firefox.

Inline JPEG image
Mon 19 Oct 2015, 09:11 AM
I thought it might be useful to paraphrase a couple of the recent evaluation requests for Midas with the solutions provided. As new evaluation requests come in, I may post more of these. One thing I will try to highlight is when there are existing blog posts which address the problem.

Have your own questions? Feel free to fill out a Midas evaluation request and let us know what you would like to do.


Evaluation Request 1) Attachment icons
I am a software developer who came here through the following blog, http://dominogavin.blogspot.nl/2011/01/resolving-lotus-notes-851-and-higher.html , and am interested how it works and might help me in future. 

The blog post refers to attachment icons, and I mentioned in a comment that Midas allowed greater control over what they looked like. I was referring to a few different methods, but specifically the RefreshAttachmentIcon method which allows you to change how they look. See my blog post from 2007 called Midas 4.00: More control over file attachments and file icons to show how you can create traditional icons such as [Traditional vertical MS Word file icon] but also ones that take less vertical space, such as [New horizontal MS Word file icon] or with additional text such as  [Lotus Presentations file icon with copyright suffix]or [Horizontal MS Word file icon with author suffix]



Evaluation Request 2) Embedded images and more
We have several thousand documents with a rich text field that has pasted pictures in it. We are trying to export these pictures along with all the other content in the rich text field. The rich text field is currently getting exported as an HTML file... but the Pictures of course are not viewable in the html file.

This is a common request, and falls into that category where users ask for one thing but may actually need another. It is easy enough to export the images using the ExportGraphic method, as showing in my blog post from 2003 called 10 Ways to Use Midas - #7, but given that the user is also talking about extracting HTML and other content, it might be better for them to try the ExportToHTML method. Even better might be to use the Export to CSV sample database and get both HTML file (or MHTML with images embedded) and all the other fields, as shown in the short video, Midas For Non-Developers, Part 1: To CSV.
Fri 14 Jan 2011, 02:14 PM
Those watching closely who don't mind a flurry of changes in front of their eyes might have noticed a new tab in the Lotusphere 2011 Sessions db.  It is called Additional Resources, and its purpose is to cross-reference some of the available resources from the books, courses, podcasts, webinars, etc. in the Virtual Bookstore.  There may be no additional resources or several.  Let me show you an example, but please bear in mind that I may pretty this up, so it may not look precisely like this.  The titles are links to the Virtual Bookstore, from which you can read about the offering or follow the links to order or watch.  You will notice a few books and a few free webcasts, but every session may have a different combination depending on the speakers and the tags appropriate to that session.

For those curious, I plan to start a short series of blog posts about how I use the Midas Rich Text LSX to create these.  It takes 91 lines of code to create the subform that appears below, which includes tables and layers and links.  On Tuesday, I'll go through those 91 lines to show you how to use rich text to your advantage.

JMP103 Jumpstart Your "Jedi Plug-in Development Skills" with the Masters (web link)
Speakers: Ryan Baxter, Mikkel Heisterberg
DL S. Hemisphere I - Sunday  1:30pm - 3:30pm

Additional Resources for JMP103

Tags:

Sun 23 Jan 2011, 08:51 AM
Imagine that there is a new software package that would solve some major problems for your company.  Vendor A has a solution which looks perfect at an awesome price, but the product won't be available for six months.  Vendor B has a different solution which looks equally awesome with a price that is higher, but the product is shipping and available today.  I deal with similar issues all the time when talking to customers about our products, especially CoexEdit (seamless rich text editing in both client and web) and the Midas Rich Text LSX (powerful rich text manipulation and rendering).  Does a customer wait for IBM to (maybe) incorporate this kind of HTML fidelity and programming power into Lotus Notes/Domino, where it would cost nothing extra, or does the customer pay a bit more to get products that are working now, and have been for years and years.  The success of both products around the world speaks for itself.

But that same price vs. availability plays out in other places, and sometimes it is not so obvious which choice you are making.  For example, the two most popular books on Android development are Hello, Android: Introducing Google's Mobile Development Platform and The Android Developer's Cookbook: Building Applications with the Android SDK (Developer's Library).  Both look excellent.  Look at the books as sold by Amazon US, Amazon UK and Amazon Germany.


But there is a huge difference that you won't realize if you just look at the prices and the features.  In the United States, the Hello, Android book says that it will ship within One to three Months, while in the UK and Germany, it is in stock and will ship immediately.  The exact opposite is true of the Android Developer's Cookbook, which is in stock and shipping immediately in the United States but shipping in One to Three Months in Germany and One to Two Months in the UK.

Price vs. Availability.  Choose wisely.

Tags:

Mon 14 Sep 2009, 11:22 AM
This is a follow-up to Genii in a bottle: Improving Notes from the inside, Part 1, in which I show CoexEdit improving the editing experience in ND8.0.1 without any design changes.  In this, I show off the redesigned, and very attractive, Discussion template which uses XPages and the Dojo editor in Notes/Domino 8.5.1 (beta 8).  The focus for this redesign was in the web client, and a Notes client version redesign is being discussed by various people.

To give IBM credit, a lot of work has gone into this process, including some small, but much needed, fixes to the rich text to MIME to rich text conversions.  Still, there is a fair amount of room for improvement, and this demo will show how CoexEdit will enhance the experience even further without any modification to the template or database.  This is a completely untouched database created to show off the new discussion, and we keep the design template set to the new discussion template.


Click on image below to see demo

Inline JPEG image

Disclaimer: IBM Lotus Notes/Domino is prerelease code and there are no guarantees from IBM that the functionality presented or discussed will be in the final shipping product. 

Tags:

Tue 6 Jan 2009, 03:24 PM
Ed Brill directed me to this website, and it is interesting, but they clearly don't seem to understand Notes that well, as they mostly focus on IMAP/POP3 mail.  Regardless, their points about rendering (which relate to inbound MIME messages rather than outbound rich text messages) are generally accurate and interesting for both prior versions and MIME to rich text conversion.  What I found most fascinating though was to compare their evaluation of Lotus Notes 8 and Microsoft Outlook 2007 side by side...

(read on) to see comparison and the very important caveat.

Tags:

Wed 7 Sep 2005, 11:37 PM
Those familiar with the site may have noticed some changes to the Midas Rich Text LSX sample dbs page.  

1) For the moment, we have removed all reference to "featured samples" to make it easier to find samples alphabetically.  

2) We have also changed the minimum required Midas Release to 3.00 at the earliest, so if a sample used to say it would work with 2.02, it now says 3.00.  This simply reflects our gradual lessening of support for Version 2.x and before.  People really should have upgraded by now.

3) Finally, we have removed the R5 modifier in front of Review It! and Form Design.  These names, which once implied that new things were possible with R5 when R5 was new, now imply that perhaps these samples will not work with ND6 or ND7.  All samples are tested with the latest versions and fixed if there is ever a change that prevents working with the latest Notes versions, so all samples that work with R5 will still work with ND 7, and everything in between.

New Samples
There are several new sample databases in the works.  The first one, Replace URLs, which shows how to easily do search and replace on the URL behind a URL hotspot, is available now.  A couple more should be available in the next day or so, including Export Graphics and Color Coding LotusScript  and Formulas.  Watch for them.
Fri 22 May 2009, 10:20 AM
How stable and reliable is Genii Software?


While this is an easier question to answer than the last, it is difficult for me to say because it feels immodest.  Genii Software has been around since 1994, and a business partner with IBM since 1995.  Our first product, the @YourCommand Toolkit, came out in 1995, followed in 1997 by our best known product, the Midas Rich Text LSX, which has been licensed to over one and a half million users (the much maligned "seat count" that IBM and Microsoft love to both boast about and disparage).  Since then, we have brought out the other Midas products (of which the Midas Rich Text C++ API remains), CoexEdit and CoexLinks.  

In terms of stability, we support these products across a great span of Notes/Domino versions, thus ensuring that customer needs can be met no matter where they have landed in the Notes/Domino world.  All our current products are supported from R5 to ND8.5, and most would work with R4 if a customer came along who needed it.  We may be small, but have outlasted many larger companies and have an infrastructure that allows for growth or constriction without threat to the company.  It is perhaps indicative of our stability that the vast majority of our sales come through word-of-mouth, and yet we have grown virtually every year since we started.  Customers know us, tell others about us, and come back to see what new products we might have to offer.

Reliability is a harder thing to measure.  I am aware of customers who rave about us, and a few who rave at us.  It is perhaps a better measure that with the number of licensed users we have, with customers in 7 of the Fortune 10 companies, for example, with customers in 47 countries using our products in almost that many languages, we get very few support calls, and most are resolved within a matter of hours.  Occasionally serious issues develop, which happens with all software partly due to the ever-changing landscape of accessory hardware and software products installed along with Notes/Domino and partly due to the ever-changing Notes/Domino products themselves and partly due to actual defects.  When that happens, we work hard to be prompt and courteous in our resolution of the issues.  When the support load seemed to be increasing, and more of it was needed in Europe and Asia, we contracted with The Turtle Partnership to provide most of our support, as they are larger and have more flexibility in terms of resources.

Still, the best way to be sure is to ask around.  It should not be hard to find people at IBM or in the general Notes/Domino community who will vouch for our stability and reliability.  Those recommendations mean far more to us than a glossy brochure filled with empty promises.  I am sure that if you have an old Lotusphere bag around, you can still find those brochures and promises from a number of companies who were formed after Genii Software and who have now disappeared into the mists of time.

Tags:

Fri 16 Jan 2004, 12:29 AM
As a follow up to the blog yesterday about Text popups on web and Notes client, I took a bit of time and ensured that the Midas Rich Text LSX generates appropriate HTML to accomplish the same mouseover effect without any special hacks.  Since I use Midas to generate the HTML for this blog, here is an example that I built without any special coding except to create the text popup in Notes.

Of course, just as with any enhancement added during an interim version, this is subject to change depending on the results of full version testing.  Also, it should be noted that if you choose to generate HTML with CSS turned off, this mouseover will show as a regular underlined link instead, somewhat like this example.
Fri 6 Jan 2006, 10:44 AM
I wanted a simple demo that shows some of the advantages of the Midas Rich Text HTML rendering engine over the standard Domino engine.  CoexEdit uses the same basic rendering engine, so is virtually identical to Midas.  There are plenty of advantages, but these screen shots capture at least a few.

Notes version (50% size)
Notes client rendering

Rendered with IBM Lotus Domino 6.5.3 (50% size)
Domino rendering

See inside for Midas rendering, larger images and more details... (read on)
Tue 28 Oct 2008, 10:16 AM
Another day, another Two Minute Demo, this time showing how CoexEdit 2.1 uses shared toolbars in web editing when using our customized FCKeditor 2.6.3.  These tool bars allow you far greater control over the UI of the web editing session, and allow you to conserve space when using multiple rich text fields.

Click on the image below to view the demo:


Shared toolbars in CoexEdit 2.1

Tags:

Fri 2 Sep 2005, 09:27 AM
It is gratifying when people appreciate the software you have written.  In response to my Parse table into separate documents sample code that I posted about yesterday, Michael Bayerl had this to say in the Gold forum (here):
Ben, I downloaded the Midas Rich Text LSX and it worked perfectly! I could transfer everything, pictures, doclinks, tables. Thanks!
Michael, you are very welcome!
Mon 17 Jul 2006, 11:19 PM
Mike MidasBeyond Compare
by Mike Midas, Ace Developer

The day stretched out before me like the Great Wall of China, a thousand miles of mind numbing boredom, and me hell-bent on refusing to take that first step.  That is, until the door opened and in walked a vision straight out of Mao's Little Black Book (the one he didn't publish).  She was petite, if by petite you meant 5'2" and stacked like a couple dozen jets over Beijing... (read on)

[NB: Dedicated to Mickey Spillane, a writer beyond compare, who died today at the age of 88.]
Wed 19 Nov 2003, 03:59 PM
Continuing the customer inspired list of the top ten ways to use Midas which I started a couple of days ago with  #10) Rich text comparisons with red-lining, and continued yesterday with #9 Manage doclinks, URL links and link hotspots, I now offer #8... (read on)
Sat 12 Mar 2005, 11:50 PM
I remember a time in my life when I was in really good shape, getting plenty of exercise, and feeling pretty good.  Then, I started something new for a little bit, snow shoeing, and discovered that I had muscles that clearly were not used as often as the others.  A couple of days of soreness followed. along with some satisfaction that those less frequently used muscles were finally getting a real workout.

This weekend (and yes, it is Saturday night), I have been working furiously, cleaning up CoexEdit, and I can assure you it uses some muscles that were there, but not much used, in the Midas engine... (read on)
Mon 17 Nov 2003, 06:27 PM
I am a frequent reader and poster on the Notes 6 Gold forum as well as the Notes 4&5 Gold forum (How frequent?  See this post), and it has been a pleasure to see a familar name recently.  Neil Wainwright has been working with Notes/Domino for years, and often has very good ideas about ways it should be improved, but he has been away for a while.  Recently, I have seen his name popping up again, and it is good to see.

Anyway, Neil recently posted a gripe about table cell attributes, and why manually set table and table cell attributes don't override the computed attributes Domino thinks should apply.  Domino simply puts both sets of attributes in, and different browsers react differently, depending on whether the first or last attributes applies.  Even when it works, it is terribly sloppy HTML.

So why am I blogging about this?  Why, because this is something our Midas Rich Text LSX does properly, and has for years now.  When a table cell attribute is found that matches one we would add, we skip ours and use the manually added one.  That seems like the whole point of setting attributes.  We do it for cell attributes, row attributes and table attributes, and also for other rich text constructs.  I still think IBM should fix this for their HTML generation, but I am glad we are able to provide an alternative that works for those who need it.
Wed 3 Dec 2003, 11:15 PM
I have frequently gotten asked whether it is possible to call our Midas Rich Text LSX from Visual Basic, or other places for that matter, using COM.  I must admit that while I know customers have done it, I wasn't sure how myself.  Someone even showed me a while back, and I forgot, so I finally sat down and figured it out again and am posting it here so I can't forget again... (read on)
Tue 16 Dec 2008, 02:04 PM
In Part 1, I showed how IBM's rendering of MIME messages could lead your customers to think you were still running Notes R5, and how iFidelity, in beta now, would allow you to send out more professional looking email, rendered as it is in Notes.  In Part 2, I showed how content rendered by Domino on the web was likely to make prospective customers think twice, or more, before buying Lotus Notes, and how CoexEdit could dramatically improve that default rendering.  In this part, I will show how rendering is made even worse when edited on the web, and how CoexEdit can improve that process as well.

In order to avoid any suggestion that I am cherry picking data, I will use a well known database, my Lotusphere 2009 Sessions DB, and do a simple Edit - Copy As - Table and make no changes, but simply copy into a rich text field.  I will use a sample database I have for editing.  This db has two identical rich text fields into which I will post the data.  The top rich text field is set to render using Domino and edit as Best Fit for OS under Domino 8.0.1 and the new Use JavaScript Control under 8.5 beta.  The bottom rich text field is set to render using CoexEdit and edit using CoexEdit's web editor (customized FCKeditor).  Take a look at the before, during and after of each.  I think you will see why customers object to the standard methods, and will not be much mollified by Notes 8.5.

(read on) to see the state of editing with Notes/Domino with and without CoexEdit.

Tags:

Tue 5 Oct 2004, 02:43 PM
Using @DbColumn to Access Rich Text Tables

Back in February when our new @Midas Formulas was in early beta, I got some requests for a "for Dummies" version of how to use @Midas Formulas.  Since I have never actually read one of the "... for Dummies" books, I took my inspiration from Tom Duff and Joe Litton's excellent presentation at Lotusphere 2004, BP117 - Java for Lotus Domino Developers and I have decided to repeat the series, updating it where necessary, to provide a resource for new evaluators and users.  

One of the best things about the Lotusphere presentation was that it made LotusScript developers realize how much they already knew about Java development in Domino, because they already knew the object model.  Similarly, using @Midas Formulas isn't learning how to do something new, it is learning a new way to use something you already know... (read on)
Thu 12 Jan 2006, 01:30 AM
Continuing the customer inspired list of the top ten ways to use Midas which I started a couple of days ago with   MRTYB with Midas #10 - Rich text comparison with red-lining , and continued yesterday with MRTYB with Midas #9 - Doclinks, URL links and link hotspots, I now offer #8...






#8) Build dynamic forms

Description
Midas empowers the developer who wants to go "a bit farther" by giving access to design elements such as forms, subforms, pages, image resources and shared fields.  In particular, the power to create and manipulate forms is a key to building truly dynamic applications.  All of the more "normal" functionality in Midas comes into play, so fields can be created inside tables, or embedded views added in layers, or upload controls added for a web form, or a table with a set of related fields in one row can be extrapolated to have each matching field copied to additional rows and keep the relationship between them. It is even possible to store a form in a document and then modify it there, customizing each document to its exact purpose. 

History
Midas was originally created for and intended for use with rich text fields, but as more users saw the possibilities, more started asking for extensions to allow form manipulation, since forms are "just more rich text".  After developing a model that would make it easy to work with the very complex attributes and formulas associated with design fields, we added the option to work with forms in Version 2.00 in September, 1999.  Many enhancements have been added since, including the ability to work with related design elements, and enhancements continue to be made to ensure that Midas makes form creation and manipulation as easy as creating and manipulating any other rich text.

Comparison with standard Notes/Domino functionality
Notes 6.x has incorporated some ability to create design elements using DXL, which can be exported and re-imported, but the ease of use is very low, given the need to understand XML parsing as well as the somewhat arcane DXL format.  Even the simplest change to a field would require exporting and modifying the entire form, and the ability to store and manipulate forms stored in documents is not supported.  Other than this DXL approach, there is no support in the standard Notes classes for any forms manipulation at all.

Documentation
Documented in the Help database by looking at the properties, methods and events associated with creating and modifying fields, including the AppendField method and UserModifyField method, as well as the use of many other methods and properties which relate to other rich text which might go on a form, such as the AppendTable method, the  AppendLayer method, the AppendResource method for adding image resources, the AppendHotspot method for adding embedded elements such as upload controls, subforms, embedded views, etc.  There is also a Working with fields and design elements article under 02 Reference Guide/02 Working With/Working with fields and design elements.

Screenshot (from Form Design sample db - see below)
Inline JPEG image

On-line demo
Create Form Dynamically: A very simple demonstration of creating a form with fields.

Sample Database
Form Design (Notes client) Forms/Fields
This sample shows some of the design possibilities, including creating a new form that extrapolates fields from an old form, and manipulating a stored form.
Sample Script Snippet
This is taken from a sample created for a customer:

' *** Set up an entering and exiting script for a new field, showing the long and short form
rtchunk.EventRetString1 = |LotusScript:Entering:Dim ws as New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
Print "Universal ID is " & doc.UniversalID|

rtchunk.EventRetString2 = |LotusScript:Exiting:Print "You are in the exiting event"|
rtchunk.EventRetShort1 = 2
Call rtchunk.AppendField("Subject", "Text", "Editable", "", |@If(Subject=""; @Failure("Subject is required"); @Success)|)

' *** Skip the entering and exiting scripts by re-setting the EventRetShort1 field to 0, and add another field
rtchunk.EventRetShort1 = 0
Call rtchunk.AppendField("Body", "Rich Text", "Editable")
Thu 21 Jul 2005, 04:05 PM
I have been thinking about the difference between documentation for products in PDF (or Word or WordPro) versus documentation in a Notes database.  There are advantages to each.  Documentation in a PDF document can be easily printed or downloaded.  Document is a Notes database can be more easily categorized in different ways.  I had just about decided that our product solutions, such as CoexLinks and CoexEdit, should be documented solely in PDF/Word format, and our product tools, such as the Midas Rich Text LSXMidas Rich Text C++ API and @Midas Formulas, would have databases (actually, they share one database) to allow separate handling for each class or method.

But, here we are, about to release CoexEdit 1.1, and already I am not so sure.  CoexLinks works fairly well with a PDF/Word document, and CoexEdit is installed the same way, and each solves a single problem in a simple, elegant way, so I thought they would be more similar.  What I forgot was how complex the web, and the web editors, can be.  CoexEdit needs documentation on more than installation.  It needs troubleshooting that has nothing to do with CoexEdit as software, but rather has to do with the web editor the developer is installing.  Since the developer thinks of that as going along with CoexEdit, and since CoexEdit won't work unless the web editor is installed properly, there are lots of little things to document, and there will be increasing numbers as we add direct support for more editors.

So, I am building a CoexEdit Help database.  It shares a basic design with the Midas Help database, but the content is fairly different.  There are some basic configuration technotes, release notes as issues are fixed and enhancements made, and then room for lots of growth in the web editor area.  Now, if only my daughter were not off working in college, she could help me write all this.  Sigh!
Wed 14 Dec 2005, 12:27 PM
A couple of months ago, we made a change to our Midas Rich Text LSX pricing, and never really talked about what the changes were and why they were made.  The changes only effect Enterprise licenses for now, but we may adopt the same change in the future for other license levels, or perhaps make it optional for those levels.

The change is simple.  We now charge 20% annually for maintenance on all Enterprise licenses (or equivalent size licenses).  We have never charged for maintenance on our Midas Rich Text product line, but we actually instituted this change based on a suggestion by an Enterprise license customer.

But why?  Why would a customer who isn't paying for maintenance want to start paying for it?  Well, in this case, the customer is also using another of our products, CoexEdit, which does have a maintenance charge.  The customer said (and I paraphrase slightly):
If you release a major release for CoexEdit, it doesn't cost me anything extra, but if you release a major release for Midas, I have to face paying 50% of the cost all over again.  That is going to be hard to get through approvals.
This comment set me to thinking.  If we release a new major version of Midas every two and a half years and charge 50%, why not just charge a standard 20% per year and not charge to upgrade.  That would be easier for most companies to swallow, and would encourage people to upgrade more readily.  (I know, I sound like IBM, but it really is true)

Of course, there will be the rare company that would not have upgraded that now pays extra.  There will also be the companies who got an Enterprise license a year before a major upgrade and only paid one year's maintenance before upgrading, thus saving 30%.  Since the vast majority of Enterprise license customers upgrade to major versions, I think the majority of customers will wind up saving money.  In addition, maintenance is standard enough, the people who need to justify upgrades will have a much easier time, and companies will have a more predictable cost for planning purposes.

So there you have it.  Saving customers money by charging them more.  I should be in sales or something.
Tue 16 Dec 2003, 01:13 AM
Rich Text 101 logo
Long before tabbed tables and embedded views, Lotus introduced an exciting new feature, the collapsible section.  This was in Lotus Notes R4, back before Domino and the web, and the change it made was revolutionary... (read on)

Tags:

Wed 9 Nov 2005, 12:03 PM
I am trying to decide whether to use screenshots more, perhaps as a story like Linda Discovers CoexEdit and perhaps even more simple than that, or whether to produce movie snippets, such as this very rough movie clip about our Midas Rich Text LSX Report It! sample.  Obviously, I would add call outs and such, but I wonder whether it would help people who wanted to see what the sample did before requesting an evaluation license, installing and downloading the sample.  Might you want to just see a movie clip first?
Tue 6 Nov 2007, 11:18 PM
Version 4.00 of the Midas Rich Text LSX and Midas Rich Text C++ API has several major themes, one of which is better control of file attachments.  In addition to some new methods, such as the RenameAttachment method and the RefreshAttachmentIcon method, there is a new file icon rendering technology which is available with both of those new methods and with existing  methods such as the AppendFileAttachment method.  This file icon rendering allows the developer greater control over how the file icon, or graphic, appears in the text.  For example, a traditional MS Word attachment would add a wide gap in the text, looking like this[Traditional vertical MS Word file icon], but with the new file icon rendering, the same file could fit better inline as [New horizontal MS Word file icon].  In addition, the new file icon rendering technology allows you to add prefix text or suffix text, either to a traditional vertical file attachment.  For example, a Lotus Presentations file icon would normally look like this[Traditional Lotus Presentations (.odp) file icon], but could have a copyright suffix, for example, such as [Lotus Presentations file icon with copyright suffix] or could have an author prefix, such as [Lotus Presentations file icon with author prefix], both of which give greater control and additional information.  Information can be prefixed or suffixed with horizontal file icons as well, for example an author prefix (although any text is allowed) would look like [Horizontal MS Word file icon with author suffix].  Please note, the light grey background is added with horizontal icons to make it clearer that they are one clickable item, but the color could be changed, or even added to just the prefix or suffix text.  For example, it is possible that a mail system could warn users about potential hazards by recreating the file icon for an executable to include a warning and a specialized icon.  For example, might your users show a bit more hesitation before clicking [Custom executable file icon with red caution suffix] rather than the appealing looking [Traditional executable file icon]?  Please note, by the way, that these are real changes to the rich text, not just the HTML rendering, although the HTML rendering would display the same look.
Mon 19 Apr 2004, 11:17 PM
I had a customer request to pick up where I left off with my customer inspired list of the top ten ways to use Midas which I started back in November with:
#10) Rich text comparisons with red-lining
#9 Manage doclinks, URL links and link hotspots
#8 Build dynamic forms
#7  Work with images in rich text and in image resources

A pretty good list so far, but I now offer #6 (with apologies for the long hiatus)...


#6) Construct complex and elegant reports


Description
While it is said that a picture is worth a thousand words, your boss probably won't accept a picture, so what you really need is a report... (read on)
Mon 26 Apr 2004, 11:47 AM
Over on LNDCentral, which you should check out when you have a chance, there was an interesting article which caught my eye entitled Domino.doc implementation nominated for "IT project of the year".  This relates the story of HSBC moving implementing the e-Documents phase of its ambitious 'Future Workplace' initiative.
The e-Documents project has already enabled the company to eliminate nearly 70 per cent of its estimated 56km of stored paper and reduce its physical paper storage needs from 5.2 metres per person to just 2 metres.
The e-Documents team estimates that up to 3 terabytes of storage will be required for juts the first year.

The e-Documents project encompasses a lot of data stored a lot of different ways, but one of the sources of data is its extensive Notes/Domino system.  So, when documents are to be taken from that system and put into the new Domino.Doc system, what technology do you think they needed?

Midas Rich Text LSX technology.  The IGS consulting team working with HSBC had heard of the Midas Rich Text LSX's  ability to generate high quality HTML and its ability to allow great control of the generated output, and had experience with Midas from other projects, so they contacted us to set up tests to be sure that Midas scale to this level of throughput.  After all tests were deemed "extremely successful", HSBC incorporated Midas into the plan.

Almost a year and a half later, HSBC continues to use Midas, and has recently found new ways to use the technology.  In addition, HSBC divisions in other countries are also looking at using the technology.  Truly my idea of "IT project of the year".
Wed 22 Jun 2005, 11:04 PM
I have been trying an experiment, and I wondered if anybody would care to take a look.  I got some feedback about the screenshots with CoexEdit that it was hard to tell what the point was.  I thought about this some, and realized that the better we do with CoexEdit, the harder it is going to be to look at the same rich text field in Notes and the web and get  it.  The whole point is that they look the same, but looking at two screen shots that look the same isn't very compelling, so I wrote a little story: Linda Discovers CoexEdit

So, does this story do a better job?  Is it too campy?  What do you think?
Wed 11 Feb 2009, 10:10 PM
While I had fun at Lotusphere showing demos of the iFidelity beta, there was one question I kept getting after the initial enthusiasm: "But does it handle inbound fidelity?"  Now, I have to tell you that handling rich text to MIME (i.e., outbound fidelity) is a difficult mess, but handling MIME to rich text is a horrible, sticky, nasty pile of steaming difficulty, so my gut reaction was to say "No way!"  Obviously, because CoexEdit is a successful product, I have most of the inbound engine already, but most and all are very different.

Unfortunately, the customer is always right, and after more repetitions of "the question" from beta testers, I knuckled down and started to work.  Now, I am glad to report that while it may never be as complete as outbound fidelity, as of Beta 2, iFidelity will be able to handle inbound mail fidelity as well.  To give you an idea of what that means, take a look at Peter von Stöckel's latest test results, iFidelity - Test 4.  The core problem is that while iFidelity may make the mail look better in Gmail, when it gets back to Notes, it doesn't act better.  The person sending a tabbed table isn't going to be thrilled about a reply or forward with a pseudo-tabbed table.  The person sending a section expects a section back.  Even if the other email client can't handle tabbed tables or sections, that is no reason why a reply or forward to a Notes user who has iFidelity should not get the full experience.

(read on) to see example.

Tags:

Thu 21 Mar 2013, 09:11 PM
As I mentioned earlier, I decided to record the very first time I tried the Midas Rich Text LSX in Notes 9, just to live dangerously. Both Notes and Midas came through with flying colors, and even I was surprised at the second database's compatibility. You'll see why.
 
 
 
Update: For what it is worth, later on I also recorded live my first test of Midas inside the browser plugin: First Test of Midas in Notes browser plugin recorded. 
Tue 19 Mar 2013, 04:16 PM
In keeping with these new mini-demos, I made one about the Progressive Disclosure technique I sometimes use. You may have even seen me show this at Entwickler Camp a few years back. This uses no LotusScript or formula language, so anybody can do it without even a Designer client. It can be put in a rich text field or on a form or page (though those latter would need Designer).
 
Let me know if you enjoy this sort of mini-demo. If people like them, I can start doing them on XPage topics and other more recent items of interest, such as new features in Notes 9.
 
 
Fri 22 Jun 2012, 10:46 AM
After a few successful engagements with specific customers, I am starting to open the door a little wider to handling data conversion/migration on a consulting basis. For years, people have used the Midas Rich Text engine for high quality conversion to HTML and MIME, but I have additional tools to convert whole databases, validate/fix broken images, validate/fix broken links, etc. I am looking at working with customers who need this handled on a project or hourly basis, and who don't have the staff, expertise or inclination to work on the process in-house. Additionally, I have tools that I am not planning on releasing publicly which would be available for these conversions.

Targets for converted data would be:

a) XPages where higher quality rendering of Notes classic data is desired
b) migration of data to Sharepoint or SQL-based systems
c) snapshot migration of database(s) to HTML collection so that they can be delivered to a customer without Notes.

Happy to discuss with anybody interested. I am willing to collaborate with other consulting companies who need this to provide as part of a larger project.

Update: Wow, this has been better received than I expected as a new offering.
Tue 30 Nov 2004, 09:18 AM
I am just having too much fun with the new (soon to be released) universal @DbLookup.  To give you an idea of the flexibility, here are a few formulas.  See if you can figure out what they do, and why they would be used, then click on the answer to see how close you came:

@DbLookup("Midas":"NoCache"; ""; @DocumentUniqueID; "Body":"Paragraph  *"; "Bullet"; "Text"; "KeyProperty=ParagraphStyle KeyMatch=Substr");

Answer

width := @Sum(@DbColumn("Midas":"NoCache"; ""; @DocumentUniqueID; "Body":"Graphic *"; "GraphicWidth"; "Format=Number"));

Answer

filesize := @Sum(@DbLookup("Midas":"NoCache"; ""; @DocumentUniqueID; "Body":"File *"; ".doc"; "FileSize"; "Format=Number KeyProperty=OriginalFileName KeyMatch=Ends "));

Answer

@DbColumn("Midas":"NoCache"; ""; @DocumentUniqueID; "Body":"Section  *");

Answer

anchors := @DbColumn("Midas":"NoCache"; ""; @DocumentUniqueID; "Body":"Anchor  *"; "AnchorText");
@If (anchors != ""; "["+@Implode(("<a href=\"#"+@ReplaceSubstring(anchors; " "; "%20"))+(("\">"+anchors)+"<a>"); "<br>")+"]"; "")

Answer

Mon 11 Apr 2005, 08:46 AM
A customer ordered some Midas Rich Text LSX licenses last week, but only after saying that he had tried three times to place an order on our website and gotten an error each time.  Since others had ordered successfully, and since I was unable to reproduce the problem, I assumed it was "operator error", but it is my job to avoid the possibility of operator error, so I kept digging.  It turns out that we had some numeric fields that would error out in an unpleasant and unhelpful way if a potential customer entered fifty instead of 50, for example... (read on)
Tue 2 Dec 2003, 09:25 AM
I am working on a project to test and improve coexistence between the Notes client and the leading web based rich text editors, whether they are DHTML based, Java based or whatever.  I have a list of some, and wondered if any of you know of others.  Also, if you have strong feelings about any of these, pro or con, let me know that as well.  Some of the editors I know about are listed below, along with others I found on a quick scan of the web.

Know any others?  Have any strong opinions about the usefulness of any of these, about the level of support, about integration with Notes/Domino?  Which have you used, and which do you think are most popular.  Let me know what you think.  I'll try to take the final results, along with my project findings, and publish some useful results at the end as a resource for others.

EditorComments
Known, or recommended
Java applet that comes with NotesYuck, but I have to work with it anyway, I guess.
MS DHTML controlFreebie available from Microsoft is basis for some of the other editors, such as eWebEditpro and EditLive! for Windows (I think)
eWebeditProIntegration with Domino done by Ken Yee
EditLive! Both an EditLive! for Windows and EditLive! for Java
RealObjects edit-on Pro
DevEdit
htmlAreaRecommended by Ruediger Seiffert in Gold 6 forumDHTML based editor, and free
Know nothing about - found via search
WebEdit ProfessionalMore of a website management tool, but looks like it could be used to edit content.
WebEditCan't tell whether they are resellers or this is theirs.
Web-EditNot sure whether it is really a rich content editor, or a website editor
Web Wiz Rich Text EditorSays it is "free"

Thu 9 Sep 2004, 04:46 PM
Ed Brill has announced the opening of the 2005 Lotus Awards nomination process on his weblog.  I am trying to decide whether to enter our Midas Rich Text LSX in the Best Tool/Utility Solution category.  I have mixed feelings about awards, as evidenced by the fact that I haven't nominated Midas for any awards anywhere in the past six years.  I did nominate it for a Beacon Award, as the Lotus Awards used to be known, in 1998, but I was informed by those on the inside that they weren't about to recognize a product that did core functionality better than Notes... (read on)
Tue 27 Jan 2004, 09:21 AM
Serendipity is the discovery of something valuable while not looking for it.   While often applied to scientific discoveries or revelations, such as Newton and the apple, it is a frequently experienced phenomenon among developers.  While trying to solve one problem, a solution to a completely different problem is revealed.  Take, for example, my grand effort years ago to develop an LSX that would allow structures in Notes.  The first step was to build an LSX that would allow control over the rich text, but when I finished that, I realized I had stumbled on something much more valuable than the original goal, and 850 thousand licensed users in 44 countries later, I'm really glad I stopped and noticed.

Anyway, back to the rich client... (read on)
Thu 22 Sep 2005, 10:02 AM
A friend pointed out this listing on monster.com, a popular job listing board.  The list of skills required (emphasis added by me)
Lotus Notes 6
Lotus Scripting
Lotus Configuration
Lotus Workflow --- Important
Lotus Certified - Preferred but not necessary
Information Management Experience 
Utilization to limit conflicts
Business Automation
Experience with MIDAS is a plus! (rich text handler)
Reference Data
Solid Report experience.. i.e.: manipulation, recreate, Lotus Freelance, MS Office(powerpoint)
Experience with Proprietary Systems
Team oriented
Solid written and verbal skills
So there you have it.  Learn Midas and find a job more easily.
Sat 2 Aug 2003, 09:57 PM
I was reading Joe Litton's post entitled Notes/Domino developers: it IS time to learn Java, and I thought maybe it ws time to re-introduce the concept of Midas for Java.  I have raised this flag in the past, as many as four years ago, but nobody saluted then.  Now is your chance again.  Would you like to see a Midas for Java, basically as a fully compatible Java version of the Midas Rich Text LSX?  Same chunk definitions, same flexibility, almost identical naming (you would need get/set pairs for "properties", and that sort of thing)?  It wouldn't even be that difficult, except for the QA and inevitable documentation issues, but I'd want to see some interest before going forward.  Speak up now, or don't complain later that we weren't listening!
Wed 13 Sep 2006, 05:39 PM
Well, I've decided to throw my hat back in the ring and submit some Lotusphere abstracts.  Two are for sessions I've done before, although with some hefty modifications.  Two are for sessions I've never done before, and don't even have completely mapped out in my head.  Only one is for the longer JumpStart format.  Some of the topics may surprise you if you just think of me as the "rich text guy", but none should surprise you terribly if you have been a regular reader of this blog for the past few years.  I guess I'd best not say more, as I don't want to jinx the process, but I have my fingers crossed.

Update: I've submitted a fifth abstract, on the spur of the moment.  It is titled "A Magic Carpet Ride".  Any guesses either what it is about or whether it is likely to be accepted?

Tags:

Fri 28 Oct 2005, 01:07 PM
I am likely to expand on this later, but a reader in the support forum suggested I repost this here:

Question: Can text be placed on an image for display in a Notes Client?

Answer: (read on)
Wed 4 Apr 2018, 02:39 PM
 
 
There's a lot of talk about GDPR and its implications for Domino and other software environments. One frequent reminder is that backups and archives are included in the right to be forgotten. Now, if you are a small shop and have infrequent GDPR requests, anonymizing backup and archive copies might be a tedious but doable task. But what it you are faced with many of these?
 
One possible solution is the idea of pre-anonymizing. Imagine that every named person is given a unique id code, and a lookup table is maintained. Then the backup or archive process itself could include a translation process where the named person was replaced with the unique id code. If there were some later point where the named person needed to be forgotten, the archive itself would be left untouched and the index containing the name to id would have the name removed. Thereafter, the id would return "not found" when anyone tried to retrieve the name.
 
This isn't a perfect solution, and there might need to be a periodic garbage collection where all unknown ids were converted to a single UNKNOWN id, but particularly for difficult to access backups stored in long term storage, it would provide a way to "forget" without altering the storage. It also might require too much effort per backup/archive, though it would also conversion of various names, nicknames, email addresses, etc. to the single code, which would also make retrieval of information on a request easier.
 
I do wonder how referenced but non-specific names in rich text would be handled. If the rich text says "Alan told me we could bill Krangdon and CC it to Krangdon's VP of Operations" would Alan and Krangdon's VP of Operations need to be identified by context for both the purpose of notification and anonymization. I imagine there is some level of specificity beyond which you could not be expected to identify a person (e.g., Jim's wife), but if I am wrong, Watson is going to be needed just to find the references. Interesting times.
 
Note: For what it is worth, it would be possible to pre-anonymize working Notes databases, but it would take more effort than seems worth it. For example, in ACLs and such, you could use the id and then have a group named after the id with a single member for each internal user. But other places would be worse, and there would need to be lookups frequently, so I doubt it is a good idea.

Tags:

Thu 17 Sep 2020, 02:45 PM
 
Inline JPEG image
 
 
I'm spending the week talking about Exciton Boost's features and some comparisons with Domino Access Services. Today, I'll talk about rich text rendering to HTML. It doesn't sound sexy, and you may think it is just about looks, but data is at stake here, so pay attention.
 
  • Key Concept: Content delivered should be the same content requested,
  • Differentiator: Exciton Boost uses the Midas engine for rendering, providing the most accurate and highest fidelity available anywhere.
There are multiple rich text to HTML rendering engines in Notes/Domino, and they all have problems. By using the award winning Midas engine foir our rendering, Exciton Boost provides high fidelity HTML that matches the content and look-and-feel of the rich text in Notes. I will show two examples, both fairly common scenarios that exhibit data loss or mangling, and both of which could cause confusion on the client app. These use the Domino Access Services REST API available in Domino 11.0.1.
 
Example 1) Nested List Confusion
 
Nesting in lists in Notes is created by indentation, and people are often sloppy about how much they indent.
 
Question to ask yourself when looking at the results of each. Is point D "Legal" or "Benefits"?
 
 
Nested List Confusion - What it looks like in Notes 11.0.1 client
 
Inline JPEG image
 
 
Nested List Confusion - What it looks like after GET from Domino Access Services 11.0.1
 
Inline JPEG image
 
 
Nested List Confusion - What it looks like after GET from Exciton Boost 4.5.0
 
Inline JPEG image
 
 
Example 2) Form Elements
 
Whether through forwarding or RenderToRTItem or define a field as rendering the parent document, it has always been quite common to see "form elements" such as radio buttons and combo boxes in rich text fields. Many applications even use this as part of the workflow. So, while the look of the tables is notably different, try to ignore that and focus more on the data
 
Questions to ask yourself when looking at the results of each: What is the value next to "Product"? Is this "Chargeable?" Is a Reminder Needed?" What is the "Status"? These vital pieces of information should be discernible from the HTML generated, no matter what the appearance. 
 
 
Form Elements - What it looks like in Notes 11.0.1 client
 
Inline JPEG image
 
 
Form Elements - What it looks like after GET from Domino Access Services 11.0.1
 
Inline JPEG image
 
 
Form Elements - What it looks like after GET from Exciton Boost 4.5.0
 
Inline JPEG image
 
 
 
There are many more examples of data loss, corruption, obscuring, and that is even before considering the professionalism of the rendered rich text.
.
 
==> Request a free Exciton Boost evaluation license, and we'll send you the license and a link to the software as soon as it is released. <==
 
 

Tags:

Sat 16 Sep 2017, 02:24 PM
I wanted to demonstrate what our new Defect Detection (and correction) looks like, but the various examples I have are all covered under NDA. So, in this series, I will break some of my own images in the way the customer images are broken. (These are all scaled down from the original width to make them fit on the blog better.)

Original image (scaled down)
Inline JPEG image


1) Image header lists n segments, but there are only m (where m < n)

For my first example (going in the order of this blog post), I take the same image saved as GIF and JPEG (using GIMP) and imported into Notes rich text, then broken using the Midas LSX. In the GIF format there are two "image segments" in rich text, while In the JPEG format  there are six "image segments". This simply means that the raw image data is spread out over a few different CD records. When an image "breaks", it is often because some of the trailing image segments are lost, or rather overwritten. Below, I show the same image, first broken by removing the last few image segments (half of them), then fixed by the Defect Detection system in CoexLinks and AppsFidelity.

As you can see, many "fixed" images aren't perfect, but they are often legible enough to read. If the information on that image is critical, wouldn't you rather see of the those rather than the white box below?


Broken images (all look like this in Notes)

Inline JPEG image


Fixed JPEG image (minus half the image segments)

Inline JPEG image


Fixed non-interlaced GIF (minus half the image segments)

Inline JPEG image

Fixed interlaced GIF (minus half the image segments)

Inline JPEG image

Tags:

Thu 16 Dec 2010, 10:00 AM
It being the last day for free shipping from Amazon before Christmas, and thus a good day to do a bit of cyber-shopping, I thought I'd use a Carousel widget to show a few things I might or might not have just bought (depending on whether you are one of my family peeking, in which case pretend you never saw this).  While this might spark a few ideas, it also sparks a bit of a challenge I have set for myself for the Lotusphere Sessions db.

I want to make a Carousel in rich text that works like this, but without XPages and without the web browser.  I want it to work in any version of Notes from 6.5 or so, up to 8.5.2, so obviously it has to work in both Notes Standard and Notes Basic, but without embedding flash objects or requiring Midas to run or anything else that would send Warning Warning Danger Danger, Will Robinson  vibes out.  Last night, I woke up with a possible idea of how to do this, and I'd like to see if I can make it work and put it into the sessions database, perhaps just for the books, but perhaps in the sessions for a different purpose... (read on)

Tags:

Mon 22 Jun 2009, 03:03 PM
One of the extremely frustrating things about working with Notes rich text is that it contains so many great ideas abandoned at the end of twisty passages, waiting to be discovered and revived by an intrepid future developer, except that the intrepid future developers have all wandered off to do Ruby on Rails or Flex or whatever.


(read on) to see the clue I am offering IBM... free of charge!

Tags:

Wed 27 May 2009, 03:52 PM
These two questions usually comes up fairly quickly, especially with smart Notes-savvy consultants:

1) What is the point of iFidelity when most email is just plain text, without tables and sections and graphics and doclinks?

2) My clients are all moving to Notes/Domino 8.5, so won't that fix most of these rendering issues?

Both are good questions.  I'll pose one back: what do most management people like to use with their email that is improved in Notes 8.5?

The answer is, formatted signature blocks, which can be created in rich text in Notes 8.5.  I get a lot of emails from higher-ups at IBM and many other organizations, and virtually every one has a signature block.  There is often a logo, an email address, a phone number, etc.  Most of these people care a lot about appearance and professionalism.  So, since I am President of Genii Software, I'll fill in for these ladies and gentleman in the following example:


(read on) to see the screen prints.

Tags:

Wed 6 Oct 2004, 09:06 AM
Using @DbLookup to Access Rich Text Tables

Taking inspiration from Tom Duff and Joe Litton's excellent presentation at Lotusphere 2004, BP117 - Java for Lotus Domino Developers, I am updating a short series of posts I first wrote last February showing how using @Midas Formulas is taking what you already know and extending it... (read on)
Tue 13 Apr 2004, 02:07 PM
I continue to be impressed with IBM's commitment to their Domino Express pricing.  In response to requests from BP's (and probably customers as well), IBM has agreed to include the IM entitlement for those buying through Domino Express.  Makes a good deal even better.  A twenty person firm could migrate to the Domino Collaboration Express license, get full use of Notes and Domino including the server and clients, and now also the IM capabilities, all for $1785.

Of course, with those prices they would have saved enough to pick up a quick copy of our Midas Rich Text LSX for only $500 (with the Very Small Business discount).  Now, that's a bargain! <grin>
Thu 21 Apr 2005, 11:10 AM
On the Notes 4 & 5 Gold Forum, Carl C;. Levin responded to a post of mine:
I followed your link and just wanted to say i thought you wrote that in a manner that was direct, simple , easy and most of all,understandable.  I printed it out.  thank you

Now I'm curious if you have other articles and tidbits that are available..........??
Once I stopped blushing, I responded, and I thought that perhaps some of my current readers would like to see this list as well, so here it is, in no particular order... (read on)
Tue 5 Oct 2004, 11:27 AM
OK, where I would like to be is in London, listening to Andrew talking about the new Rich Client, or just hanging out at Geek dinners, or perhaps listening to Ed's keynote.  I was even on the agenda, but I had an unavoidable conflict here, so instead I am readying release 3.40 of our Midas Rich Text LSX and feeling left out (aside from a short visit to Chicago yesterday).  Oh well, I guess sometimes I have to actually work.
Thu 8 Jan 2009, 04:43 PM
By now, you have probably completely dismissed my rants about email rendering.  Chances are good, you don't give a hoot how the email renders.  Your company may not have any customers whom you contact through the Internet, or may even have a policy of sending all e-mail to the Internet as plain text.  Very sensible.  Your company may also not have any DAMO or Outlook clients.  You are a pure IBM Lotus Notes/Domino shop, and proud of it.  CoexLinks 3.0 is not necessary at all.  No way!

Well, not until your CEO opens that nicely formatted, completely internal, completely rich text email from iNotes on her laptop in Waikiki.  No worries, this is a good time to be looking for a new job, anyway.

CoexLinks with better rendering for Notes

Tags:

Fri 19 Jun 2009, 04:16 PM
One of the more baffling things I find about IBM is how they cater to executives and big companies in so many ways, and then stomp all over them in others.  Certainly, it is true that executives are not the only folks who could use a highly functional web equivalent to their Notes client mail, but many executives are highly mobile and want access to their mail whenever and where ever they may be.

IBM's response has been to go to great lengths to fix up the mail experience, and I have to tell you that iNotes 8.5 is truly beautiful, but they seem to have forgotten that the essence of email experience is not how sleek the Inbox looks, and the clever Web 2.0 bells and whistles, but the email itself.  It is like trying to improve mail service by painting your mailbox over and over in the "newest colors".


(read on) to see how iNotes ruins an executive's day.

Tags:

Fri 13 Jan 2006, 01:39 PM
Here is the next in my customer inspired list of the top ten ways to use Midas which I started a few days ago with MRTYB with Midas #10 - Rich text comparison with red-lining , continued two days ago with #9 - Manage doclinks, URL links and link hotspots, added to yesterday with #8 - Building dynamic forms.  I now offer #7...







#7) Work with images in rich text and in image resources

Description
Midas has long allowed developers to access and modify images, referred to as graphics in some cases.  From the early days when all images were stored in internal Notes bitmap format to the current images that may be JPEG or GIF images, and may be stored in native form or as attachments or even URLs, and even image resources that may be included in a rich text field or on a form, Midas has given access to all of them.

History
The ability to import images has been available since Version 1.00 in June, 1997.  As additional formats have been added, Midas has been enhanced to handle the new formats, then to add image resources, and finally to modify the attributes on graphics such as alt text, image hotspots, and image flow (how text flows around the image).  As recently as Version 3.20, we have added the ability to convert Notes bitmap images into GIF images, thereby saving a great deal of space and making export of the Notes bitmap images possible.

Comparison with standard Notes/Domino functionality
Notes 6.x has incorporated some ability to access images, but mostly only to delete them or move them about.  There is no facility in the backend to import images, no facility to modify the attributes of the image, no facility to export or extract the images.  In short, the Notes model barely handles images at all.

Documentation
Documented in the Help database by looking at the properties, methods and events associated with importing, exporting and modifying graphics, including the AppendGraphic method, ExportGraphic methid and SetTargetProperties method, as well as a series of properties such as GraphicWidth and GraphicHeight, GraphicFormat (which shows whether the graphic is in Notes bitmap format, JPEG or GIF format or an image resource), and GraphicOffset, which the special offset needed to use in URL's which reference the graphic directly from the rich text.

On-line demo
None available at this time.

Sample Database
Graphics are used so extensively that there are no specific samples dedicated to their use, but graphics are used in samples such as Walden, Jose's Keyword Replacements, Generate HTML, Export To MS Word, etc.  If we add a Graphics-specific sample, I'll change this post to reflect that.
Sample Script Snippet
This is adapted from a Help database script:

Set rtchunk = rtitem.DefineChunk("Graphic 1")
found = False
While rtchunk.Exists And Not found
  If rtchunk.GraphicFormat = "Notes Bitmap" Then
    Call rtchunk.ConvertBitmaps("Format=GIF")
  End If
  Call rtchunk.ExportGraphic(path & doc.NoteID & "_" & rtchunk.GraphicFormat & "." & rtchunk.GraphicFormat)
  found = True
  rtchunk.GetNextTarget
Wend
Sun 29 Jan 2006, 06:58 AM
About a year ago, I started maintaining the Web Editors page to supply a relatively up-to-date list of WYSIWYG rich text web editors...


Results of search for WYSIWYG editors

(read on)
Tue 21 Sep 2004, 01:09 PM
I have been playing around with a spreadsheet sample using our @Midas Formulas.  It is fun, although I'm not sure yet how applicable it is to "real" applications.  Basically, I am using the following table which was pulled from the Lotus Sales Tools db, and which is probably not even accurate anymore, but will serve for this purpose... (read on)
Tue 25 Nov 2003, 11:44 PM
If you haven't seen the news about IBM's new Express pricing for small businesses ($120 per user, no server fees), you should find out more about them.  IBM is finally making a serious move for smaller businesses.  In a similar vein, we introduced our VSB discount for the Midas Rich Text LSX (50% off all prices for companies of 10 and fewer people) a few months back, and it has been very popular.

COEX! Links is the one product left which has pricing more appropriate to larger enterprises.  Can't have that, so we have lowered prices and added a Small Business discount (50% off all prices for companies of 250 and fewer people).  Read the press release for more details.  

Maybe we should call it COEX! Express.  Nah!
Fri 21 Nov 2003, 02:33 PM
After missing a day due to my wife's birthday (duty calls), here is the next in my customer inspired list of the top ten ways to use Midas which I started a few days ago with  #10) Rich text comparisons with red-lining.  I now offer #7...


#7) Work with images in rich text and in image resources

Description
Midas has long allowed developers to access and modify images, referred to as graphics in some cases.  From the early days when all images were stored in internal Notes bitmap format to the current images that may be JPEG or GIF images, and may be stored in native form or as attachments or even URLs, and even image resources that may be included in a rich text field or on a form, Midas has given access to all of them.

History
The ability to import images has been available since Version 1.00 in June, 1997.  As additional formats have been added, Midas has been enhanced to handle the new formats, then to add image resources, and finally to modify the attributes on graphics such as alt text, image hotspots, and image flow (how text flows around the image).  As recently as Version 3.20, we have added the ability to convert Notes bitmap images into GIF images, thereby saving a great deal of space and making export of the Notes bitmap images possible.

Comparison with standard Notes/Domino functionality
Notes 6.x has incorporated some ability to access images, but mostly only to delete them or move them about.  There is no facility in the backend to import images, no facility to modify the attributes of the image, no facility to export or extract the images.  In short, the Notes model barely handles images at all.

Documentation
Documented in the Help database by looking at the properties, methods and events associated with importing, exporting and modifying graphics, including the AppendGraphic method, ExportGraphic methid and SetTargetProperties method, as well as a series of properties such as GraphicWidth and GraphicHeight, GraphicFormat (which shows whether the graphic is in Notes bitmap format, JPEG or GIF format or an image resource), and GraphicOffset, which the special offset needed to use in URL's which reference the graphic directly from the rich text.

On-line demo
None available at this time.

Sample Database
Graphics are used so extensively that there are no specific samples dedicated to their use, but graphics are used in samples such as Walden, Jose's Keyword Replacements, Generate HTML, Export To MS Word, etc.  If we add a Graphics-specific sample, I'll change this post to reflect that.
Sample Script Snippet
This is adapted from a Help database script:

Set rtchunk = rtitem.DefineChunk("Graphic 1")
found = False
While rtchunk.Exists And Not found
  If rtchunk.GraphicFormat = "Notes Bitmap" Then
    Call rtchunk.ConvertBitmaps("Format=GIF")
  End If
  Call rtchunk.ExportGraphic(path & doc.NoteID & "_" & rtchunk.GraphicFormat & "." & rtchunk.GraphicFormat)
  found = True
  rtchunk.GetNextTarget
Wend
Sun 21 Nov 2004, 08:49 PM
This is the third version of my Totally Tabular post.  This combines parts of the other two but accentuates non-@Midas ideas for totally tabular thinking.  To see more about what @Midas can do, see either the Totally Tabular (the 'Good Parts' version) or Totally Tubular (the 'Technology Wonk' version).

Rich text data is still data
I have been doing a lot of thinking about the future of ad hoc data, particularly in light of the upcoming integration of DB2 with the Notes/Domino data store... (read on)
Wed 6 Sep 2006, 02:13 PM
I have blogged before about how much easier it often is selling CoexLinks than our Midas Rich Text LSX.  If someone has doclinks sent through the mail to a non-Notes e-mail system, or merely displayed on their mobile device, they need CoexLinks.  It is not uncommon for a purchase decision to be made within twenty four hours, even if the actual approvals and such take a bit longer.  With Midas, the problem is that it is capable of doing many things, but you have to figure out which sample suits your needs and how to modify that sample to fit in your application, etc. etc.  Purchase decisions tend to take quite a bit longer.

But not always.  Sometimes, an evaluation request comes in one day, and the license is ordered that same day or maybe the next.  I have to tell you, as a business person, I'm happy about any purchase, but as a developer, I am gratified when they "get it" right away.  It just feels good.

Tags:

Tue 27 Jan 2004, 04:56 PM
If you didn't get to my session early, don't say I didn't warn you.  My session was very crowded, and had to go to an overflow room (I feel sorry for them).

Anyway, the session seemed to go well, after a slightly slow start when my video didn't work.  I was more nervous than usual because it wasn't a rich text session, but the flow generally seemed to work, and the demos/samples seemed to make sense (to me at least).  Anybody out there want to comment?  Maybe Buga DiFino?
Fri 23 Jan 2004, 11:20 AM
Rats, in looking at the sessions competing with mine, I realize that CS105 Agile Response to Manufacturing Needs - Notes/Domino to the Rescue: Mercedes-Benz US International is being co-presented by Allison Janicki of Sapphire Oak Technologies (Rocky Oliver's company when he is not being a Lotus Geek).  I worked with Allison earlier this year because Mercedes-Benz decided to use our Midas Rich Text LSX, probably to help their "agile response" be more agile.  I didn't notice that Allison was presenting, but I sure wish I could be there to hear it, especially if she should happen to mention Midas. <grin> 
Tue 19 Apr 2005, 10:12 AM
One of the frequent questions we have gotten about our soon-to-be-released new product CoexEdit is whether it will support the Mac, or whether it can be used if the company has iSeries or Linux or Solaris.  The answer to this is Yes and No.  If you have CoexEdit running on your Windows or AIX server, you can use it from the Mac, and if you have CoexEdit running on your Windows client (yes, there is an optional client component), then you can handle databases that are on your iSeries or other server... (read on)
Fri 13 Feb 2004, 09:18 AM
Updated version of this post: here

Using @DbLookup to Access Rich Text Tables

Taking inspiration from Tom Duff and Joe Litton's excellent presentation at Lotusphere 2004, BP117 - Java for Lotus Domino Developers, I am writing a short series of posts showing how using @Midas Formulas is taking what you already know and extending it.  Yesterday, I wrote about Using @DbColumn to Access Rich Text Tables.  

Notes Lookups vs. @Midas Lookups
The @DbLookup you already know (Notes) is used to retrieve subsets of columns of data based on key or position from Notes views.  The @DbLookup you will soon know (@Midas) is used to retrieve subsets of columns of data based on key or position from Notes rich text tables.  The result of the lookup in both cases is a list, whether a text or numeric list.  The resulting lists can be used in the same way.

Getting Started
So, let's first take a look at the @DbColumn you know (Notes).  The Notes Help shows these two syntaxes:

@DbLookup( class : "NoCache" ; server : database ; view ; key ; columnNumber )
@DbLookup( class : "NoCache" ; server : database ; view ; key ; fieldname )

and simple examples would be :

@DbLookup("Notes":"NoCache";"";"Inventory On Hand";"Hardware";2)
@DbLookup("Notes":"NoCache";"";"Inventory On Hand";"Hardware";"ComponentPrice")

Looking from left to right, you start with the server and database, drill down to the view which acts as a table, filter the results based on the key, then drill down to the specific column of data as seen through that filter.

So, how different is the @DbLookup you use with @Midas Formulas?  Not much.  The syntax is:

@DbColumn(class : "NoCache" ; server : database ; doc-selection ; field ; key; columnNumber [; properties] )
@DbColumn(class : "NoCache" ; server : database ; doc-selection ; field ; row; columnNumber [; properties] )

and simple examples would be :

@DbColumn("Midas":"NoCache";"";@DocumentUniqueID;"Body";"Hardware";2)
@DbColumn("Midas":"NoCache";"";@DocumentUniqueID;"Body";4;2)

Let's look at the differences.  Again, looking from left to right, you start with the server and database, drill down to the document itself, usually identified by note id or unid, then drill down to the exact rich text field, filter the results based on the key or row, then drill down to the specific column of data.  Instead of the view, the @Midas format uses two parameters, the doc-selection and the field to determine the table of data, and then is back to the column, just like the Notes format.  Additionally, instead of specifying a key, one can specify a specific row, thus allowing you to specify a particular cell.  The key, like that in Notes, is matched against the value in the first column.

If it isn't clear, the first example looks at the table in the rich text field (and, yes, you could specify a different table if you wanted), searches for each row whose first text string is "Hardware" and returns the first text string in the second column.  Since there may be several matches, this is returned as a text list.  The second example just returns the first text string the the fourth row, second column.

Properties
Like @DbColumn, the @DbLookup for @Midas Formulas has an optional properties string.  While there are several properties which can be used, you will mostly only need to worry about four:

  • SkipTitle="Yes", "No" or number (number allow you to skip more than one row.  Defaults to "No")
  • SidewaysTable="Yes" or "No"  (defaults to "No")
  • KeyColumn=column (if specified, uses that column to match key.  Defaults to 1)
  • Format="Currency", "Number" or "Text" (to allow you to determine the type of the result.  Defaults to "Text".  "Currency" returns a result which is a numeric list, but skips preceeding characters before the number starts.)

Note that these are the same properties which were important to @DbColumn for @Midas Formulas, with the addition of the KeyColumn which lets you filter based on a different column than the first (score one for @Midas over Notes).  By the way, since it is possible for table cells to contain all sorts of data, there are ways to return just a specified part of that text, or key off a particular part, but those are beyond the scope of this article.

Conclusion
If you know how to use an @DbLookup now in Notes, you basically know how to use it in @Midas Formulas.  Drill down to the table of data, filter it, return what is left and work with it.  Not much of a learning curve, eh?

Coming Soon
Monday, or when I get to it,, I will present a very brief explanation of @DbCommand in @Midas Formulas, although it doesn't fit as well into this mode of explanation.
Fri 27 May 2005, 04:29 PM
I'm not too into the anniverary thing, but I have been writing this since May 2003, and am still very glad I started it.  I was a bit hesitant at first, since a lot of people start blogs, but not a lot keep them up, and I didn't really want to sputter out.  A few stats do seem relevant:


Stats as of last night
559 posts
Over 23 posts per month
322 posts with responses
1275 total responses
2.28 responses per post
3.96 responses per post with responses
Over 400 different people responding to at least one post

I gave two post ratios, because many posts are not particularly meant for responses, but the ones that have had responses have had almost four each.  Seems pretty good to me.
I will do a separate post soon about favorite posts (who can forget Hypothetical Carrots), but here is one I couldn't bear to pass up.


Interesting foreshadowing
One of the first posts I made in May 2003 was called Intuition or Market Research.  It is worth re-reading in total, but here is a somewhat condensed version:
One of the challenging parts of being an independent software vendor is deciding which projects or products to invest in, time wise, money wise and energy wise.  Some vendors do a lot of market research, formal or otherwise, to decide what the market will bear.
...
On the other hand, I also spend a lot of time developing technology that nobody is asking for directly, or that skirts the edge of anything anyone wants.
...
Another example that I am working on right now is HTML -> RT -> HTML technology in a plug in.  HTML generation was another gut feel, and one that has paid off handsomely.  Many, many customers of all sizes and descriptions are using our HTML generation and MIME mail sending ability, which was an offshoot.  Now, I am working away furiously at improving the HTML importing side, so that we can introduce a coexistence tool that allows Notes client apps and web client apps to share rich text even if the web side chooses to use one of the fancy rich text editing tools for the web, such as eWebEditPro.  Currently, sharing rich text between the web and Notes client means losing almost all the richness, but I intend to have a plug in answer for that so almost any authoring tool will coexist more smoothly.
...
My intuition says it will be a big one, but one of my closest ISV friends thinks it is a non-starter.  Who is right?  We'll see.Two years later, and a mere two weeks ago, we released CoexEdit, to a rush of evaluators and generally good feedback.  You have watched the whole process live through this blog, and over the next few months, you should get the answer along with me about who is right.
Thanks to all my readers and contributors!  I hope to do this for a long time to come, but you all make it worth doing at all.
Mon 26 Apr 2004, 04:54 PM
OK, I can't do much more than hint right now, but I happened to be reading the Redbook on Portalizing Domino Applications for Websphere Portal (just some light reading, mind you), and I noticed the following on page 264 (I added the red box around the first paragraph):

Inline JPEG image

We all know it, but it seems satisfying to see it in print:
Rich text is widely used in Domino applications, so it is important to display it in a Portlet.
Darn,  wouldn't it be nice if there were better tools for that?
Tue 12 Oct 2004, 09:26 PM
As I finish up the new samples which should go out with our Midas Rich Text LSX Version 3.40 today (available soon from Midas LSX samples page), I am caught in the dilemma I usually face.  My tendency is to give the names of the samples a fun little twist, but I am never sure whether that makes them less obvious sources of information to others... (read on)
Tue 18 Oct 2005, 09:58 AM
One of our latest CoexEdit development efforts, at the request of a potential customer, but also a logical next step, is to add the ability to attach files from the web at the point where they are desired, the way the Notes client does.  Attachments added through the Notes client are handled properly now, and there are kludgy ways of doing this through a file upload on the form, but it seems to me that someone on the web should be able to attach files where they want in the rich text, and attach as many files as they want.  We are doing this first with FCKEditor, but will certainly add support in EditLive and elsewhere as time permits and demand is demonstrated.  Our only problem now is that backend attachments still cannot include the text of the filenamed as part of the image, but instead show a generic file attachment icon and text filename, both of which are part of the file hotspot.  Not ideal, but the best I can do right now.
Sat 14 Jan 2006, 12:33 PM
I had a customer request to pick up where I left off with my customer inspired list of the top ten ways to use Midas which I started back in November with:
MRTYB #10 - Rich text comparisons with red-lining
MRTYB #9 - Manage doclinks, URL links and link hotspots
MRTYB #8 -  Build dynamic forms
MRTYB #7 - Work with images in rich text and in image resources

A pretty good list so far, but I now offer #6...


#6) Construct complex and elegant reports

Description
While it is said that a picture is worth a thousand words, your boss probably won't accept a picture, so what you really need is a report.  Notes does a fair job of collecting and sorting information into views, but views make lousy reports, whether or not they are printed.  Midas is not a report writing product, but you can write a very elegant report using information collected by views, agents or external data sources.  These reports can be designed for printing (despite rumors to the contrary, you CAN print from Note), or for on-line viewing.  On-line reports can take advantage of all the special rich text tricks available, including tabbed tables, progressive disclosure and more.

History
Since the first version of Midas in June of 1997, customers have been using it to build reports.  At first, these were mostly formatted tables with doclinks, since little else was available in Notes 4.1, but as every Notes release has added features, people have incorporated them into their reports.  Colors, sections, tabbed tables, embedded views, and even layers have been used by everyone from IBM (present condensed reports to top executives reading about the new "internet" back in Release 4.5) down to the smallest SMB.  While very few features are added to Midas for the explicit purpose of report writing, every rich text attribute which is controlled by Midas enables a more flexible approach to report writing.  Recently, SmartRefs were added to Midas, and these have been used in some complex reports to create even richer content.

Comparison with standard Notes/Domino functionality
Notes 6.x incorporates some ability to create tables, which are almost always part of a report, but has offered little in the way of complex formatting or access to rich text elements such as nested tables or specialized attributes.  There is no facility in the backend to import images to "pretty up" the report, no facility to modify to create contextual links, no ability to control layers, etc.  Report writing in the Notes model is little more than support for views.

Documentation
Documented on report writing in particular is fairly slim, both in the Help database and in samples.  While all the methods and properties necessary are available, the ways to put them together are not.  There are, however, many samples available directly from Genii Software showing different sorts of reports and offering code to gt you started.  Try posting a question in the Support Forum if you want one of these samples.  Be sure to describe the data you want to report on and the type of report you envision.

On-line demo
None available at this time.

Sample Database
Report It! 2.0 - Featured Sample (Notes client) Formatted Text, Image Resources, Images, Tables
Sample reports created using the Midas Rich Text LSX.

In addition to this specific sample, the techniques used in Walden are useful, as are those used in the Design Demo sample, although without the fields.  In addition, the AppendTable sample shows how to create some of the tables necessary.

Images of a sample nested tabbed report (showing Fix List db)
This image is captured from the Fix List nested tabbed table report I create from time to time in the Lotus Business Partner forum.  Note that this fairly simple report includes two levels of nesting, links to SPR documents, bullet items, fonts, colors, etc., but still maintains a clean, easy to read interface.  The amazing thing is that in a single page you can see what takes seventy two page downs to see in an expanded view, or four and a half pages even when just collapsed to one category.

Inline JPEG image
Sample Script Snippet
This snippet is taken from the actual script used to generate the tabbed table above.  Note the use of AppendText with various fonts, AppendParagraph to set and clear bullets, and AppendLink to create URL links:
' *** Add the technical area title and set up bullets for items
Call rtchunk.AppendParagraph("-Bullet_List " & NON_BULLET_MARGINS & NON_BULLET_SPACING)
If firstOnTab Then
   Call rtchunk.AppendText(entry.ColumnValues(0), CATEGORY_FONT)
Else
   Call rtchunk.AppendText(Chr(0) & entry.ColumnValues(0), CATEGORY_FONT)
End If
firstOnTab = False
Call rtchunk.AppendParagraph("+Bullet_List " & BULLET_MARGINS & BULLET_SPACING)
 
' *** Cycle through each item, adding links to the full document (on web, although it could easily be doclink or hyperlink)
Set child_entry = nav.GetChild(entry)
Set child_entry = nav.GetChild(child_entry)
 
Do
   Call rtchunk.AppendText("SPR# ", SPR_FONT)
   If INCLUDE_LINKED_SPR = "URL" Then
      Call rtchunk.AppendLink(child_entry.ColumnValues(3), "http://www-10.lotus.com/ldd/r5fixlist.nsf/SPR/" & child_entry.ColumnValues(3))
   Elseif INCLUDE_LINKED_SPR = "Doclink" Then
      Call rtchunk.AppendLink(child_entry.ColumnValues(3), db.ReplicaID, sourceview.UniversalID, _
      child_entry.Document.UniversalID,  "Click here to open SPR document...", db.Server)
   Else
         Call rtchunk.AppendText(child_entry.ColumnValues(3))
   End If
Mon 2 May 2005, 08:41 AM
Face it - you need CoexEditLast night, system testing was going cleanly enough that I opened up the evaluations for our new CoexEdit, and we have already had some evaluation requests come in.  If you would like to be one of the first on your block to evaluate CoexEdit and see what rich text editing coexistence could and should be like, fill out a CoexEdit evaluation request, and as soon as it is released, you will get your evaluation license and be ready to give it a whirl.

Fear not!













Thu 4 Nov 2004, 01:55 PM
One of our oldest and most popular on-line samples for the Midas Rich Text LSX is called Walden (Dynamic Table Manipulation).  Go ahead and try it if you like.  In any case, while it is popular, the interface reflects my UI deficiencies, I'm afraid, and I wanted to clean it up a bit.  The easiest part to do and the hardest part to communicate in this demo is the sorting of the columns.  How do you get people to realize that they can sort the columns? (read on)
Sun 2 Nov 2003, 11:31 PM
Notes/Web Coexistence Tip #2

It is so much fun writing technical content on something other than rich text, I'll think I'll throw in another one from my Advanced Notes/Web Coexistence session at the recent UK Admin-Developer Conference.  Let me know if you think I should keep posting these coexistence tips or retreat back to my rich text cage. <grin>

Back in Notes R4.6, Lotus added a great new feature, anchor links, with the kind of irritating limitation that seems to plague Lotus when adding great new features.  An anchor link lets you go to a specific spot in a document, not just to the document.  Anchors are used extensively on the web as a way to point at another part of the same document (table of contents) or to a specific point on a complex page.  These were destined to be a big hit in the Notes world, right?

Wrong!  As a matter of fact, it is not uncommon to find that developers don't even know they exist, and users, who should be able to use these easily, are not taught to use them at all.  Why, because the product management at Lotus did not think hard about how anchors could really be used, and made two crucial mistakes... (read on)
Thu 26 May 2005, 08:58 AM
Mike MidasSinister Sequel
by Mike Midas, Ace Developer

I'm not the kind of guy who believes in love at first sight, but the sight of those legs was enough to change the kind of guy I am.  Those legs were a harder act to follow than Babe Ruth at the plate, but when she turned, this dame made the Bambino look like some chump on a sandlot swinging at empty air.  I followed her with my eyes, soaking in the view like an Italian sailor on the French Riviera.  When I saw her stop in front of our office and turn to knock on the door, I genuflected in my mind to Father Michael, since his point was made - there was a God after all... (read on)
Wed 27 Oct 2004, 10:00 AM
One of the most popular pages on this website has nothing to do with rich text; nothing to do with Notes/Exchange coexistence; and nothing to do with Genii Software itself.  This is the Domino Limits page, which lists many different limits, either documented or experimentally found, in Lotus Notes and Domino.  This is a living document, created from a post by Mike Woolsey of Solutions by Design in the Lotus Business Partner forum... (read on)
Wed 16 Dec 2015, 09:24 AM
In between dealing with the horror that is Internet Explorer 9 and releasing new versions, I am working on a presentation on data mining in Notes rich text. With that in mind, here is my data mining thought for the day: 
 
There is implicit as well as explicit data and meta data. Explicit is there to be read, implicit is there to be discerned.
 
  1. Explicit data is the content (e.g., field in document; audio of phone call).
  2. Explicit meta data is the context (e.g., db and views where document is found; identity of callers and time of call).
  3. Implicit data is the internal implied context (e.g., words appear to be in English; caller sounds angry and agitated).
  4. Implicit meta data is the external cumulative context (e.g., occasional words in documents by this author appear to be German words which might imply native tongue; calls between person A and place of employment tend to be more agitated and frequent very late on Fridays which might imply somebody has to work weekends and is angry about it).
 
OK, back to Internet Explorer. If I am not heard from soon, send the Saint Bernard and brandy.
 

Tags:

Tue 25 Jun 2013, 05:49 PM
This is the second in my new series, Out Of Notes, (see Part 1) which shows how the Midas Rich Text LSX can be used to take data out of Notes either temporarily or permanently. In this part, I introduce the new Capsule Views, which as small collections of documents exported together with a minimalist navigation between them. This makes it easy to send a snapshot of multiple documents together in a single file (whether .mht or .eml or .epub or others). In a very short video, I demonstrate how easy this can be with Midas V5.
 
Note: Accurate closed captions have been provided, and if English is not your first language, you might want to turn on the auto-translate. I also advise turning on HD and watching full screen so the captions show under the video.
 

Tags:

Mon 4 Oct 2010, 10:41 AM
I'm afraid my record keeping wasn't good in those days, and I never dreamed that I'd still have the company (and make a living with it) eighteen years later, so I don't know the exact date, but sometime in October 1992, a friend and I started a company to develop OS/2 tools.  I had another job, so this was strictly on the side, and the friend and I parted ways shortly thereafter (he wanted stationery and an office and a secretary, and I wanted to build a product first), but the name Genii Software was registered with the state of Ohio then.  Later, it became a Limited Liability Partnership, so the official name is now Genii Software Ltd.

Over the years, I have created a number of products, including:

Navigator for OS/2 (total dud)
@YourCommand Toolkit for Lotus Notes (successful enough that I could quit my day job, no longer sold)
Midas Rich Text LSX (successful and popular for thirteen years now)
ReportLogic (very limited success, no longer sold)
CoexLinks (successful and widely recommended, including leads from both IBM and Microsoft on regular basis)
CoexEdit (successful and often recommended)
@Midas Formulas (very limited success, no longer sold)
Midas Rich Text C++ API (successful both alone and as adjunct to products such as RightFax)
@Midas Lookups (free limited version of portion of @Midas Formulas)
iFidelity (limited success but growing)

Out of ten products, five very successful,  one freebie, two with limited success (but one still growing) and one dud.  I think most software developers would be quite happy with that score card.

And we are not done yet.  I have an announcement coming up before Lotusphere which will expand the list.  Eighteen years, mostly growing revenues every year (except for that pesky global recession thingie in 2008-2009).  There is a lot to celebrate, but also lots of people to thank, including:

The Turtle Partnership - Gab Davis, Tim Davis and Mike Smith have long supported me, and now provide support officially for Genii
Andrew Pollack - long time friend and provider of technical advice
Penumbra Partnership - for the past ten years, a great source of friends, networking, advice and a good place to vent steam
Rudi Knegt - long time friend and host for numerous European conferences
Mark Ramos - long time friend and frequent collaborator on projects both successful and unsuccessful (but also fun)
Ed Brill - torch bearer (and occasionally flame thrower) for Lotus Notes
Bloggers and speakers and partners and friends galore - far, far too many to name, but all appreciated
IBM - for stumbling and bumbling its way through like any large company, but never letting Notes die (or being able to kill it)
Microsoft - for keeping IBM on its toes, and frequently tripping on its own

but most of all

Thousands and thousands of loyal and enthusiastic customers over the years who have spread the word and kept the faith (and paid the bills).  For a company that does virtually no advertising to sell over a million seat licenses and into seven of the top ten largest companies in the world, and many of the smallest as well, takes a lot of word of mouth recommendations, and I appreciate them all. 

Thank you!
Mon 15 Nov 2004, 10:48 PM
A Midas Rich Text LSX 3.x server license costs $2500 US for the first server (and $1500 US for each additional).  But look at what that translates to in various currencies compared to a year ago and two years ago...
A merchant in Munich would save almost 24% from two years ago, 10% from just last year.  Similarly, a banker in Brisbane would save almost 27% from two years ago, almost 7% from a year ago.  A trader in Tokyo would save over 12% from two years ago, almost  3% from a year ago.  A health care firm from Halifax, Nova Scotia would save  24% from two years ago, over 8% from last year.  And last, but not least, a law firm from London would save 15% from two years ago,  over 9% from a year ago... (read on)
Wed 14 Sep 2005, 10:00 PM
With 3.50 just recently released, you might think that our "Notes/Domino 7 supported" version would be short on features, but there has been a lot of behind the scenes work done that was not ready for 3.50.  This is the first in a short series of posts on new features coming along with Notes/Domino 7 support.

Suppressed fonts
Web developers have long hated Domino's propensity for throwing font tags into its generated HTML, so when they come to Genii Software and our Midas Rich Text products for HTML generation, they don't want to see the same thing.  We have decided to allow the developer to turn off the fonts.  In fact, we let them turn off almost any text markup.  For example... (read on)
Thu 6 Oct 2005, 08:42 AM
I was watching Apollo 13 with my wife and kids the other day (a great movie, by the way), and I was struck by scene in which Ken Mattingly is reworking and reworking the reentry procedures to eke out four more amps.  He tries and tries various scenarios, and finally squeaks in just under the required threshold.

Which brings me to a seemingly unrelated question that a Midas customer asked the other day:
Why is that a CoexLinks server license costs $7500 US, a CoexEdit server license costs $5000 US and a Midas Rich Text LSX server license costs $2500 US?
Well, let's see.  CoexLinks solves one very distinct problem, very well, but still just one problem.  CoexEdit solves a range of distinct but related problems having to do with rich text editing in Notes and on the web.  Midas solves a whole universe of problems.  So that doesn't really explain it.

Let's try again.  CoexLinks solves a very specific business need in a highly necessary way and replaces a very expensive alternative (recoding lots of apps).  CoexEdit solves a more general, but still fairly specific, business need in a highly desirable way and replaces an unpleasant alternative (sticking to Notes only or web only apps).  Midas solves a very wide range of business needs, some critical, some not, and replaces some very untenable alternatives.  Hmm, we are getting closer, but this still doesn't seem like enough.

How about this?  It is all about the amps.  CoexLinks can be installed and configured in ten minutes by an administrator and requires no design modifications.  CoexEdit can be integrated into a database in a few hours to a day, and requires only fairly discrete and well defined design changes.  Midas is a programming extension, and requires building a solution or adapting an existing sample.  Now, that explains matters.

The real world is a complex and busy place.  Consider why most people would pay considerably more for a house with a re-done kitchen in "move in" condition than for a "fixer upper".  First, they don't have the time or energy to fix it up or even hire contractors to fix it up.  Second, they know ahead of time how it will turn out.  The same could be said of software.  With CoexLinks, the administrator can stop the server, install, change the NOTES.INI to add a couple of lines, start up the server and see exactly what he/she is going to get.  We had one customer who got an evaluation license, put it on his development server and sent some messages through.  He liked it so much, put it on his production server right away.  He liked it so much, he called up with a credit card to order a production license and asked if he could simply replace the evaluation license and not have to take down the production server again.  This was less than two hours after he requested the evaluation license, the equivalent of getting offers on the day you put your house on the market.

Why did he buy an expensive piece of software in under two hours?  Because it took few enough amps.  Why do people sell/buy on eBay?  It takes few enough amps. 

So what can we learn from this?  There isn't a heck of a lot we can do about Midas except build better and better samples.  People do sometimes "buy Send It!" which is just a sample app, but does what they need well enough to avoid much additional work.  So, we could build more of those.  With CoexEdit, we have a great opportunity to drive down the amperage, and I am doing my best Ken Mattingly imitation to try to find ways to drive this closer to a plug in like CoexLinks.  With CoexLinks, we need to focus mostly on not making it more complex.

How about your products?  Any way you can make your products take fewer amps to start up and use?  How about your skills?  Any way you can package your skills in a way that makes them easier to consume?  There are not many amps to spare out there, folks.  Can you conserve a few?
Tue 16 Sep 2003, 12:50 AM
I keep looking at the calendar and realizing that I only have about six weeks until the UK Admin/Developer conference.  I am presenting on two topics, but the first
Monday Oct 27  1:30 - 2:45 pm
Rich Text Tips, Tricks and Techniques 


is a relative no-brainer.  I gave a session like this in Düsseldorf in February, and although I can never stand giving the same session twice and will probably change everything, I am sure of what I want to say.  The second session has me more worried.
Monday Oct 27  4:35 - 5:50 pm
Advanced Notes/Web Coexistence


Abstract: Discover useful tricks and techniques for handling forms, views and databases that must be used in both the Notes client and a web browser. Learn ways to better handle rich text fields, @DbLookups, JavaScript and UI methods to allow an optimal experience for both Notes users and web users. Learn when to create two sets of design elements and when to use just one. Covers native and third party solutions for managing Notes/Web coexistence. 

What was I thinking?  Do I know enough about this topic?  Can I present it clearly enough?  I might not be so worried, but there is such an incredible set of speakers for this event (including Bill Hume and Ed Brill from IBM, as well as Bob BalabanRocky Oliver, Damien Katz, Daniel NashedGeorge ChiesaRich SchwartzKim GreeneAndrew PollackGabriella Davis,  Brian BenzDieter Stalder and more) that I feel I need to live up to the event.

I do have a message I want to communicate, and some ideas for samples to show, but I would love to hear any thoughts, wishes, ideas from anyone out there.  Whether you will be there in person or would simply like to use the sample code I am sure to post here afterwards, let me know what would be valuable to you.  Post here or contact me at  with ideas.

By the way, I hope you can come to the conference.  I think it will be more valuable than some of the bigger conferences, and with a lot more access to the speakers.  If you are in the UK or Europe, this is a lot easier to get to than a conference in the US.  If you are in the US, check out the low fares and come make a long weekend out of it.  If you are in Asia or Australia, I haven't the foggiest idea of whether this is really an option, but I'd be happy to see any of you as well.
Wed 12 May 2004, 09:40 PM
One of the pleasures in being in the software business comes when customers write and thank you.  As might be expected, most communications with customers are when there is a problem, so I really enjoy when a positive note comes through.  Of course, even when they do come, they tend to be short and sweet, such as this note from yesterday
I do appreciate the software.  It has been a great help in extracting data from Rich Text Fields.
or they tend to be in the midst of a request, such as 
Midas is responsible for the creation of the HTML, which has worked very well,...
with the implicit "but I still have a problem" left hanging there.
So, I was very surprised to receive the following note (edited to remove names), which I almost missed as I thought it was a spam... (read on)
Mon 5 Apr 2004, 09:55 PM
Ahh, doesn't the mere word give you palpitations?  Well, in honor of the reckless pursuit of standards, I am working to make sure that GeniiSoft.com follows standards, lots of them.  Specifically, if our Midas Rich Text LSX can generate valid, accessible HTML, our website should be able to use valid, accessible HTML.  I started the process with the W3C HTML Validator.  The old website had problems - a bunch of problems, but with a bit of work, I eliminated them all, and now our main website page is officially valid, with HTML 4.01 Transitional.
Valid HTML 4.01!
 
Feels good.  I am having a bit of trouble with the other pages, since the validator objects to the <noscript> tag, although I can't figure out exactly why.  They should all be valid fairly soon.  The next step is WAI - the Web Accessibility Initiative standard.  This is tougher, since almost everything is up to the user to decide.  I tried out Bobby as well, which is a great tool, but again, accessibility is more of a goal than a standard.
 
So, on to other standards.  Why, you ask?  Don't ask?  Haven't you been listening?  J2EE.  XML.  Java.  Standards are where it's at.  Standards are the cats meow.  Without standards, we would be... individuals.  Oh, well, never mind that.
 
Next standard, Atom feed validation.  What is an Atom feed?  See here.  Wow, that was easy.
[Valid Atom]
 
Man, we are on a roll.  OK, who has another validation to try out?  C'mon, bring 'em on.
Mon 4 Jun 2018, 06:36 PM
Purpose of the series.
With the addition of the highly customizable CKEditor rich text editor into XPages, I thought we'd see a number of interesting uses, but if so, they aren't showing up much. I have recently been pushing my way through the lack of useful documentation, and have decided to post a series of posts to explain  each step of this process. I should note, some of these steps will include use of our AppsFidelity product, but only some and only for the purpose of illustrating where things can be extended. Also, I will be demonstrating this for both Classic and XPages.
 
I am doing this as an IBM Champion series, but I would like nothing more than for others to weigh in with ways to do these things better. I have a number of talents, but I am no JavaScript expert. On the bright side, that means everything I show you will be at least modestly possible for others who are not JavaScript experts. Of course, you experts will probably run circles around me, but if so, please share so we can all benefit and learn from your brilliance. (Please no snarkiness about Classic web design or about XPages. People use both. Deal with it.) 
 
Inline JPEG image
 
 
Topics I plan to cover (links indicate topic is now available)

Tags:

Tue 14 Dec 2004, 10:56 PM
Rocky Oliver has a really cool article over on his LotusGeek site called Formula Big Top Preview: The Elusive @Transform.  In it, he describes the powerful @Transform function... At the risk of being obsessive, how could you possibly use this with @Midas Formulas, which works on rich text fields? ... (read on)
Wed 20 Aug 2003, 11:48 PM
This "Getting started..." series of articles will show simple code snippets to demonstrate how to use common features of the Midas Rich Text LSX.  These are not meant to be full fledged samples, for which you could go to the Midas Samples page, but rather small bits of code to show how to get started.  These articles will also appear in the Refernce section of the Midas Help db in somewhat altered form.



The Midas Rich Text LSX lets you create and modify tables in a number of ways.  The most common tasks are creating a table, accessing cell values, and adding rows.  Below are some quick code snippets to show these tasks.  Additional information can be found in the Working with table properties reference in the Midas Help db and in information about the individual properties and methods which relate to tables, rows and columns...
Wed 13 Apr 2016, 11:11 AM
A customer wanted to know what it would take to enhance an XPages template with AppsFidelity so that the rich text content looked better on the web but also in Notes. They have lots of apps built on this same template. (I have changed one small point about the request to make it more generic.)

The answer in this case was, it would take five lines. Not code, but lines in the NOTES.INI on the servers where the apps lived.


1) A line to load AppsFidelity into a 32 bit Domino system (the appropriate software DLLs and license file are assumed to have been put in the Domino executable directory first)

extmgr_addins=AppsFidelityEdit32


2) A line to turn on AppsFidelity's XPage processing. Classic processing would take another line.

AppsFidelityXPagesEnabled=1


3) A line to allow all dbs with the "MegaMarketing43" template to use AppsFidelity (a single db could be specified as <dbname> or by replica as [repid])

AppsFidelityXPage1=Marketing43


4) A line to turn on processing when the "Research Policies" form is used

AppsFidelityXPage1Form1=Research Policies


5) A line to turn on processing specifically for the "Description" and "Justification" fields from the "Research Policies" form

AppsFidelityXPage1Fields1=Description,Justification


and that's it. Basically, you need one line per template, db or replica, and then two lines per form, though if the only rich text field on the form is "Body", you can skip the Fields line for that form. Of course, this not only allows rendering for viewing, but also editing on either the Notes client or web client.

Inline JPEG image

So, would you like to try for yourself? Request an evaluation license today.


Mon 30 Sep 2013, 08:48 AM
Things may be a little scattered as we update the website and documentation and samples, but it should all come together by the end of the day. Don't be confused if the page says that 5.00 is out when it isn't available yet. If you would like to try the new collection logic or try exporting to CSV, EPUB, JSON and the rest of the formats, don't hesitate to fill out a Midas LSX 5 evaluation request, and as soon as the version is ready, you will be sent a license file.

Customers already on our maintenance and upgrades plan for the Midas Rich Text LSX 4.x will be contacted shortly after the version is released, as they will be upgraded free to the Midas LSX 5.00, but if anybody is terribly eager, feel free to contact us now and say you are ready.

The Midas LSX V5 officially supports IBM Lotus Notes/Domino 6.5/7/8/8.5.x and IBM Notes/Domino 9 Social Edition under both 32-bit and 64-bit Windows.

Oh, and for those paying attention, that means today is the last day for the offer I made back when I started the Out of Notes series.
Tue 1 Feb 2011, 01:28 PM
It might surprise you to know that the most popular page on my website (aside from my blog) is not focused on my products, but on a list of rich text editors, commercial and open source.  Because a number of other sites such as Wikipedia link to WebEditors, I get a fair amount of traffic there. Unfortunately, I have neglected it for the past couple of years. I decided to clean it up, and I think it looks much better, although I'd love your opinions.

Here is a snippet of the new page (not completely finished, but getting there). Click image to see it live.

Inline JPEG image


Here is a snippet of the old page (although I am ashamed to even show it):

Inline JPEG image


Tags:

Wed 26 Jan 2011, 11:37 AM
Fourteen years and over 1.5 million client licenses after releasing the Midas Rich Text LSX, I still run into plenty of people who haven't heard of it or have no idea what it can do.  But the most surprising thing to me is that even those who know what it can do don't always understand how easy it can be.

Take the following script, used to generate those neat little Additional Resources pages in the Sessions database:

id = "C"+Cstr(col+1+(row*MAX_COL))
Set rtLayer = rtchunk.FindNamedChunk(True, "Layer", id, "Exact")
Set rtLayer = rtitem.DefineChunk("Inside "+rtLayer.Definition)
If page > 1 Then 
   hide_formula = |P!="|+Cstr(page)+|"|
   Call rtLayer.AppendParagraph("", "", hide_formula)
Elseif dc1.Count + dc2.Count > MAX_COL*MAX_ROW Then
   hide_formula = |P!=""|
   rtLayer.HideFormula = hide_formula
End If
Call rtLayer.AppendResource("Image", bookdoc.BookCover(0), |ImageWidth='|+Cstr(bookdoc.CoverWidth(0))+|' ImageHeight='|+Cstr(bookdoc.CoverHeight(0))+|' BorderEffects=DROP_SHADOW|)
Call rtLayer.AppendTable(1,1,|TableMarginLeft='0' TableWidth='2' CellBorder='NNNN' HideFormula='|+hide_formula+|' |,2.0)
Set rtCell = rtLayer.DefineSubChunk("Table "+Cstr(rtLayer.GetCount("Table"))+"; Row 1; Inside Column 1")
Call rtCell.AppendLink(bookdoc.BookTitle(0), repid, viewid, bookdoc.UniversalID)
If bookdoc.IsFree(0) = "Yes" Then
   Call rtCell.AppendText(Chr(0)+bookdoc.BookType(0)+" (FREE)", "Plain #686868 ")
Else
   Call rtCell.AppendText(Chr(0)+bookdoc.BookType(0), "Plain #686868 ")
End If
col = col + 1

This script finds specific layers, even if nested, sets hide-when formulas, adds a table, appends text with a specific color and style.  In general, each task takes one line.  For example, let's examine one of the most complicated lines:

Call rtLayer.AppendResource("Image", bookdoc.BookCover(0), |ImageWidth='|+Cstr(bookdoc.CoverWidth(0))+|' ImageHeight='|+Cstr(bookdoc.CoverHeight(0))+|' BorderEffects=DROP_SHADOW|)

The rtLayer variable points at a specific layer inside the rich text. We are appending an "Image" resource, and the image resource name is specified as the second parameter. The third parameter is string containing several optional properties.  I used three:

ImageWidth - the width
ImageHeight - the height
BorderEffects - the style or type of border for the image, in this case, adding a Drop Shadow effect.

Of course, it is possible to do such a thing with DXL, but the amount of code it takes is much, much longer, and DXL doesn't operate on the rich text in place, but demands that you export the rich text, manipulate it, then import it.

Why not give the Midas Rich Text LSX a try, and see what you can do when rich text manipulation truly is easy?  Request a free evaluation license, and try out the many samples today.

Tags:

Thu 31 Oct 2013, 09:49 AM
I've learned to wait a few days before making these announcements, but here is the press release for Midas LSX 5.

Inline GIF image
Announcing Midas LSX 5
Contact:
Ben Langhinrichs
Genii Software
+1 216-991-5220
Ben@GeniiSoft.com


Cleveland, Ohio
Today -- 
Genii Software is pleased to announce the immediate availability of Midas LSX 5.00, a major new release of the widely acclaimed product extension for IBM Notes/Domino. After sixteen years of ongoing success as the Midas Rich Text LSX, the name has been changed to reflect the growing capabilities of the Midas LSX.

Midas LSX 5.00
is available now for all 32-bit and 64-bit Windows platforms running IBM Notes/IBM Domino 9.x Social Edition and IBM Lotus Notes/IBM Lotus Domino 6.5x/7.x/8.x/8.5.x. 

Please visit our 
Midas LSX page to find out more about pricing and customer benefits. A fully functional evaluation license is available for free by filling out our on-line evaluation form.

Midas LSX 5
: Along with enhancements to our widely recognized HTML generation engine and modifications to support IBM Notes/Donmino 9 Social Edition, Midas LSX 5 offers a new set of abilities to support the fast-changing mobile development market as well as the need for better ways to use company's valuable Notes/Domino data stores outside of the classic Notes environment.

ePublishing
: Long gone are the days when every customer could be expected to read data on a large screen. With the explosion of mobile devices of various sizes from tablets to phones, along with the standard corporate desktops and laptops, there is a need to present data in fluid, reflowable formats that adjust properly to the device being used. The global standard for this content is the EPUB format. Midas LSX 5 offers the ability to create EPUB representations of collections of documents with extensive control over the content, presentation and navigation inside thse "instant eBooks". All current iPhones and iPads will read EPUB files directly, and there are readily available free apps for reading EPUB files on all Android devices. Firefox, Chrome and other browsers offer free plugins to allow direct reading of EPUB files as well.

JSON generation
: To support programmatic access to IBM Notes/Domino data from XPages, mobile devices and external software packages, the Midas LSX enables generation of JSON for both rich text and other data in single documents or collections of documents. Developers can depend on Midas to be fast, accurate and secure.

CSV exports
: When the need arises to move a large quantity of data out of Notes to go to SharePoint or Google Apps without loss of fidelity, the Midas LSX 5 offers the best way to take all the content out including rich text fields, images and attachments. Using a CSV format, this data can be read directly into a SharePoint data store, or into most SQL databases that support the CSV format for input.

Mail Archive exports
: Both collections of documents and individual documents can be exported to Mail Archive format (.eml) for input to other mail systems including Microsoft Exchange. High fidelity rendering provides a safe and secure way to migrate data from IBM Domino to another email system when the need arises.

Web Archive exports
: Both collections of documents and individual documents can be exported to Web Archive format (.mht), either as linked documents of in a single document "capsule view". The web archive format can be read natively in Internet Explorer, but is also supported easily in most other browsers via plugin. Companies can use these snapshots of data to produce mini-catalogs completely customized to a an individual's needs (e.g., real estate listings in a specific price range with specific constraints, or a product catalog based on a customer's prior purchases).

Web to Notes imports
: High quality data imports allow you to turn a collection of HTML files into separate Notes documents quickly and cleanly. Midas LSX 5 will even read HTML files from inside a zipped collection to allow import of various packaged collections such as EPUB.

Midas LSX 5 continues to stand alone as the preeminent extensions allowing data movement into and out of IBM Notes/Domino, and manipulation and control of rich content inside IBM Notes/Domino. Over 50% of the largest companies worldwide have used the Midas Rich Text LSX since it was introduced in 1997, and with its expansion as the Midas LSX today, we anticipate an even wider reach.

The 
Midas LSX is solely owned and licensed by Genii Software Ltd.

###

Tags:

Mon 12 Jan 2015, 10:28 AM
Granted, I know that IBM Verse is only in beta, but Mitch helped me test to see if the graceful degradation that is needed for both GMail and Outlook is also necessary for IBM Verse. Note that the bullets in both Notes and Verse show up with the embedded graphics, unlike Outlook and GMail. (Note: To be fair, Outlook and GMail do slightly better with the padding of the margins.)

From Verse beta (courtesy of Mitch Cohen)

Inline JPEG image


From Notes 9.0.1 client (rendering the MIME, not showing the rich text)

Inline JPEG image
Tue 8 Feb 2011, 10:04 AM
Over the next few days, as I prepare for the EntwicklerCamp conference in Germany, I plan to describe an interesting fusion of technologies. The technologies involved are XPages, web editors and the Midas Rich Text LSX.  I won't tell you what the project is, although I am happy to entertain guesses, but I will describe the Midas methods involved and how they might work together to help in this fusion. Those at EntwicklerCamp will have an opportunity to see the project working, but soon after that, I should have a demo for others.

The first method is simple.  We need to connect to an XPage design element, or possibly clone one, so we will use the GeniiRTItem.ConnectXPage method.

ConnectXPage method  

Version added: 4.30

Connects the GeniiRTItem to the rich text $FileData field on the specified XPage (or the cloned copy).  The XPage must exist, or the XPage to clone must exist, or this method will fail.  

Note that if you attempt to modify the XPage and you do not have sufficent access, the Save will fail.  You may also use this method with the optional cloneName parameter to create a copy of an XPage that you can then modify.

Defined in
GeniiRTItem class
Syntax
Call geniiRTItem.ConnectXPage(server$, filepath$,xpage_name$cloneName$ )
Parameter
server$
String.  The server for the rich text field.  This should be a blank string, "", for a local database.  If a NotesDatabase object is instantiated, this is the Server property.
filepath$
String.  The pathname of the database, relative to the Notes data directory.  If a NotesDatabase object is instantiated, this is the FilePath property.
xpage_name$
String.  The name of the xpage for which the $FileData field should be connected.  If the form does not exist in the specified database, this method will fail.
cloneName$
String.  Optional.  If specified, the xpage will be cloned, and the new copy will be given this cloneName. The connection will then be to the $FileData of this unsaved copy of the original xpage, and the title will be changed.

Example:
Dim s As New NotesSession
Dim db As NotesDatabase

Dim rtxpage As New GeniiRTItem

Set db = s.CurrentDatabase

Call rtpage.ConnectXPage(db.Server, db.FilePath, "MyXPage")

' *** Manipulate XPage as needed

rtpage.Save

Tags:

Mon 21 Jan 2008, 05:14 PM
Replicate your sessions database and you will see it:


AD111 IBM Lotus Notes Widgets and Live Text: Linking Your Data to the World (web link)
Speakers: Brian Leonard, Andrew Davis
SW 5-6 - Wednesday  08:30am - 9:30am
Created using the
Midas Rich Text LSX
and
CoexEdit

Tags:

Wed 28 Jan 2009, 11:17 AM
In Part 1, I showed how IBM's rendering of MIME messages could lead your customers to think you were still running Notes R5, and how our upcoming iFidelity (sign up for the beta) would allow you to send out more professional looking email, rendered as it is in Notes.  In Part 2, I showed how content rendered by Domino on the web was likely to make prospective customers think twice, or more, before buying Lotus Notes, and how CoexEdit could dramatically improve that default rendering.  In Part 3, I showed how rendering is made even worse when the rich text is edited on the web, and how CoexEdit can improve that process as well.  In Part 4, I showed how HTML signatures are prone to some of the same rendering issues (as well as different ones) as we have seen elsewhere.

In this post, I talk about email, and something that IBM even does reasonably with, at least in one engine, although not in the other.  

(read on) to see the full comparison, but here it is in a nutshell.

Rendering decision

Tags:

Tue 11 May 2004, 09:32 AM
I had an interesting question from a customer.  He wants to use MIME to store his rich text, but wants to be able to edit the HTML part of the MIME using a third party web editor, so he needs to switch to HTML and switch back to MIME.  His needs were pretty simple in this regards, so I wrote a quick sample with two agents, which are below.  I wonder if I should make this even more robust and allow images in the MIME to be converted to attachments and modify the HTML accordingly.  It might be pretty handy for those who want to edit the rich text in the Notes client (as MIME) and the HTML on the web with a web editor, such as one of these.  Hmm.

Anyway, for those interested in how you would do this with Midas, here are the two agents.

'Convert HTML to MIME: 

Option Public
Option Declare
Uselsx
"*lsxrtc"

Sub Initialize
   
' *** Notes back-end class objects
  
Dim session As New NotesSession
   
Dim db As NotesDatabase
   
Dim collection As NotesDocumentCollection
  
Dim doc As NotesDocument
   
  
' *** Midas Rich Text LSX back-end class objects
  
Dim rtitem As GeniiRTItem
  
  
' *** Set up the database and collection
  
Set db = session.CurrentDatabase
  
Set collection = db.UnprocessedDocuments
  
If collection.Count =Then Exit Sub
  
  
' *** Cycle through each selected document
  
Set doc = collection.GetFirstDocument
    
While Not (doc Is Nothing)
     
' *** Connect to rich text item with Midas 
     
Set rtitem = New GeniiRTItem
       
Call rtitem.ConnectBackend(doc.Handle, "Body", True)
     doc.Subject 
= doc.Subject(0) & "... to MIME"
      
     
' *** Save the HTML as  MIME part
     
Call rtitem.SaveAsMime("Body", "", |Overwrite='Yes'|)
     
     
Delete rtitem
       
     
Set doc = collection.GetNextDocument(doc)
    Wend
End Sub


'Convert MIME to HTML: 

Option Public
Option Declare
Uselsx
"*lsxrtc"

Sub Initialize
   
' *** Notes back-end class objects
  
Dim session As New NotesSession
   
Dim db As NotesDatabase
   
Dim collection As NotesDocumentCollection
  
Dim doc As NotesDocument
   
  
' *** Midas Rich Text LSX back-end class objects
  
Dim rtitem As GeniiRTItem
  
  
' *** Set up the database and collection
  
Set db = session.CurrentDatabase
   
Set collection = db.UnprocessedDocuments
  
If collection.Count =Then Exit Sub
  
  
' *** Cycle through each selected document
  
Set doc = collection.GetFirstDocument
    
While Not (doc Is Nothing)
     doc.Subject 
= doc.Subject(0) & "... to HTML"
      
Call doc.Save(True, False)
     
' *** Connect to rich text item with Midas 
     
Set rtitem = New GeniiRTItem
       
     
' *** Connect, copying in the HTML MIME part to the rich text
     
Call rtitem.Connect(db.Server, db.FilePath, doc.NoteID, "Body", True, |CopyMIMEPart='HTML'|)
     
Call rtitem.Save
     
Delete rtitem
       
     
Set doc = collection.GetNextDocument(doc)
   Wend
End Sub
Mon 17 May 2004, 04:45 PM
The fourth bug reported by the SWAT team's wasn't really a bug.  Still, it provided a teachable moment.  This was again an issue with rich text to HTML that the company identified.  They had a series of lines indented by spaces, and were complaining that the spaces were eliminated.

Well, yes they were.  That is the default way HTML is generated, but if you set the PreserveSpaces='Yes' property in the HTML generation, it works just fine.  It might also be a good idea to set the ForceFontFace='Yes' property and perhaps even the SubstituteFont3='Courier New' or whatever fixed space font you want the Default MonoSpace to show up as in HTML.  Sigh, there are lots of choices.  Just as an FYI, there is also a setting that can be PreserveTabs='Yes" or PreserveTabs='3' which replaces tabs with either 3 or the number of non-blanking spaces specified.  This is not a perfect representation of tabs, but the best we can do for now.

Success #4
Mon 16 Aug 2004, 10:31 AM
Tracking the searches
In mid-July, I changed the design for both our Help database and Support forum to track the terms when a full text search is done on either.  The idea is that we will look both for patterns to help determine what information to emphasize and for specific searches to be sure that they have good results (e.g., if somebody searches for "appending picture" or "appending image", we might add those as keywords to AppendGraphic).  I hope that this sort of proactive response to inquires will make it more likely that people will find what they want.

(read on)
Sun 26 Sep 2004, 11:50 AM
Since we released both the Midas Rich Text C++ API and @Midas Formulas on the same day, I have been very curious about which would pick up steam the fastest.  While this is way too early to tell anything significant, the first indicators are that those who want to try out Midas C++ all also want to try out @Midas, but not the other way around.  About equal numbers of evaluators request all three products as request just the Midas LSX and @Midas, but only one person has requested the Midas LSX and the C++ API but not @Midas.

Part of the explanation, provided by Stephen Walch of Proposion, may be that @Midas can be called from Java and other places that might interest the ISVs and power users.  Stephen is looking into using either the Midas C++ API or @Midas in his Proposion N2N product, and @Midas Formulas has a unique advantage.  Database drivers do not require pre-loading or compilation or configuration.  If you call a database driver and it doesn't exist, it returns an error you can handle, and if it does exist, you can use it.  That is easier than an LSX and easier than a C++ version.  Hmmm.
Thu 18 Jun 2009, 04:40 PM
It might surprise some people, but I fully expect many IBMers to recommend iFidelity, just as many have recommended CoexLinks and our other products over the years.  Here is why, in my opinion.

iFidelity makes IBM Lotus Notes/Domino look good, really good

  • iFidelity demonstrates the value and versatility of Notes rich text by presenting it properly to other email clients, whether they are users of Lotus Notes/Domino themselves, or users of other email products..
  • iFidelity improves the iNotes experience significantly, making iNotes a better and more reliable, way to access Notes email within your own organization, as well as making emails sent from iNotes more reliable and professional.
  • iFidelity greatly improves email signatures, a highly popular end user feature, by rendering them as the user intended, no matter whether they are left as rich text or sent through the Internet.
  • iFidelity offers enhanced Interactions between Lotus Notes customers who both use iFidelity, allowing features such as tabbed tables to become available for realistic and professional email use for the first time.
  • iFidelity allows a Lotus Notes user to reply to and forward emails with confidence that the email history will not be garbled.
  • iFidelity builds on the extensive work IBM has done to improve the email experience, and adds email fidelity to improve that experience even more, in the Notes client, in the iNotes experince, and in the eyes of customers who receive emails from Lotus Notes users.

Lotus Notes/Domino 8.5 plus iFidelity may well be the most powerful, reliable combination in the marketplace.  Better security, application integration, extensibility and reliability, all thanks to Lotus Notes/Domino, coupled with clean, accurate, reliable email fidelity designed to present a professional look to everyone else, including other customers using Microsoft Outlook 2003/2007, Gmail, webmail, as well as others also using IBM Lotus/Notes.

Does iFidelity make IBM look bad for not improving the core product?

Perhaps a bit, but this is greatly outweighed by IBM looking good for having the foresight and dedication to support and expand API extensions, without which iFidelity wouldn't be possible.  Also, the evidence that Genii Software is an IBM Design Partner should reassure anybody that IBM welcomes products that enhance and empower IBM Lotus Notes/Domino, and supports ISVs who create such products.

Tags:

Mon 9 Feb 2004, 03:49 PM
I am about to release the last (I hope) beta version of our @Midas Formulas, and I am trying to determine whether or not to add the Help documents for @Midas to the Midas Rich Text LSX Help database.  The advantage to adding the two together is that many documents, especially those such as Working with HTML Generation, are almost identical, and it would be easier to keep one set of documentation.  (Easier for us, in this case at least, means more likely to be up to date and correct than if there were two versions.)  There are two disadvantages.  The first is that the sheer amount of information in the Help database may overwhelm someone trying to find out a sample formula solution to a problem.  The second is that there are ways in which Midas and @Midas differ, such as in assumptions about default values for certain methods/functions, so there is an opportunity for error where documentation states that one assumption is made but it is incorrect for the particular product you are using.   This may be particularly true of Release Notes, which may or may not apply to both products.

I have added a few @Midas help documents to the on-line Midas Help database to see how it feels.  Try our on-line Midas Help under the Contents tab and let me know what you think.
Wed 3 Aug 2005, 12:17 PM
We have released CoexEdit 1.1 at last.  Woo hoo!  Besides adding integration for TinyMCE and adding support for AIX 4.3.3 and above, this version is mostly aimed at solidifying the product and handling better the multitude of different settings and properties available in Lotus Notes/Domino.  For example, Version 1.0 had issues if the Generate HTML for all fields property was set on a form, or if there was too much data in a rich text field when using FCKEditor.  Also, the ability to load local images has been added, and the ability to use that feature has been integrated with the FCKEditor software.

So, if you were expecting major new features, you probably just don't get it yet about CoexEdit.  Take a look at Lisa Discovers CoexEdit for a pictorial explanation with screenshots.  CoexEdit is mostly about quiet coexistence, so most major new features will simply make that coexistence quieter
Mon 15 Nov 2004, 05:52 PM
Rich Schwartz posted a wish list, but not on his weblog.  Instead, he posted in the Business Partner forum, so I can't link to it.  Since he didn't post it himself, I'll refrain for the moment and see if he wants to.  The one part I do want to mention is the goal of having Wiki links in Notes.

I don't know a whole lot about Wiki links, except what I have just read on page such as this one, but they sound a whole lot like the SmartRefs technology we have in our Midas Rich Text LSX, plus or minus a few features.  I am considering adding the SmartRefs logic, as I have considered since early on.  What has changed is that I may use the Wiki Links logic to inspire me.  More later on this, but feel free to post any suggestions.
Wed 6 Feb 2008, 11:51 AM
One of the things I have found, and have heard from many developers over the years, is that even if the Midas Rich Text LSX does not explicitly have a feature, it is not uncommon to be able to do what you want anyway.  For example, today I had a user ask:
I've searched in vain looking for a way in Notes Client to sort the attachments (alphabetically by File Name) in a rich text field. Do you know of any way to do this? 

I have a documents with about 20 files attached in a rich text field. The user wants to have these sorted without having to remove and add them in the correct order.
Now, I happen to remember thinking that this was not available in Midas for some reason, even though it makes some sense to me, but I tried anyway using the amazingly versatile Sort method:

   Call rtitem.ConnectBackend(doc.Handle, "Body", True)
   Set rtchunk = rtitem.DefineChunk("File *")
   Call rtchunk.Sort("FileName")
   rtitem.Save

but sure enough, it didn't work.  But then I thought of ... (read on)

Tags:

Wed 7 Apr 2004, 06:23 PM
It has always surprised me how many questions are raised in the various Notes/Domino forums about hide-when formulas.  No, I don't mean the (many) about hide-when formula bugs.  I mean the basic process of creating a hide-when formula that does what the user wants.  I think that part of the problem is that many non-developers have the need to create a hide-when formula on occasion, and that another part is that people think in terms of "Show When", not "Hide When".  In any case, I thought I would write a short primer about hide-when formulas to link to when people are confused... (read on)
Thu 23 Mar 2006, 11:29 AM
Show and Tell ThursdayThis is a repeat of one of my more popular tips (see here), but since people never see it until I point them to it, it probably deserves repeating:

It has always surprised me how many questions are raised in the various Notes/Domino forums about hide-when formulas.  No, I don't mean the (many) about hide-when formula bugs.  I mean the basic process of creating a hide-when formula that does what the user wants.  I think that part of the problem is that many non-developers have the need to create a hide-when formula on occasion, and that another part is that people think in terms of "Show When", not "Hide When".  In any case, I thought I would write a short primer about hide-when formulas to link to when people are confused.







Basic Rules for Hide-When formulas
  1. Hide-when formulas effect entire paragraphs (a table cell starts with a paragraph, so this is true in table cells as well, although a table cell may have multiple paragraphs.  See more on paragraphs).
  2. A hide-when formula should always either be a condition (e.g., Status = "Pending") or return a @Yes or @No (or @True or @False, which are equivalent).
  3. Multiple conditions should be combined with an ampersand, &, if all the conditions must be true in order to hide the paragraph, or with a vertical bar, |, if any one of the conditions must be true to hide the paragraph.  For example, if we should hide the paragraph when either Status is "Pending" or Override is "Denied", the formula should be Status = "Pending" | Override = "Denied".
  4. If you have mixed conditions, use parentheses to separate the "and" and "or" parts.  For example, if the paragraph should be hidden when either Status is "Pending" or Override is "Denied, but not when the document is being edited, the formula should be (Status = "Pending" | Override = "Denied") & !@IsDocBeingEdited.

Tips for Simpler Hide-When formulas
  1. Do not use an @If unless you really, really need to.  The formula @If(Status = "Pending"; @True; @False) should be simplified to Status = "Pending".
  2. Formula language allows you to check against a list of names at one time, so the formula Status = "Pending" | Status = "Denied" | Status = "Reviewed" should be simplified to Status = "Pending":"Denied":"Reviewed", with the colon between the items being a list separator.
  3. If it is very hard to describe the "hide when" condition, but easy to describe the "show when" condition, just put the "show when" condition in parentheses and use an exclamation mark, which means "not" in front.  Thus, if the paragraph should be shown (not hidden) when the Type is 1 or the document is being edited, you can use !(Type=1|@IsDocBeingEdited) instead of trying to figure out the inverse.
  4. Beware of mixed conditions.  If you have a formula which says Status = "Denied" | Type = 3 & @IsDocBeingEdited, how do you know whether the proper meaning is (Status = "Denied" | Type = 3) & @IsDocBeingEdited or Status = "Denied" | (Type = 3 & @IsDocBeingEdited), which have very different meanings.  If you assume the first interpretation, your paragraph may be hidden whenever you are in edit mode, but if you assume the second, it will only be hidden in edit mode when the Type is 3.
  5. Try "talking the formula".  If you have a formula which says Status = "Denied" | Type = 3, and you try to say it out loud as "Hide this paragraph if Status is "Denied" or Type is 3", you may catch that what you wanted was "Hide this paragraph if Status is "Denied" and Type is 3", which should be Status = "Denied" & Type = 3.

Special Tips for Hide-When formulas in rich text fields

While most people use hide-when formulas on forms, pages and subforms, they are also used in regular rich text fields.  Additionally, a rich text field on a form with a hide-when formula inherits that hide-when formula.  These tips are particularly useful for hide-when formulas in rich text fields and for hide-when formulas on forms which include rich text fields.

  1. Include a "back door".  A hide-when formula on a form includes an implicit assumption that you can always see the hidden paragraph when designing the form.  There is no such assumption with rich text fields.  If your formula would have been Donations = 0.0, make it Donations = 0.0 & (!@IsDocBeingEdited).  Then, you can still see the paragraph when editing.  Another option is to check a special role, so that when that role is set, you can see all hidden paragraphs.  If you don't do this, you may find hidden paragraphs that you can't ever find again.
  2. Be clear you are using hide-when formulas with users (or admin or somebody).  People don't expect hide-when formulas, and won't be very happy if they feel "fooled".

Tidbits from the Gold Forums

These are tips from others posting in the Gold Forums.  They offer different ideas and suggestions that might be useful.  I provide links back to the original post to allow reading the whole thread.

Bill Ernest 10.Feb.04 - Another way to use "show when" logic: 
I usually find it a lot easier to write them like this...

Show := @IsMember("{IT]";@UserRoles) | @IsMember("[VisSystemBoard]";@UserRoles);
!Show
Andre Guirard 05.Apr.04 - @ThisName doesn't work in hide-whens: 
The problem in this case is that the hide formula is not considered a formula of the field. There is no field context in which this formula executes. The hide formula applies to the text paragraph. In your case, perhaps there's nothing in the paragraph except one field. But there might be several fields and some text or other objects besides. In that case, to which field does @This... refer?

Warren Gamley 19.Feb.04 - Easy way to refresh hide formula from a button: 
I have a button that I need to click in order to display a hidden paragraph. I have it working so that when I click the button, I have to then click somewhere on the form before the paragraph is displayed. Is there a way to do it so that it appears immediately when the button is pressed?

... [Warren answers his own question] ...

I think I figured out a way.  Placing...

@Command([RefreshHideFormulas]);

... on the button seems to do the trick.

This post is likely to be a work in progress.  Any other tips or hints or strong suggestions about writing better hide-when formulas hide-when ?
Wed 4 Sep 2019, 09:18 AM
Recently, there has been an increased interest in exporting to PDF, a feature that is promised natively for Notes Version 11. There are also migration "solutions" that include this feature. At Genii Software, we have considered adding this as a feature, but while it is not technically difficult, we are all too aware of the traps that PDF archives face. 
 
The PDF format itself is great for certain use cases. It also has certain limitations by its very nature. It is page based, reflecting its origin back when its primary use was presenting page based content either from scanned pages or word processors that were also page based. But neither Notes or the web are inherently page based, so PDF's have to "break things where they oughtn't be broke". In addition, a PDF is largely, though not exactly, a snapshot or image of the contents. But just as an image of your dinner posted on Instagram is little help when you are hungry, an image of your Notes document is fairly limited compared to the active Notes document itself.
 
We have identified eight primary issues to be aware of when exporting/migrating to PDF, though there may be more. For the purposes of this blog series, I'll compare PDFs to how we export/migrate to HTML or MIME. The first four are issues with any rich text exported to PDF (in case you simply export the rich text field), while the second group of four are with documents rendered with their form exported to PDF, usually the case. Depending on what vendor or driver you use, a few of these may have at least a partial solution, but they are good items to check when validating your approach.
 
 
1) Attachments not launchable, may or may not even be saved, and are difficult to associate by name alone
 
Original Notes rich text field. The second attachment was clicked, opening this familiar dialog box..
 
Inline JPEG image
 
 
PDF rendering. Looks nice. Attachments not launchable. Even if attachments saved separately, what names are used since they can't all be Sales.xls?
 
Inline JPEG image
 
 
Rendered by the Midas LSX to HTML. Also looks nice. The second attachment was clicked, opening this matching dialog box.
 
Inline JPEG image
 
 
Table of Contents (will be updated as the blog series continues)
 
Want to try out our Midas LSX export for yourself? Simply fill out the online evaluation request, and we'll get you started. There's no cost to seeing it for yourself.
 

Tags:

Thu 8 Jun 2017, 04:48 PM
More than 17,500 documents in 110 seconds.
 
With a simple command from the server console, CoexLinks Migrate exports all email documents from a Notes email database into MBOX or EML format, both standards-based formats used by many email products as well as data warehouses and email vaults. Our high speed engine renders even complex rich text emails with high fidelity and accuracy.
 
But why not try for yourself. Request an evaluation license today.
 
 
As usual, closed captions are available.
 

Tags:

Fri 28 Jun 2013, 09:03 AM
This is the third in my series, Out Of Notes (see  Part 1 - The Challenge and Part 2 - Capsule Views ), which shows how the Midas Rich Text LSX can be used to take data out of Notes either temporarily or permanently. In this part, I show how easily we can add a Midas export to EPUB from an XPages application. EPUB is the most widely accepted eBoolk format, and qualifies as a Capsule View, as it is a collection of documents exported together with navigation between them. Publishing Notes documents to EPUB makes them accessible to customers, partners and support staff on almost any device. In a very short video, I demonstrate how easy this can be with Midas V5. More information and the script used are at http://mini-lessons.info/Midas10 
 
Note: Accurate closed captions have been provided, and if English is not your first language, you might want to turn on the auto-translate. I also advise turning on HD and watching full screen so the captions show under the video.
 
Tue 9 Apr 2013, 09:58 AM
I have a few Notes-related tutorials and demos in the works, but I thought I'd share this quick demo of a technique for playing with the G'MIC filters that you can add to Gimp. The filters are terrific, but there are lots and it can be intimidating trying to figure out what does what. This technique helps give you a way to compare the filters and the effect they have, as well as how to use multiple ones together.
 
 
As always, I'm happy to have feedback on any of the videos I post, either as comments here or on Youtube, or even just a thumbs up or thumbs down. Feedback lets me know whether people appreciate the videos and would like to see more.
 
Next video should be on use the soon-to-be-released Midas Rich Text LSX 5 to create EPUB files from Notes documents.

Tags:

Tue 21 Feb 2012, 11:59 AM
CoexEdit has been a slow but steady product for Genii Software. It hasn't had the great success of the Midas Rich Text product line or of CoexLinks, but people have used it for many different projects in many different companies.

Slow and steady isn't good enough, so I asked lots of questions of customers and developers and partners: What does CoexEdit need?

The answer was fairly simple, given how many people know what I do. CoexEdit needed more magic. Developers didn't want to mess with the changes to design elements, no matter how simple. Administrators didn't want to involve developers at all. All of this got worse when the economy collapsed, and many developers were let go.

So, I took a page from the CoexLinks playbook and added a dash of magic. Auto-magic, really. Not easy, but now you can enable CoexEdit in most XPage-enabled databases, and many non-XPage-enabled databases, without a single design change. It just happens. When CoexEdit 3.0 is released, you can use it too, even if you are an Administrator. Even in databases with locked designs.

extmgr_addins=CoexEd
CoexEditRecognizeDiscussion=1

That's enough to turn on XPage recognition for all 8.5.2/8.5.3 Discussion databases.

CoexEditXPageTemplate1=My New Template
CoexEditXPageTemplate2=Your XPage Template

That's enough to enable two additional templates, assuming they use the Body field. But what if Your XPage Template uses different fields?

CoexEditXPageTemplateFields2=Description,LongDescription,Justification

You have a custom database without a template?

CoexEditXPageReplica1=852566F10064AC18
CoexEditXPageReplicaFields1=Inventory

I would have added more magic, but I didn't make it into Hogwarts. Tomorrow, I'll show you some of the functionality that is added auto-magically.
Wed 22 Jun 2011, 03:39 PM
Yesterday, I wrote about the new GeniiCollection class, but one of the examples I mentioned should get more attention. In the new version, the Midas Rich Text LSX will allow the creation of EPUB files. EPUB is the most widely used format for ebooks, readable by the Nook, the iPhone/iPad and most other mobile devices.

I will go into much more depth about EPUB in future posts, as well as other formats for ebooks which Midas may generate, but today I thought I'd give a very simple example of the power of a customizable ebook. Obviously, an ebook generated from Notes documents would be customizable, but there are other ways.

As many of you know, I have recently published a collection of short stories, Savage Fire. It is available on Amazon and elsewhere, and it is also available from my author website, http://www.BenLanghinrichs.net, but with a twist. From my site, you can pay by credit card and specify a format as well as a name, and the ebook will be personally dedicated to that person, whether it be you or somebody else. The dedication is built right into the cover page, as if the author had signed your ebook.

If you want to see what this looks like, there's a post over on my author website called Does your ebook come with a personalized dedication? and you can even see the link on the right where you can order the personalized copy.

Think about the power of being able to create an ebook, or any collection of rendered text and links, on the fly using LotusScript. It could be a sales report sent to the boss's iPhone, or a proposal customized with names from a client company, or simply a segment of a database sent to somebody without Notes. Dynamic and customizable with just a few lines of LotusScript.

Tags:

Thu 18 Nov 2010, 08:39 AM
My recent examination of the Notes/Domino 8.5.2 combined discussion database confirms a prediction a number of folks have made, that IBM wants an xPages-only future.  Even the simplest web to Notes rich text conversions have been ignored (hint to the IBMers, in the CKEditor config file, check on quotes around the font names with spaces like Lucida Sans Unicode).  Stephan Wissel points out that a change to the Launch properties will make the Notes client use xPages too.

Hence the TSA comparison.  For those who don't know, the TSA is the authority tasked with security at airports in the United States.  Poorly paid, poorly trained, but given massive power over the civil liberties of travelers, these men and women are supposed to stop terrorists by checking your name, frisking, scanning and stripping (if need be), but without any hint of profiling or actually looking at the suspects, er, passengers.  Carry a gun into security, andd they are supposed to make you drop it in a bin, but not stop you from boarding.  The suspicious Somali man with the name Fred Rogers is waved through, while the six month old child in a stroller whose name matches a watch list is stopped.

Insane, but any inconvenience, any expense, any delay is justified rather than have TSA take advice from the Israelis, for example, who seem to have a clue or two about security on their airlines. Don't fix the process, put the pain on the users.

IBM has had numerous problems with conversion of HTML to rich text and vice-versa.  Most of its problems are easy to fix.  A few are difficult.  But instead, IBM is happy to add any inconvenience, any expense, any delay, even cripple its Notes client completely, rather than either buy technology (such as mine) or develop technology to make the solution easier.

Enabling xPages in the Notes client solves two small problems, MIME conversion and lack of time spent on UI design in Notes discussion, by crippling the user experience.  It simply runs the browser experience on the client, with exactly the issues you might expect.  I thought about coming up with my own list, but how about using the list Mary Beth Raven listed on her blog as the Top 10 enhancements people want to see in the CKEditor:


  1. Pictures (embedded and stored locally) 
  2. Inline attachments 
  3. Spellcheck
  4. Automatic correction 
  5. Sections 
  6. Tabbed tables 
  7. Double, Single, and ½ spacing 
  8. Live text 
  9. Permanent pen 
  10. Automatic capitalization

In other words, they want the capabilities the Notes client has had for years.  But because IBM doesn't want to bother fixing a problem that I, by myself, have fixed fairly well, they want you to give up these and more (such as adding doclinks, adding buttons, running agents, copy and pasting documents, easily acting on sets of documents, etc.) so that they are saved a bit of effort.

Really, IBM?  You want to be more like the TSA?

Tags:

Mon 13 Oct 2003, 11:01 PM
Now, as anyone fluent in two or more languages can tell you, something is lost in translation when text in one language is translated to another.

In the often fiery collision between the Notes client and the Web browser, there are many bits lots in translation...

Read the rest of the article...
Mon 13 Jun 2005, 10:15 PM
You know what feels good?  I happened across a note in our support forum written by Baskar Vedachalam of IBM on May 25, 1999:
We enhanced the code in the sample databases 
( for validating & fixing links, using RT Lsx)...
and what fine results it has produced!!!

Stats:
No: of databases: 30
No: of documents per DB : average of 800
No. of docs with links : 100 ( self & external )
No. of broken links : average of 30
Time to customise the sample code : 1 week
Time to generate the reports and fix links : 1 and a half days!!!
Time saved: 2 months!

Thanks GeniiSoft!
So, nice as this is, why did it brighten my day up today given that it was written six years ago?  Because Mr. Vedachalam just recently bought some server licenses for the Midas Rich Text LSX  for his new company, the New Zealand Police Department.  He came back because all these years later, he remembered how well Midas worked.  From his evaluation license:
I've used Midas RT LSX before and am quite impressed with its capabilities.
Current requirement is to 1) detach attachments (by a pre-mail agent) to a
separate document, 2) create hotspot links in the parent document and 3)
upon clicking those links, open the stored attachments.
Sure enough, Midas lived up to his expectations and was able to do what he wanted... and more.

It just feels good to still be here, still be meeting people's needs, still be exceeding expectations.  I hope that six years from now, or maybe even sooner, we'll be able to help Mr. Vedachalam again.
Wed 7 Jun 2006, 08:30 AM
A potential CoexLinks customer from a very well known company called yesterday.  The evaluator, whom I will call Eva,  said that she had installed and configured CoexLinks as directed (which takes about five minutes), but that the NDL attachments were not showing up.  Since about 95% of all CoexLinks support calls come with initial setup, it was fairly easy to guess where we were going.  Below is a very loose approximation of our conversation:

Ben: Did you add the disclaimer text so that you could tell if the message was actually modified by CoexLinks (n.b. disclaimer text is set using COEXPrependDoclink parameters)
Eva: Yes, I added that.
Ben: Did the disclaimer text show up in the converted message in Outlook?
Eva: No, it didn't
Ben:  Ah, so the message wasn't touched by CoexLinks.  There are three common reasons why that might be true.  Let's take them one by one.  First, it is possible that CoexLinks didn't load at all, because the license file or software were installed wrong.  Since you have an evaluation license, the name of the server does not matter, but the license and software have to be in the right place (n.b. the Domino executable directory).  You can tell if CoexLinks started because in the log file, there will be a copyright message when the server was started.
Eva: CoexLinks started correctly, and I see the copyright message.
Ben: Good.  Second, it is possible that the message was converted to MIME before it left your Notes client.  Did you send the message from a Notes client or from an agent?
Eva: I sent it from a Notes client.  How would I check about whether it got converted to MIME first?
Ben: Open your location document, click on the Mail tab, and look for Format for messages addressed to internet addresses.  It should be set to Notes Rich Text Format, and not MIME Format.
Eva: OK, I looked, and it is set correctly to Notes Rich Text Format.
Ben: Good.  OK, the third most likely possibility is that the e-mail message never touched the server on which you have CoexLinks installed.  Let me guess, the database from which you sent the message is on Server A, but your mail server is Server B.  Server A is a development server, so you put CoexLinks on it to test.  Is that right?
Eva: Yes, that's right.  So, I have to change my mail account to point at Server A in order to test this?
Ben:  That's right, because even though the database is on Server A, mail sent by you from that database never really touches Server A.  If it were created by an agent on Server A, or routed through Server A, or your mailbox was on Server A, CoexLinks would have a chance to operate.
Eva: Great!  I'll set it up and let you know if I have any problems.  Thank you so much.
Ben: That is what we are here for.  Please let us know if you have any other questions.

That is a typical CoexLinks support call.  Once CoexLinks is configured and routing is set up properly, there is hardly ever a reason to call.  It just hums away, doing its thing.  Still, I am glad that our new support organization is taking over, because with the number of new customers we have recently, this conversation is likely to be repeated often.

Tags:

Tue 17 Feb 2004, 10:19 PM
It has been said, although probably not really by John Ruskin...

There is hardly anything in the world that someone cannot make a little worse and sell a little cheaper, and the people who consider price alone are that person's lawful prey.  It is unwise to pay too much, but it is also unwise to pay too little.  When you pay too much, you lose a little money, that is all.  When you pay too little, you sometimes lose everything because the thing you bought is incapable of doing the thing you bought it to do.  The common law of business balance prohibits paying a little and getting a lot.  

It can't be done. 

If you deal with the lowest bidder it is well to add something for the risk you run.  And if you do that you will have enough to pay for something better.

-attributed to John Ruskin


I love this quote, no matter who really said it.  Perhaps I should it post it as our corporate policy to answer those critics who say, "The Notes 6 classes will let you manipulate rich text.  Why use Midas?" or "The Exchange Connector will convert doclinks automatically too.  Why use COEX! Links?".
Fri 3 Sep 2021, 08:51 AM
I'm working on a series of posts for next week on the four most common ways to represent a table of values in Notes that do not play nicely with relational databases. There are others, but these four are ones I see routinely when exporting data with Midas Exports or retrieving data with Exciton Boost. (There are also ways that do play nicely, but why talk about them?) My challenge for myself is whether I can use both tools to export or retrieve the data from each in a way that forces them to play nicely with relational databases.
 
In order from most to least common of the four top ways I see to make table data that don't play easily with relational databases:
 
1) Hard-coded table cell fields, every one separate
2) Parallel multi-value fields, one per column
3) Response documents, one per row
4) Tables embedded in rich text
 
Watch this blog for my posts. Also, feel free to leave a comment if you know of other ways to represent table data that don't play nicely with relational databases/techniques.
 
Inline JPEG image
 
Fri 22 Jan 2021, 06:51 PM
Inline JPEG image
 
 
I finally found time to put together two examples of "Fancy tricks" to do with Exciton Boost's REST API, and it is Friday afternoon, so I don't want to post it and have nobody notice. I'll post that Sunday night or Monday morning, but for now, let me leave you with a simple challenge. How would you use Domino Access Services or other HCL code to take the multiple rich text fields above and turn them into a sorted JSON array of strings for all the bullet values? It can obviously be done, but probably not as simply and elegantly as with Exciton. It took me about a minute to write out the request for this and far less than a second to get the following result. I'll show the request along with my post on Monday.
 
{
    "@unid""524C08BF648BE77A85257B8600798F5B",
    "bulletsSorted":
        "Attached parking",
        "Automatic garage door opener",
        "Basement",
        "Bedroom 2 is 15.00 x 14.00",
        "Bedroom 3 is 15.00 x 15.00",
        "Bedroom 4 is 16.00 x 13.00",
        "Central air",
        "Central vacuum",
        "Cul-de-sac location",
        "Dining Room is 15.00 x 14.00",
        "Dishwasher",
        "Eat-in kitchen",
        "Finished basement",
        "Fireplace in great room",
        "Forced air heat",
        "Formal Dining Room",
        "Foyer",
        "Full basement",
        "Garage spaces: 3",
        "Garbage disposal",
        "Great room is 23.00 x 22.00",
        "Great Room",
        "Heating: Gas",
        "Inground pool",
        "Irregular lot",
        "Kitchen is 23.00 x 18.00",
        "Library is 12.00 x 12.00",
        "Lot acreage is: 0.2650",
        "Master bedroom is 18.00 x 15.00",
        "Microwave oven",
        "Office",
        "Office is 16.00 x 15.00",
        "Other Room is 21.00 x 18.00",
        "Oven",
        "Patio",
        "Paved driveway",
        "Porch",
        "Property style: Colonial",
        "Public sewer",
        "Public water",
        "Rec Room is 30.00 x 12.00",
        "Refrigerator",
        "School district: Beachwood CSD",
        "Security system",
        "Smoke alarm",
        "Sun Room",
        "Sun Room is 17.00 x 16.00",
        "Warranty included",
        "Wooded lot",
        "Zoned heat"
    ]
}
 

Tags:

Tue 19 Dec 2017, 12:21 PM
 
 
 
If you wonder what the joke in that is, you have not tried rendering documents created over the past twenty years by various companies. While it may be easy to dismiss such design elements as legacy artifacts, your company or your client's company may have them in active use or in archives that must be preserved. Whether due to ISO 9000 or other statutory or regulatory requirements, both data and appearance must be preserved. Even if you wanted to replace the design of every database (trust me, you don't) to replicate the look and feel, you'd have to deal with stored forms and rendered documents which have those layout regions, layers and embedded controls inside the rich text fields. This includes emails as well as application documents, etc.
 
IBM has done an amazing job in the Notes client, supporting every ancient design spasm that came along, but even if you love the Notes client, you may not want to remain locked to it forever. A big part of our effort at Genii Software in the past couple of years has been in rendering the unrenderable. Whether you want those ISO 9000 documents displayed through a web front end or stored in a standards-based vault, you need to be able to get an accurate rendering without changing the stored document at all. That is where Midas and AppsFidelity and CoexLinks come in, all of them sharing crucial pieces of a rendering engine built to handle just about anything. Give us a call at +1 216-991-5220 or send us an email at sales@geniisoft.com, and ask how we can help with your thorniest issues, whether you are moving to the cloud, migrating, or just mobile-enabling an app. No risk asking, and you might find a solution which make you a hero, rather than a punch line.

Tags:

Mon 26 Oct 2020, 05:05 PM
Inline JPEG image
 
At Genii Software, we help a lot of companies get data from Domino applications, whether for migration (using the Midas LSX) or for use in mobile/web apps (using Exciton Boost, one of our Midas products, or a bespoke addin created for the customer). While we are best known for our high fidelity rich text rendering, a lot of application data is not rich text. But that doesn't mean it isn't complex. In this series, I will show ways that the complex is handled simply by both the Midas LSX and Exciton Boost.
 
A couple of weeks ago, we had a migration customer ask if we could change the way their data was extracted. In this case, we were going to CSV. I can't show their data or structure, but it contained a feature I lot of you will recognize: many, many fields correlated with each other by table rows. Since the customer wanted to retain the row-like association of the various items, we used Repeat By Item, a feature which allows you to export the same document multiple times with each element of a multi-value field or formula, matching up parallel items. We can include the UNID on every line or not, depending on whether we want to maintain the association the data had in Domino.
 
To show how this often looks in a Domino application, I created a simple form and view to display the box scores used to record player stats in baseball. (You could do the same with cricket or another sport, of course.) Here's a game played recently with a small set of box scores. This is from the Cleveland Indian's point-of-view, and there is a second document for the same game from the Chicago White Sox point-of-view. The goal might be to create a spreadsheet such as that above or to export the data into SharePoint or almost anything else. CSV imports are fairly ubiquitous. 
 
In our bare bones Domino document, we have the general fields followed by a table of the stats for each player as they entered the rotation. 
 
Domino document
 
In our bare bones Domino document, we have the general fields followed by a table of the stats for each player as they entered the rotation. 
 
Inline JPEG image
 
Domino form
 
In our form, we have a sight all too familiar to long-term Notes/Domino developers. Each row has individual fields, sometimes more than one to a table cell. The names are related by some naming convention. In our customer's form, there were over 700 named fields.
 
Inline JPEG image
 
 
Using the Midas LSX with Midas Exports, we accomplish this by filling out a simple form. No scripting is required, though formulas are allowed and are used in this case. The key parts of the form are here:
 
Inline JPEG image
and below that, the split by item (though this version of the db has a spelling error. I mean "spliting"? Yikes.):
 
Inline JPEG image
 
If we run the agent in our database, we get this CSV
 
Inline JPEG image
 
Opened in Excel and tweaked slightly so we can see it better, we get the desired spreadsheet shown at the top of this post. 
 
This worked well for the customer, generating several million rows of data to import into their new system. We also generated high fidelity renderings of the forms, but that was for a different purpose.
 
Request a Midas LSX evaluation license and see if it meets your migration needs.
 
As it happens, we can do this exact same rendering using Exciton Boost's REST API.  Instead of an agent, we used a GET request to display one of the views: 
 
 
In the request, we set the Accept header to text/csv. We set the X-Items-List to the same formula as in the form for the Midas export:
 
Team+@If(Home="";" at ";" (h) vs. ")+OppTeam+" on "+@Text(GameDate)=Game,(Num:Num_1:Num_2:Num_3:Num_4:Num_5:Num_6:Num_7:Num_8:Num_9:Num_10:Num_11:Num_12:Num_13)=Num,(Player:Player_1:Player_2:Player_3:Player_4:Player_5:Player_6:Player_7:Player_8:Player_9:Player_10:Player_11:Player_12:Player_13)=Name,(Pos:Pos_1:Pos_2:Pos_3:Pos_4:Pos_5:Pos_6:Pos_7:Pos_8:Pos_9:Pos_10:Pos_11:Pos_12:Pos_13)=Position,(AB:AB_1:AB_2:AB_3:AB_4:AB_5:AB_6:AB_7:AB_8:AB_9:AB_10:AB_11:AB_12:AB_13)=AB,(Rs:Rs_1:Rs_2:Rs_3:Rs_4:Rs_5:Rs_6:Rs_7:Rs_8:Rs_9:Rs_10:Rs_11:Rs_12:Rs_13)=R,(Hs:Hs_1:Hs_2:Hs_3:Hs_4:Hs_5:Hs_6:Hs_7:Hs_8:Hs_9:Hs_10:Hs_11:Hs_12:Hs_13)=H,(BB:BB_1:BB_2:BB_3:BB_4:BB_5:BB_6:BB_7:BB_8:BB_9:BB_10:BB_11:BB_12:BB_13)=BB,(RBI:RBI_1:RBI_2:RBI_3:RBI_4:RBI_5:RBI_6:RBI_7:RBI_8:RBI_9:RBI_10:RBI_11:RBI_12:RBI_13)=RBI
 
The response is:
 
201 OK
Game,Num,Name,Position,AB,R,H,BB,RBI
Chicago White Sox at Cleveland Indians on 09/24/2020,7,Tim Anderson,SS,4,0,0,0,0
,10,Yoan Moncada,3B,4,1,1,0,0
,24,Ysmani Grandal,C,4,0,0,0,1
,79,José Abreu,1B,3,1,0,1,0
,74,Ely Jiménez,LF,3,1,1,0,0
,15,Adam Engel,LF,0,0,0,0,0
,33,James McCann,PH,1,0,0,0,0
,23,Edwin Encarnación,DH,3,0,0,0,0
,30,Nomar Mazara,RF,3,0,1,0,2
,5,Yolmer Sánchez,2B,2,1,1,1,1
,32,Jarrod Dyson,CF,3,0,0,0,0
Cleveland Indians (h) vs. Chicago White Sox on 09/24/2020,12,Francisco Lindor,SS,3,0,0,1,0
,7,César Hernández,3B,4,1,3,0,3
,11,Jose Ramirez,3B,3,0,2,1,2
,41,Carlos Santana,1B,4,0,0,0,0
,32,Franmil Reyes,DH,4,0,1,0,0
,8,Jordan Luplow,RF,2,0,0,0,0
,31,Josh Naylor,PH-LF,2,0,1,0,0
,35,Oscar Mercado,LF,2,0,0,0,0
,30,Tyler Naquin,PH-RF,2,1,1,0,0
,55,Roberto Pérez,C,2,1,1,0,0
,6,Mike Freeman,PH,1,1,1,0,0
,17,Austin Hedges,C,1,0,0,0,0
,0,Delino DeShields,CF,3,1,0,0,0
 
Or we could switch to JSON or XML and use those instead, simply by changing the Accept header. It's that simple.
 
Request an Exciton Boost evaluation license and try it out in your modern web/mobile apps.
 

Tags:

Fri 8 Jun 2018, 12:42 PM
This is the third in a series of short posts on configuring CKEditor, the web editor included with Domino. It is used by default for rich text fields in XPages, and in the second post, I showed how to use it for rich text fields in Classic Domino web design. I also showed how to configure the toolbar to include only the actions you want. In this post, I'll show how you can include your own actions, termed plugins, into the toolbar in both XPages and Classic.
 
1) A simple toolbar plugin 
Toolbar actions can do a number of things. They can add content, they can manipulate existing content, and they can use content for some action outside of the rich text (like a button on a Notes form). I decided to build the classic Hello World action, represented by a globe icon. But in this case, when you say Hello, World!, it says Hello back to you. Here's how it will work:
 
Inline GIF image
 
 
2) Building the plugin 
If you look at the directories under the data directory, you will find data\domino\html\ckeditor\plugins which has all sorts of existing plugins. I started by adding a subdirectory called hello, which will be the name of my plugin.
 
Inline JPEG image
 
In that directory, I add a subdirectory names icons and create a JavaScript file called plugin.js to implement the code. Under the icons, I add a 16x16 px icon for the action as a .png file. For ease of use later, call it by the same name as the plugin name, so in this case hello.png. It looks like this:
 
Inline GIF image
 
The plugin.js code is very simple, though plugins can be much more extensive:
 
Inline GIF image
 
 
3) Adding the plugin to XPages 
We add a dojo attribute called extraPlugins with a value of "hello", and the modify the dojo attribute for toolbar to include the plugin. Here is the end result when seen in the source of the custom control:
Inline GIF image
 
When we open it up and hover over the globe icon, we see "Hello, World!" (the label from plugin.js):
 
Inline GIF image
 
and when we click on the action, it inserts the HTML we want at the insertion point:
 
Inline GIF image
 
 
4) Adding the plugin to Classic
The only code we need to change is in the doLoadCKEditor function in JS Header. We need to add that same extraPlugins value, and we need to modify toolbar. Here is the modified functionto get the toolbar seen in the animated GIF at the beginning of this post:
 
Inline GIF image
 
 
All topics in the series
 
Fri 8 Jun 2018, 11:50 AM
This is the third in a series of short posts on configuring CKEditor, the web editor included with Domino. It is used by default for rich text fields in XPages, and in the second post, I showed how to use it for rich text fields in Classic Domino web design. I also showed how to configure the toolbar to include only the actions you want. In this post, I'll show how you can include your own actions, termed plugins, into the toolbar in both XPages and Classic.
 
1) A simple toolbar plugin 
Toolbar actions can do a number of things. They can add content, they can manipulate existing content, and they can use content for some action outside of the rich text (like a button on a Notes form). I decided to build the classic Hello World action, represented by a globe icon. But in this case, when you say Hello, World!, it says Hello back to you. Here's how it will work:
 
Inline GIF image
 
 
2) Building the plugin 
If you look at the directories under the data directory, you will find data\domino\html\ckeditor\plugins which has all sorts of existing plugins. I started by adding a subdirectory called hello, which will be the name of my plugin.
 
Inline JPEG image
 
In that directory, I add a subdirectory names icons and create a JavaScript file called plugin.js to implement the code. Under the icons, I add a 16x16 px icon for the action as a .png file. For ease of use later, call it by the same name as the plugin name, so in this case hello.png. It looks like this:
 
Inline GIF image
 
The plugin.js code is very simple, though plugins can be much more extensive:
 
Inline GIF image
 
 
3) Adding the plugin to XPages 
We add a dojo attribute called extraPlugins with a value of "hello", and the modify the dojo attribute for toolbar to include the plugin. Here is the end result when seen in the source of the custom control:
Inline GIF image
 
When we open it up and hover over the globe icon, we see "Hello, World!" (the label from plugin.js):
 
Inline GIF image
 
and when we click on the action, it inserts the HTML we want at the insertion point:
 
Inline GIF image
 
 
4) Adding the plugin to Classic
The only code we need to change is in the doLoadCKEditor function in JS Header. We need to add that same extraPlugins value, and we need to modify toolbar. Here is the modified functionto get the toolbar seen in the animated GIF at the beginning of this post:
 
Inline GIF image
 
 
All topics in the series
 
Thu 15 Aug 2019, 01:11 PM
Inline JPEG image
 
Yesterday, Genii Software released Version 5.60 of the Midas LSX and the Midas C++ API. Both are available for download from the Genii Software website at https://geniisoft.com. While a number of customers have been running for months with pre-release versions, this wraps up the features and bug fixes included in those and adds more. Version 5.60 supports Notes/Domino 6.5.x to 10.x for Windows 32-bit and 64-bit. Support for Linux 32-bit and 64-bit coming next week.
 
A few highlights:
 
  1. Expanded support for active elements in generated HTML/MIME/etc.

    As with tabbed tables and sections, caption table and AdvanceOnClick tables now have support for both full JavaScript and pseudo-class JavaScript renderings so that they will act on the web the way they do in Notes. See the short video at the bottom of the post 
    When low code is no code - saving space for mobile for an example showing AdvanceOnClick tables.
  2. Enhanced support for keyword and other form element rendering to HTML/MIME/etc.

    Whether rendering a form or a forwarded email, keyword fields such as radio buttons and combo boxes and checkboxes will render looking the way they did in Notes.
  3. Support for rendering language tagging in text.

    Whether a word or phrase or multiple paragraphs, when text is tagged with a language, rendered HTML/MIME/etc. will include that language tagging so that screen readers can pronounce it properly and discovery tools that use language can find and identify it properly.
  4. Custom replacement engine for Notes/Domino rendering to rich text

    Due to various bugs and deficiencies, we have incorporated a new internal engine to render a form and its fields to rich text faster, with greater fidelity, and with greater stability. This is largeley hidden, but is most obvious in places such as the Export to CSV used by so many customers to render full documents with their forms to HTML or MIME.
 
New version will work with existing Midas Version 5.x licenses except those no longer under maintenance.

Tags:

Tue 13 Nov 2007, 08:12 AM
As I mentioned in my previous post, Midas 4.00: More control over file attachments and file icons, Version 4.00 of the Midas Rich Text LSX and Midas Rich Text C++ API has several major themes, and a second one that I want to describe is support for Wiki links in the Notes client (and on the web as well).

When designing Wiki link support, we explored the idea of using CamelCase words, but rejected it as leading to poor writing style.  For similar reasons, other wikis such as Wikipedia discourage CamelCase for Wiki links.  Instead, we focused on how Wiki links could be used in the midst of regular rich text editing.  But before we get buried in syntax, entertaining as it may be to all of you, I want to point out a few key points:

  • Wiki links are resolved as run-time, so a link to a subject that doesn't exist will become an action to create that subject.
  • WIki links are dynamic, so if a link to a subject works and then that subject is deleted, the link will become an action to create the subject again.  If it is created, the action hotspot will become a link again.
  • Wiki links are not visibly  tagged, except on creation, meaning that while it is created as ((Subject)), it appears as Subject or Subject (see below), depending on whether it exists or not,which makes for clearer rich text usage.  There is no switching to confusing Wiki text markup the way most Wikis work.
  • Wiki links do not need to be to the same database.  In fact, using the tagging method, you could have Wiki links pointing to multiple databases or views.  Thus, you could have a Products database and a Sales Person database and a Customer database, and create Wiki links to each of them simultaneously.
  • Wiki links have a few ease of use measures to allow easier creation of URL hotspots, and even a special URL link to Google searches, for example.

The following syntax rules are what we came up with to support Wiki links in Midas:

Wiki Link syntax
((text to match))  - If the string "text to match" matches a document in the search view, this becomes a link hotspot to the document and appears as text to match.

((text to match|Title to show))  - If the string "text to match" matches a document in the search view, this becomes a link hotspot to the document and appears as Title to show.

((text to match#anchor))  - If the string "text to match" matches a document in the search view, this becomes an anchor  link to the document and to the "anchor" anchor in the document,  and appears as text to match.

((tag:text to match))  - If the string "text to match" matches a document in the search view defined for that tag, this becomes a link hotspot to the document and appears as text to match.

But what if the string "text to match" doesn't match a document in the search view?  In true Wiki link form, the link becomes an action hotspot which, if clicked, will compose the document and pre-fill in the value of the "text to match" so that when the document is saved, it would become the appropriate matching document.  To distinguish these links, the action hotspot will appear as text to match.

Convenient Wiki Link extras
((google:large penguins))  - This becomes a URL hotspot which will execute a search for "large penguins", and appear as large penguins.

((midas:WikiMatching method))  - This becomes a URL hotspot which will open the Midas Rich Text LSX on-line help database to the topic "WikiMatching method", and appear as WikiMatching method.

((http://www.GeniiSoft.com)  - This becomes a URL hotspot which will point to the specified URL and appear as www.GeniiSoft.com.

((http://www.ibm.comIBM))  - This becomes a URL hotspot which will point to the specified URL and appear as IBM.

((mailto:Sales@GeniiSoft.com)  - This becomes a mailto:  URL hotspot which will appear as Sales@GeniiSoft.com.

((mailto:Sales@GeniiSoft.comGenii Software sales))  - This becomes a mailto:  URL hotspot which will appear as Genii Software sales.

How could this be used?
Now, I should emphasize, the point is not so much to create a full wiki experience in Notes, although I know how to do that as well, but just to facilitate authoring.  A somewhat extreme example might be this list of actions for me to take to promote the new Wiki links:

  • ((help:WikiMatching method|Create the Help document))
  • ((sales:Promo for Wiki links|Create the Sales promo))
  • ((help:Added Wiki link support|Create the Release note))
  • ((mailto:CustomerList?subject=Midas 4.00 features "Wiki Links" in Notes client|Create the letter to send to customers))
which would become a list that looked like
  • Create the Help document
  • Create the Sales promo
  • Create the Release note
  • Create the letter to send to customers
But each of the actions would do something different, creating a document with the appropriate text in the appropriate place.  The final action would not only open up a mail message, but would pre-fill in the Subject.  By simply clicking on the various topics, I could both do the action, and see what had been done (except the final one)., since the created documents would appear as links.  When I was finished with the list, it would now appear as:
  • Create the Help document
  • Create the Sales promo
  • Create the Release note
  • Create the letter to send to customers
and each of the first three items would be a link to the document that had been created.

Tags:

Sun 24 Aug 2003, 10:32 PM
This "Getting started..." series of articles shows simple code snippets to demonstrate how to use common features of the Midas Rich Text LSX.  These are not meant to be full fledged samples, for which you could go to the Midas Samples page, but rather small bits of code to show how to get started.  These articles will also appear in the Reference section of the Midas Help db in somewhat altered form.


The Midas Rich Text LSX lets you find, create, manipulate and extract doclinks.  The most common tasks are accessing doclinks and retrieving their values, changing one or more component of all doclinks in a rich text field, and adding a new doclink.  Below are some quick code snippets to show these tasks.  Additional information can be found in the Midas Help db along with information about the individual properties and methods which relate to doclinks.

Accessing all doclinks and getting their values
Set rtchunk = rtitem.DefineChunk("Doclink 1")
If rtchunk.Exists Then
   Do
      Messagebox _
      "Replica ID: " & rtchunk.LinkReplicaID & Chr(10) & _
      "View UNID: " & rtchunk.LinkViewUniversalID & Chr(10) & _
      "Note UNID: " & rtchunk.LinkNoteUniversalID & Chr(10) & _
      "Popup text: " & rtchunk.LinkPopupText & Chr(10) & _
      "Hint server: " & rtchunk.LinkHintServer & Chr(10) & _
      "Anchor text: " & rtchunk.LinkAnchorText, _
      0, "Doclink Information for " & rtchunk.Definition
   Loop Until Not rtchunk.GetNextTarget
End If

Accessing all hyperlinks (link hotspots on text) and getting their values
Set rtchunk = rtitem.DefineChunk("Hyperlink 1")
If rtchunk.Exists Then
   Do
      Messagebox _
      "Link hotspot: " & rtchunk.Text & Chr(10) & _
      "Replica ID: " & rtchunk.LinkReplicaID & Chr(10) & _
      "View UNID: " & rtchunk.LinkViewUniversalID & Chr(10) & _
      "Note UNID: " & rtchunk.LinkNoteUniversalID & Chr(10) & _
      "Popup text: " & rtchunk.LinkPopupText & Chr(10) & _
      "Hint server: " & rtchunk.LinkHintServer & Chr(10) & _
      "Anchor text: " & rtchunk.LinkAnchorText, _
      0, "Hyperlink Information for " & rtchunk.Definition
   Loop Until Not rtchunk.GetNextTarget
End If

Changing one component of all doclinks (e.g., changing view unid to use All Documents view)
Set view = db.GetView("($All)")
Set rtchunk = rtitem.DefineChunk("Everything")
Call rtchunk.ChangeDoclinks("", view.UniversalID)

Changing one component of all doclinks that match a specific component (e.g., changing view unid to use All Documents view if the replica id is the current database)
Set view = db.GetView("($All)")
Set rtchunk = rtitem.DefineChunk("Everything")
Call rtchunk.ChangeDoclinks("", view.UniversalID, "", "", "", Ucase(db.ReplicaID))

Creating a new doclink using AppendLink
Set view = db.GetView("($All)")
Set rtchunk = rtitem.DefineChunk("Everything")
Call rtchunk.AppendLink("", db.ReplicaID, view.UniversalID, doc.UniversalID, "Follow link by clicking here...")

Creating a new hyperlink (link text hotspot) using AppendLink
Set view = db.GetView("($All)")
Set rtchunk = rtitem.DefineChunk("Everything")
Call rtchunk.AppendLink("My link", db.ReplicaID, view.UniversalID, doc.UniversalID, "Follow link by my link...")
Tue 23 Nov 2004, 10:20 AM
One rewarding thing about working hard to keep customers happy is that those same happy customers often return the favor by mentioning your product to others.  This is invaluable for our business, as Genii Software doesn't do any paid advertising, so all business is either generated by helping people on forums, by speaking at conferences, and by personal recommendation, but mostly the latter.  It is particularly nice when the recommendation or mention comes in a public forum or weblog.  Here are just a few recent quotes... (read on)
Tue 23 Jan 2018, 02:21 PM
Today, we released Midas LSX 5.53, which while a minor point release has some major enhancements for support of Asian and other multibyte character sets in attachments and text. While we have supported Japanese, Vietnamese, Thai, Chinese and Korean attachment names, the process for getting them to work was cumbersome and required that all attachment names used the same font, which was not ideal. Now, there is improved automatic font recognition, so file attachments are both legible and appropriately size even if you have a mix of Japanese and Cyrillic, or Vietnamese and Korean and English.

While you might not think of your rich text having tabbed tables, your forms often will. Most customers who export content to SharePoint or other systems, or simply for archival purposes, want to have a working snapshot of the rendered form, and that means tabbed tables and other complex form elements. To that end, we fixed a bug and enhanced the specialized handling of tabbed tables with Javascript. Simply setting TabbedTablesInCSS='yes' will generate the CSS and Javascript code necessary to make even nested tabbed tables work the way they do in Notes.

Inline JPEG image

Tags:

Thu 10 Feb 2011, 12:09 PM
As I prepare for the EntwicklerCamp conference in Germany, I have been describing Midas Rich Text LSX methods that I am using along with XPages and web editors for an interesting technology fusion.  Not saying what the project is yet, although guess if you like. Those at EntwicklerCamp will have an opportunity to see the project working, but soon after that, I should have a demo for others.  This is a follow up to my earlier two Method to the Madness posts, Connecting to an XPage with Midas and Custom XHTML input for XPage field.

As I continue to develop the project (hint: it has a slight connection to my IdoSphere post), I have discovered that my database is missing some resource files I will need.  I'll need a CSS style sheet and at least a couple of JavaScript files.  Since I won't know exactly which ahead of time, our third method will be GeniiSession.CreateFileResource. As before, I have included much of the general help, as well as an example.  Please note that in the example, if the file has a .css extension, it is automatically added as a Stylesheet resource, while other files are added as regular File Resource files.

Are you starting to see how many different things the Midas Rich Text LSX can, aside from just "manipulating rich text"?

CreateFileResource method  

Version added: 3.50

Creates a new style sheet or file resource design element and returns a GeniiRTItem class object connected to the file resource data. 
Defined in
GeniiSession class
Syntax
Call geniiSession.CreateFileResource(server$, filepath$, resourcename$, [properties$)
Parameter
server$
String.  The server for the database in which the file resource will be created.  This should be a blank string, "", for a local database.  If a NotesDatabase object is instantiated, this is the Server property.
filepath$
String.  The pathname of the database, relative to the Notes data directory.  If a NotesDatabase object is instantiated, this is the FilePath property.
resourcename$
String.  The name of the file resource to be created.  If this name ends in a .css, the file resource will be created as a style sheet resource, and otherwise it will be a regular file resource.
properties$
String.  Optional.  Various property pairs which effect the creation of the file resource. Possible property pairs are below:

Overwrite=Yes/No (defaults to No)
SourceFile=filename (If no source file is specified, the file resource could be added other ways, but for now this should always be used)

Example:
Dim s As New NotesSession
Dim db As NotesDatabase
Dim gSession As New GeniiSession
Dim rtitem As GeniiRTItem

Set db = s.CurrentDatabase

' *** Create a style sheet
Set rtitem = gSession.CreateFileResource(db.Server,
                                         db.FilePath,
                                         "alltogether.css")

' *** Create a file resource
Set rtitem = gSession.CreateFileResource(db.Server,
                                         db.FilePath,
                                         "glasnost.js")

Tags:

Thu 10 Mar 2011, 05:38 PM
I have been developing software extensions for Lotus Notes for a long time. No, I mean a really long time. Sometimes it makes me vaguely ill to think about, but sometimes I have to feel good about the positive side of all that effort:

Almost every time I set out to write something new, I already have code to do much of what I want. Even if I never anticipated that specific task, I have intellectual property everywhere, and there's almost always a solution I've written somewhere that will help with the new task.

Thus, I set out earlier today, around noon, to implement both the GetAsText and SetAsText methods I mentioned in my earlier post. I put in the basic framework using code I developed to make adding Midas methods easier. I then looked around and found internal methods to get text from rich text fields with various parameters, and to get text from file resources with different parameters. I found internal methods to put them back. I cobbled it all together, and now have a working prototype that implements that script I wrote earlier (copied below). It works pretty well. Once I clean up some of my CopyWithDependencies method, which also uses a heck of a lot of existing code, I'll send the whole thing off to Ulrich so he can see how it works.

With more than fifteen years of code saved up, it is pretty easy to do almost anything. Perhaps tomorrow I'll tackle turning Notes docs into PDF or making Midas into an OSGi plugin.

Tags:

Wed 9 Feb 2011, 10:49 AM

On page 67 of Mastering XPages (What? You don't have Mastering XPages yet? Well, we're hardly going to wait around a week for it to get delivered, so you can order it for Kindle at Mastering XPages - Kindle edition and look for Chapter 4, listing 4.18), there is a discussion about filling in content for a rich text field using escaped HTML with the xp:inputRichText tag.

So, our second method will be GeniiRTChunk.GenerateHTML. The general help for the method is below, but we will use a very specific set of parameters which I will get to later.  This will allow us to do some fancy tricks, but will also use the Midas LSX's high fidelity rendering engine.

GenerateHTML method  

Version added: 2.21

Converts the specified chunk into HTML controlled by the various arguments and properties, and returns the result as a text stream. Result can be  complete, compliant, well formed  HTML or XHTML, or it can be a compliant fragment of HTML or XHTML that can be embedded in an HTML or XHTML result from elsewhere.  Ideal for use with agents generating HTML rapidly and completely but needing to incorporate rich text fields in the results.  Please note that style mappings created through the SetStyleMapping method will also effect HTML and XHTML generation.  The ClearStyleMappings method can be called to eliminate previously created style mappings.
Defined in
GeniiRTChunk class
Syntax
textgeniiRTChunk.GenerateHTML(subdefinition [html_type  [properties]])
Parameters
subdefinition
String.  Optional.  The definition of the subchunk, or "" if the whole chunk should be used.
html_type
String.  Optional.  Currently "HTML" and XHTML are the only valid options, but in future versions the default may change.  HTML refers to compliant HTML 4.01, while XHTML refers to compliant XHTML 1.0.
properties
String.  Optional.  Properties which control the generation of the HTML are defined in the document Working with HTML generation.  In addition, there is a property called OutputToEvent which can be set to "Yes" or "No".  If it is set to "No" or not set at all, the return value for the GenerateHTML call will be all of the HTML generated concatenated together.  If the size is greater than 64KB, the result will be truncated.  If the OutputToEvent property is set to "Yes", an ActOnText event will be triggered for each 8000 characters (roughly), and all limits on the size of the HTML to be generated are removed.

Tags:

Thu 3 Sep 2009, 09:37 AM
I must start by saying that I am in no way meaning this to poke fun at 12 step programs, many of which are wonderful aids to those seeking help. from one problem or another.  It is just that as I continue working on both my evaluation of Notes/Domino 8.5.1 (Beta Refresh 8), and simultaneously working on a rather interesting announcement regarding CoexEdit, I keep running into a dialog box which sounds suspiciously like the first step in Alcoholics Anonymous and the other 12 step programs:

1.   We admitted we were powerless over rich text editing on the web—that our lives had become unmanageable. 

OK, that is not really what it says, but read the dialog, which appears when you save a document in the spiffy new Discussion database template from a web browser (using the integrated Dojo web editor), or at least any document with almost any complexity such as a table.  After reading the dialog box, can't you hear the step I wrote above in your head?


(read on) to see the dialog box in context...

Tags:

Wed 20 May 2009, 09:55 AM
How stable, scalable and reliable is iFidelity?


This might seem a difficult question, since iFidelity is only "about to be released".  At best, it has some enthusiastic and satisfied beta testers.   It has no reference customers, no customer base and no track record.  Or at least it doesn't in its current form.  A related question which sheds some light is, why is the first version of iFidelity Version 3.0?  The answer is that iFidelity is really the marriage of two existing products with strong track records, CoexLinks and CoexEdit, which are at Version 2.8 and 2.2 respectively.  Hence, the product which is built on these two bases has been started at 3.0.

CoexLinks is primarily used by companies who have IBM Lotus Domino and Microsoft Exchange infrastructures that must coexist.  It has been licensed and rolled out to many of the biggest companies in the world since 2003, and is widely acknowledged to be an exceedingly stable, scalable and reliable product.  For example, on MSExchange.org's software migration page, CoexLinks is the top rated product with a score of 4.17 out of 5.  Of course, If you have ever received mail from electronics giant Philips, from USAir, from RSM McGladrey (aka HR Bloch), from GE or many other well known companies, you may have already experienced the stability, scalability and reliability of CoexLinks without knowing it.


Highest rating for CoexLinks



CoexEdit is primarily used product for Notes/web editing coexistence, and it has also been implemented since 2005, and has won a number of awards from IBM and others for its ability to seamlessly convert rich text to HTML and back to rich text.  If you have ever posted an idea on IdeaJam or a comment in the Lotusphere Sessions database, or filled out a form on the webpage of Cici's Pizza or Collier's International or many other well known companies, you may have already experienced the stability, scalability and reliability of Coexedit without knowing it.



Lotus Advisor Editors Choice 2006

2006 Lotus Award - Finalist Best Tool/Utility



Does the marriage of two stable, well recognized products ensure the stability, scalability and reliability of iFidelity?  That is a decision you will have to make for yourself.  At least it ensures that the vendor behind the two products knows how to build these features into a product, and has the track record to ensure that if there are any early glitches, they will be fixed promptly and efficiently.  If that isn't enough for you, you may have to wait a bit as others jump on the bandwagon before you (hopefully not your competitors getting a jump on your business).

Better email.  Better communication.  Better impressions.

Tags:

Wed 28 Jul 2004, 11:37 PM
We have just released a press release that starts:
Genii Software, Ltd. and Granite Software, Inc. today announced a distribution agreement for Genii Software's CoexLinks for Lotus Domino.  This agreement enables both software firms to continue their growth strategies and strengthen their respective technology solutions while extending their product sales to existing and new customers.
I wanted to take this opportunity to explain the decision, what it does mean and what it does not, and why we are taking this step... (read on)
Tue 9 Mar 2004, 03:36 PM
I have blogged about forward compatibility in the Notes C API before, but I had another example today.  A client called about a custom LSX I wrote for them in 1999, almost five years ago.  They had a small problem and wondered if I could take a look.  My only problem was, where was the source code.  I looked on my main development machine, my laptop, my old development machine, my even older development machine (duals boots with OS/2, so I keep it around), and finally hauled out the old laptop with the broken display that I have sitting in the corner because I never throw anything out.  The latest version of Notes on that machine is 4.6.2, and the OS is Windows 95.

The LSX used an earlier version of the LSX toolkit (as does our Midas Rich Text LSX, for that matter), and the latest version of Notes on that machine is 4.6.2, and the OS is Windows 95.  Yet the problem the customer is having has nothing to do with their using R5 or even testing with ND6, nor does it have to do with running XP.  Their problem is that for this little LSX, I hardcoded the temp directory as c:\temp, and they want to use a different temp directory.  Easy change I can make today, and they can keep using the utility for another five years.  I love forward compatibility.
Fri 19 Sep 2003, 12:35 AM
OK, I've probably bored everybody to death on the subject of @Midas Formulas, and I don't know whether anyone is reading these or not anymore (Actually, that isn't quite true.  Due to the wonders of Nedstat, I know that yesterday 52 people read my blog, and they read 103 pages, but I don't know whether they were happy about it).  Anyway, here's a promise.  Stick with me through just one more, and I'll try to write a nice juicy Rich Text 101 article tomorrow.  Is it a deal?

I feel that it is very important when writing an extension to a language to be consistent with the way things are done in that language (except when they are done wrong, and then all bets are off).  When writing the Midas Rich Text LSX, I wanted to make it easy, but I also wanted to make it work the way LotusScript seemed to work.  [Note: I think the Notes 6 developers missed this when they added the new rich text classes, and even more the XML classes.  Instead, they tried to make the LotusScript classes consistent with the C++ API classes, which I feel was a big mistake.  Anyway, that is the topic for another blog one day.]

Similarly, when working with the formula language, I try to stay consistent with the way the current @formulas are written.  But what am I to do when the formula language itself isn't consistent? (read on)
Mon 7 Jun 2004, 10:50 PM
No, I'm not talking more about Non-disclaiming disclaimers again, nor am I talking about silly disclaimers such as those found here
This e-mail and any files transmitted with it are confidential and intended solely for the use of the named recipients only. If you have received this e-mail in error do not open or copy it but return it to us. We cannot accept liability for any loss or damage sustained as a result of software viruses.
Sure would like to know how you read the disclaimer without opening that one.

No, I am talking about the erudite, polished and eminently legalistic... (read on)
Thu 22 Sep 2005, 12:19 PM
I had a customer/friend say to me today "Why bother with a rich text comparison?  Just look at it and see what is different."  This is the sort of question that leaves me speechless (no offense, Jim), but I thought I'd show a really simple example:

Quick!  What is the difference between the following two entries.  The first is from the 6.5 Help db and the second is from the 7.0 Help db.

Notes/Domino 6.5 Help doc
Inline GIF image


Notes Domino 7.0 Help doc
Inline GIF image

Differences between ND 6.5 and ND 7.0 Help doc
If you are like me, you could see the differences right away, or at least you could see that there were differences.  But could you identify each change?  Could you be quite sure you didn't miss any?  Did it take quite a bit of time to reassure yourself you had everything?  (Or, did you just jump down here and not bother with all that hard work.  This is your lunch break, after all, and you are having fun reading blogs, not working.  Sheesh!)  In any case, now look below at the Midas generated comparison.  The parts in blue are added, while the parts in red strikethrough are deleted.  That was a bit easier, wasn't it? 

Inline GIF image
Mon 10 May 2004, 10:12 PM
Rather than wait for perfection, I went ahead and released the Midas Version 3.30 Help db for download.  The problems with it are primarily in the @Midas Formulas documents, which are not complete, but since the Gold release is not quite ready for @Midas, and the Midas Rich Text LSX Version 3.30 has been released, I thought it was better to get it out like this than never get it out, as happened for the Version 3.20 Help db, which was only ever available on-line.  Of course, the latest version is still always available on-line.

If you see anything in the Help that shouldn't be, or do not see something that should, please let me know and I'd be happy to make sure it gets corrected.  There will be another release with the final details cleaned up and the @Midas Formulas documents complete.

Oh, and one note for those who have used the Midas Help db in the past.  While the replication id is the same, the database name has changed from rthelp4.nsf to MidasHelp.nsf.  It is a far more sensible name, but I am sure somebody will download this, unzip the file, check the database and then write to tell me the changes aren't in there.  It is inevitable.
Thu 12 Feb 2004, 02:44 AM
Follow up to Creating an effective sample post for those interested in what happened next...

This was originally started the next morning, but then the developer said we had a bit of a reprieve, so I didn't finish it right away.  When I did finish the demo, I didn't have time to document everything, but I do think the solution is pretty slick...
Wed 1 Dec 2004, 07:39 PM
Mike MidasSome of you have already been introduced to our new guest blogger, Mike, in Luck be a Lady Tonight, but I thought I'd best be polite about it and introduce him properly.  Mike solves mysteries, especially rich text mysteries, and he isn't afraid of anyone (except maybe Crystal)... (read on)






Thu 12 Jan 2006, 10:20 PM
If you don't know what this means,


see the key below.  Until today, I didn't have the first spot, the Speaker icon, but now... (read on)
Tue 15 Jul 2003, 11:24 PM
Rich Text 101 logo
Tables have been a part of Lotus Notes/Domino since the earliest versions, but that doesn't mean they have stayed the same.  There have been many additions and modifications to the way tables are handled, and new features to make fairly complicated tables fairly easy to create.  Some of these features are wonderful, such as the tabbed table, while some are much less well thought out, such as animated tables.  The purpose of this article is to explain some of the basic limits of tables, and start covering a few of the features that make them powerful, along with a few tips to help you use them effectively.  Part 2 will cover more tips, tricks and workarounds, especially with tabbed tables and animated tables.  If that takes long enough, Part 3 will cover hide-when formulas, how to use them effectively and (relatively) safely, as well as some ideas about how to make tables look good on the web without making the whole table out of pass through HTML.  If I think of more, there might even be a Part 5...

Tags:

Tue 18 Nov 2003, 12:44 PM
Continuing the customer inspired list of the top ten ways to use Midas which I started yesterday with #10) Rich text comparisons with red-lining, I now offer #9...
Wed 7 Jul 2004, 11:24 AM
OK, I know I blog about this periodically, but it finally seems that the strong pick up in the Notes/Domino business is becoming more apparent "out there"... (read on)
Wed 26 Sep 2007, 12:37 PM
While a lot of companies use our Midas Rich Text LSX and Midas Rich Text C++ API to render HTML because it does such a good job reproducing the look and feel of the Notes client, that is by no means whatever everybody wants.  I thought it might be worth mentioning that in Midas 3.70 (and in the upcoming 4.0), it is possible to let CSS guide the style much more effectively.  As an example, you can say that you want your tables rendered "sparsely", so that the following table

Original table

which might normally render (using Midas) as...

(read on) to see rendering choices
Fri 26 Jul 2019, 09:06 AM
This is a follow up on my post, A funny thing happened on the way to mobile, which described the new HCL projects to put the full Notes code on mobile devices, including rich text on an iPad in email. So, as a first follow up, what happens if that email is sent to Outlook365 (as part of Office365)? Because there are different engines that create client MIME or server MIME, I sent the email via each so you could see how it both renders poorly and renders inconsistently. For this, I used the vertical bar chart which is simply a table with different color images used to display the bars. An important thing to note is that each bar has mouseover text which provides more details.
 
So, first lets look at how the email works if the location setting on the client is set to send rich text.
 
In O365 after rendering by Domino 10.0.1 server as outbound mail. Scale of table is way off, and the mouseover text is missing entirely.
 
Inline JPEG image
 
 
Well, that wasn't ideal, but the Notes client rendering is somewhat better for tables, so let's try that.
 
 
In O365 after rendering by Notes 10.0.1 client as outbound mail. Scale of table is okay, but bars are oddly centered vertically, and the mouseover text is still missing.
 
Inline JPEG image
 
 
So, this is how our CoexLinks Fidelity handles things better.
 
 
In O365 after rendering by CoexLinks Fidelity. Scale of table is correct and mouseover text works. Looks and works as it did in Notes.
 
Inline JPEG image
 
 
Now, most emails aren't this complicated. In companies we have worked with, the number of emails where CoexLinks Fidelity either substantially improved the fidelity or preserved information (such as the mouseover text or section titles which were lost) ranged from 1.5% to 7% of the total emails sent. So, if your organization sends one hundred thousand emails a day, that is only 1500 to 7000 emails a day where your clients/partners/executives are scratching their heads and wondering what the heck is wrong with you.
 
 
By the way, if you are wondering how this all works in Gmail, it is basically the same story. I'd be happy to show you if you are curious, or you can try for yourself.

Tags:

Wed 17 Jul 2013, 02:49 PM
This is the fourth in my series, Out Of Notes (see Part 1 - The ChallengePart 2 - Capsule Views, and Part 3 - ePublish from XPages), which shows how the Midas Rich Text LSX can be used to take data out of Notes either temporarily or permanently. In this part, I show how collections which we use to ePublish or export may include both the documents we select directly and those linked from those documents with doclinks. This makes it very easy to create a working snapshot in EPUB or another format where the doclinks continue to work but point to the other documents included. EPUB is the most widely accepted eBook format, and qualifies as a Capsule View, though it is not as limited as other Capsule Views. In a very short video, I demonstrate how easy this can be with Midas V5. More information and the script used are at http://mini-lessons.info/Midas11 
 
Note: Accurate closed captions have been provided, and if English is not your first language, you might want to turn on the auto-translate. I also advise turning on HD and watching full screen so the captions show under the video.
 
Sun 11 Jan 2009, 08:35 AM
To put it bluntly:

CoexLinks 2.x: Improves life for customers choosing to NOT USE Notes/Domino email
CoexLinks 3.x: Also, improves life for customers choosing TO USE Notes/Domino email

Given that, one suggestion for naming has been CoexLinks Universal.  Another might be CoexLinks Fidelity.  What would you call this software tadpole that is growing into a full-fledged software frog?

(read on) for more details

Tags:

Mon 15 Jun 2009, 05:53 PM
It is a very strange thing to step back and look at the evolution of Outlook and Notes in the last major versions, especially with regards to email rendering.  In some ways, each has been racing to get where the other one was.  Microsoft Outlook 2003 used an IE rendering component to display emails as they were read.  This meant that HTML emails tended to render quite well.  IBM Lotus Notes 7 did not use a rendering component, but instead converted email to Notes rich text, and thus did not render well.  

But that's not the whole story.  

Microsoft customers complained and griped about Outlook 2003, because when they replied or forwarded an email, it was converted to MS Word format, and thus lost a lot of fidelity.  What they saw when reading was not what they saw when forwarding.  Customers shouted and screamed, and Microsoft felt compelled to respond.

Meanwhile, IBM customers complained and griped about Lotus Notes 7, because when read an HTML email, it looked horrible.  On the other hand, when they replied or forwarded an email, it looked the same (as it was sent, not as it was received), because the loss of fidelity had already happened when they read the email.  What they saw when reading was the same as what they saw when forwarding, and neither was great.  Customers shouted and screamed, and IBM felt compelled to respond.

Fast forward to Outlook 2007 and Lotus Notes 8/8.5.  Now, Notes uses an IE component to display emails, and they render quite well.  Outlook reads directly into Word format, and thus renders much less well, but at least the emails look the same when forwarded or replied to, even if it is the same lousy.

So, the two elephants have essentially switched places.  The interesting thing is the response.  Notes 8/8.5 is fairly widely accepted, with one of the fastest adoption rates of any recent Notes version.  Outlook 2007 is not well accepted, with the slowest adoption rate any Outlook update has ever had.  While neither approach is perfect, I think the market is saying that the IBM elephant is lumbering in a better direction.  (Of course, if there just happened to be a product that worked with Notes that made the forwarding and replying render properly too...)

Tags:

Wed 30 Aug 2006, 03:34 PM
Accessibility in software and on the web has been an interest of mine for a number of years, from adding Section 508 and WAI (web accessibility initiative) support to our Midas Rich Text LSX HTML generation capability, to my more recent interest in Open Document Format and document formats.  Yet, in all that time, I have thought of myself as a provider of accessibility.  Even my focus on making our corporate webpage fairly accessible has been due to a sense that we should do this for "those who need it", or worse yet, so that others who did care about accessibility would not be able to point out how inaccessible our website is.  My mindset has still always been that of a provider.

So, I was on Bob Sutor's blog today, and he happened to mention that he was making his links more visible.  I responded, then sat and read my response a couple of times, and realized that I am an accessibilty consumer.  Perhaps we all are.  Here is what I said over there (although don't hesitate to visit his excellent blog):
I have to say, my eyes are not so great, and I am somewhat color blind, so I can never see the links in your text. I just mouse over where I think a link might be, and if it shows an underline, I know it is really a link. Some additional indication would be great, especially in light of your interest in accesibility.
Now, I am 43 years old, so I am not an old man, and my color blindness is only a partial red/green blindness that I read is quite common.  But my point is, I would never think to tell someone else that their website, blog or software was "inaccessible".  I would either use it as best I could, or not use it if it got too annoying.  Accessibility is something other people have to deal with, or so I tend to think.

But it isn't.  Accessibility is something people need, people like me and you.  Some need it more, some need it less, but it is a reasonable thing to expect.  It is not just a politically correct thing to do, or an expiditious way to gain business from government agencies who do have such requirements.  It is a way to treat your readers and users as people, worthy of respect, and worth keeping.  The flip side is, as a consumer, it is also my right, and responsibility, to let people know when their websites, blogs or software are not meeting my needs, even if I am not blind or uneducated or culturally different.  I will try to do so proudly.  How about you?
Thu 1 Jan 2009, 08:57 AM
I have had a couple of customers write this week to ask if we had a tool to automatically convert a form or view to an XPage.  This is something that wouldn't be terribly hard to do with Midas as it is, and would be even easier to build as a separate method.  I asked a couple of savvy blogger friends whether it would be of interest, and they seemed to feel it would miss the point of XPages, but were otherwise noncommittal.  So, what do you think?  Is it necessary?  Should I just write a Midas sample script, or should I produce a separate utility, or should I add a method to Midas?  Should I skip the whole thing and go grab a milk shake?

For those pondering the "Why?", the logic seems to be that it would be easier to move a fairly perfect rendering of the look and feel of the form or view to an XPage element, then enhance that XPage manually to take advantages of data lookups and the sort.  As one of my smart friends pointed out, Stephan Wissel will be doing a session at Lotusphere called AD215 - Practical Magic with DXL, which includes as part of the abstract:
You'll also see how to use DXL to help generate XPages from existing design elements like forms and views.
This would obviously be a way to get the fields and such onto an XPage, but what I have that Stephan won't is the high quality rich text to HTML rendering which would make the XPage retain the look and feel of the form, as well as the fields and some functionality.

So, what do you think?  Worth pursuing or pointless waste of time?

Tags:

Thu 6 Nov 2003, 12:50 PM
So, it is interesting to see the Microsofties talking about the incredible value in a rich client.  Here, from his Better Living Through Software blog, Joshua Allen talks about Grid Computing and Rich Client.  My favorite quote, and clearly that of others given the trackbacks, is:

"The fact that people have trouble imagining uses for rich client is more evidence that HTML has had a blinding effect on people's imaginations than evidence that there are a lack of such applications."

Make Sanders challenges Microsoft to make the business case for rich clients, and Robert Scoble does his best to  rise to the challenge, with lots of comments and trackbacks and everything.

I love this stuff.  Some of you have seem dubious when you hear we are working on products such as COEX! Web Edit and projects such as the Midas Reloaded project to build rich text programmability for IBM's new Rich Client.  Read these discussions, and maybe you'll start to see not only why we are working on what we are, but why IBM is all of a sudden more gung ho about Notes/Domino and what it can componetize from Notes/Domino, and also more gung ho for the new rich client.  It is our goal to bind the fate of Notes/Domino and IBM more closely by strengthening the rich client and the Notes client and making them more interoperable.

Still dubious?
Fri 19 Feb 2021, 11:44 AM
Yesterday, I wrote a post called Getting the point(s) across with Domino, O365, and Outlook365, but while it is fascinating, it also related to Notes/Domino email which may be a distant memory for some companies. But last night, it occurred to me to try a similar test with Domino mobile and web development, surely a more pressing issue for many companies today who are upgrading Domino applications. I decided to make one change to the content first, which was to make the lists ordered rather than bullets, as it is easier to tell the levels apart.
 
Note: Before I start, I want to acknowledge that part way through writing this post, I started doubting myself, as I was sure nested lists couldn't be this bad. I realized that there are two ways to create nested lists in Notes, and while they may look identical, one renders more reliably than the other. The basic difference is how you create the indents for the list. Suffice it to say, you have no easy way of knowing which technique was chosen, so the rendering can only be considered unreliable.
 
I decided to start with classic Domino web development and move forward in time. I would have included the new AppDev stuff, but it doesn't really render rich text at all. Go figure. Anyway, let's first look at how this looks in the Notes client, and then how it looks retrieved by our Exciton Boost REST API, just to see what it should look like. In each case, take note of what Roman numeral is displayed for C is for Cantaloupe. In the Notes client, it was III.
 
Created in Notes 11.0.1 client
 
Inline JPEG image
 
 
Displayed by Genii Software's Exciton Boost 4.6.1
 
Inline JPEG image
 
 
Displayed by Domino 11.0.1 HTTP (Classic web design)
 
Inline JPEG image
 
 
Displayed by Domino 11.0.1 XPages
 
Inline JPEG image
 
 
Retrieved by Domino 11.0.1 Domino Access Services (retrieved as HTML with ?multipart=false)
 
Inline JPEG image
 
 
Retrieved by Domino 11.0.1 Domino Access Services (retrieved as MIME)
 
Inline JPEG image
 
 
 
Explanation of the two ways to create nested lists
 
Modern method: The current common way to created a nested list is to use either the Indent and Outdent toolbar icons or F8 and Shift-F8 to do the same thing. This will shift both the left margin and first line left margin. See the two middle icons below with the little arrows.
Inline JPEG image
 
But these were not always there as options, and an earlier way to create nested lists was to change margins via the ruler.
 
Older method: The older way to created a nested list was to use the ruler and change the margins. Older rich text, or text created by long time users, may be more likely to have nested lists created this way. If you look at the ruler below, this is the indentation for Granny Smith. Note that only the top margin (the first line) is indented. In Notes rich text, that first line margin is what determines a "new indentation", which is why the ordered lists start over. But for some reason, the different engines that drive Domino don't seem to recognize that simple fact, and treat the nested list as a single list, albeit with different list types.
 
Inline JPEG image
 
 
--> Request an Exciton Boost evaluation license today and give it a try. <--
 

Tags:

Thu 7 Jun 2018, 10:44 AM
This is the second in a series of short posts on configuring CKEditor which is used by default in XPages for rich text fields. In this, I will show how CKEditor can be added to a Classic web application on Domino, and how  to make the same toolbar changes as I showed in the first article in the series
 
1) Add links to CKEditor in the HTMLHeadContent 
For reason that become clear laters, I create a computed field called HTMLBodyContent on a subform which has the rich textb field and CKEditor parts, and then include that field in the HTMLHeadContent section of the form which includes the subform.
 
Inline JPEG image
 
Inline JPEG image
 
 
2) Add code to activate CKEditor to the JS Header 
On the subform with the rich text field and HTMLBodyContent field, I add content to the JS Header section. The most important part is circled.
 
Inline JPEG image
 
 
3) See the results on the web using the default toolbar from config.js
This uses the default toolbar defined in the config.js file in the CKEditor directory on your server. (In another article, we will discuss how this can be replaced with a custom configuration.) I cut off the part of the toolbar for purpose of display on this blog.
 
Inline JPEG image
 
 
4) Modify JS Header to create a custom toolbar 
In the doLoadCKEditor function, add extra parameters as shown here. I set the skin to use and the toolbar, but other parameters can be set using this same format.
 
Inline JPEG image
 
 
5) See the results on the web using the custom toolbar
Always remember to clear the browser cache after each change, a otherwise you won't see the changes when you expect.
 
Inline JPEG image
 
All topics in the series
 
Thu 25 Jun 2009, 10:19 AM
Now that iFidelity is officially released, and now that the first twenty-four Business Partners have requested their free licenses, I thought I'd mention a small iFidelity feature that may be unknown to people.  I haven't mentioned it because I don't want to give anybody the mistaken impression that iFidelity is made for sending HTML mail - it isn't.  iFidelity is made for sending well rendered email, the vast, vast majority of which is regular rich text mail that you just want to get to the recipient looking like you sent it.

But the truth is, every once in a while, there is an advantage to including some HTML, either for an entire message or for a simple URL based image or something that you want to appear "just so".  With that in mind, iFidelity does recognize passthrough HTML and include it.  To show a really simple example, in this case with the whole message in HTML:

Email as it was sent from Notes


(read on) to see the example.

Tags:

Mon 18 Aug 2003, 01:15 AM
No, I am not talking about the new Harry Potter book, which is an excellent read by the way  I'm talking about wizards for generating code, or in the case of our Midas Rich Text LSX, for generating property strings... (continued)
Wed 8 Nov 2017, 09:54 PM
With all the talk, whether optimistic, pessimistic or snarky, about Notes/Domino 10, one thing I haven't heard much is what people wish would be in there. Yes, it will be a new version. Yes, it will be a strong affirmation to those companies still using Notes/Domino that product support will be around for the foreseeable future.

But what do you actually want the version to look like? Do you care about a Notes client, or are you only focused on Domino? Do you want as little change as necessary, or as much as possible?

Personally, I like the Notes client and think it offers a lot of value, though I wish I could dump Eclipse and still get Domino Designer. I also like the Domino server, though I find XPages tedious. I'd like to see enhancements to use Domino as a web platform aside from XPages. Not necessarily classic Domino web design, but ways to blend backend Domino with front end frameworks.

My wishes tend to be related to extensibility, partly because I like to sell extensions,. and partly because building an ecosystem is the key to building a stronger product. Neither IBM nor HCL will be able to meet everybody's needs, so we need entry points and events and components where we can plug in value. I want those for Domino, for Notes, for XPages, for everything. I wish for some JSON support inside the product. Also, my pet peeve is that I'd really like proper support for PNGs in Notes. Rich text supports them. Why the hell can't you import them manually? Grr. (Yes, you can import them with Midas, but really?)

Anyway, what are your wishes?


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.


Tags:

Tue 5 Aug 2014, 08:58 AM
If your company uses Notes/Domino for email, you have probably learned that in spite of years of customer complaints, emails sent from Notes are iffy at best. On a good day, all the information gets through. On a bad day, data is misformatted, missing or just plain messed up.

But it is just for such concerns that we at Genii Software tilt at the windmills of email fidelity and data integrity. Now, since the release of CoexLinks Fidelity 3.6, more and more companies are getting their windmills served up just the way they want them. (No point in tilting at something if you can't serve it for supper.) If you want a short technical explanation, see the bottom of this post. If you just want to try it for yourself, request an evaluation license.

In 2014, using IBM Notes 9.0.1 Social Edition, you send the following email:.
Original email in Notes 9.0.1 rich text

With native client rendering, it arrives in Gmail as:
Email as sent to Gmail after Notes 9.0.1 MIME rendering

With CoexLinks Fidelity rendering, it arrives in Gmail as:
Email as sent to Gmail after CoexLinks Fidelity MIME rendering

With native client rendering, it arrives in Outlook 2007/2010/2013 (no rendering changes in years!) as:
Email as sent to Outlookl after Notes 9.0.1 MIME rendering

With CoexLinks Fidelity rendering, it arrives in Outlook as:
Email as sent to Outlook after CoexLinks Fidelity MIME rendering


and it is not just the client rendering. What if you view the same email (still in rich text) via your Notes client or your iNotes client? Note that while the images work here, they will fail if mailed from here, unlike the images with CoexLinks Fidelity.


In IBM iNotes on Domino 9.0.1:
Email in rich text viewed through iNotes 9.0.1 with native rendering

In IBM iNotes on Domino 9.0.1 with CoexLinks Fidelity:
Email in rich text viewed through iNotes 9.0.1 with CoexLinks Fidelity rendering


A brief technical explanation of the specific areas which fail here:

1) Image resources in emails are converted to relative URLs by the client MIME rendering, which means they fail unless the email is read on the server where it was sent. The same issue means that the iNotes native rendering will work when viewed, but fail when sent. Real life scenarios: Note that while image resources are seldom added directly to emails, they are sent frequently when a document is forwarded. The images will look fine for the sender but be missing for the recipient. There is no easy way for the sender to know if images are inline or image resources. CoexLinks Fidelity solution: Image resources are brought inline before rendering. To avoid large sizes, the same image resource is only included in the MIME once even if it is displayed multiple times.

2) Table width. This problem surfaced due to a customer's confusion about why a table that was small and fixed in size was spreading across the entire width of an email. It turned out that a nicely constructed email newsletter had a table where the table was set to "Fit with margins", but every column was a fixed width. When that happens, the Notes/Domino rendering simply sees it as a variable width table. CoexLinks Fidelity solution: When all columns are fixed width, the table is treated as a fixed width table.

3) Non-uniform cell borders. Toward the end of the last millennium, a table in HTML either had borders or did not. After the introduction of CSS in 1996, tables in HTML with CSS could be on or off depending on the cell, something that had been true in Notes rich text for a long time already by then. Unfortunately, IBM has been slow to convert the non-uniform cell borders in Notes to non-uniform cell borders in HTML+CSS. To be fair, the Notes 9 client rendering does finally accomplish this, but the Domino 9 rendering does not. Thus, you can see the borders in the two samples above that were sent with Notes 9.0.1 rendering, but not in the iNotes rendering. Real life scenarios: Both newsletters and forms often use cell borders to make the appearance more sleek and professional. When these are sent or forwarded, the sender may not anticipate how the tables will look to the sender. CoexLinks Fidelity solution: CSS is used to match the non-uniform cell borders in Notes.

4) Table borders. Separate from cell borders, there is a table border which is often used for drop shadows but also for framing. Both Notes 9.0.1 and Domino 9.0.1 seem to ignore it in all their rendering engines. Real life scenarios: Newsletters, forms, and reports often use table borders, both for a professional look and, sometime, to separate out small tables. All is lost when these are rendered by Notes/Domino, no matter which rendering engine is used. CoexLinks Fidelity solution: Table borders are used, as well as inner and outer padding. As you can see in the Outlook example, not all email systems will recognize the inner and outer padding.

5) The color of green. In an odd quirk, the Notes client rendering confuses light green and dark green, so that both appear as dark green in emails. (I first reported this to IBM in 2007, fwiw.) This can lead to tables that don't look as they should, and occasionally to the perception of missing data as in this example. Real life scenarios: As two of the sixteen basic colors in Notes, both light and dark green are used more frequently than other colors. I have seen customer examples with the light green lettering on the dark green background which leads to this, which is why I added it to the demo. CoexLinks Fidelity solution: RGB colors are used to ensure consistency.

Mon 12 Jan 2009, 08:12 AM
A couple of people have asked about our new iFidelity for Lotus Notes rendering, and whether we were not, perhaps, just using the server's MIME conversion, which is known to not be as good as the client's MIME conversion (and, yes, for those who don't know, IBM has two inconsistent MIME conversion engines).  Different is not always the same as better, and in this case it is just astonishing how two different renderings can be equally poor:

(read on) for details and images

Tags:

Thu 16 Jul 2009, 01:35 PM
In this post, I talk about one of the strengths of Lotus Notes rich text that IBM has, very unwisely in my opinion, neglected when it comes to email: the image resource.  Image resources were added in R5 in 1999, and have been enhanced in a few different ways since then.  Unfortunately, one area that IBM neglected, as it so often does, is emailing that image resource.  It isn't difficult to include the image resources, but the technique seems to have escaped IBM in the past decade.

Email in Notes client with multiple image resources (taken from our Web Editors page)


Original email in Notes with image resources



Email received in Gmail after Notes 8.5 rendering (would you want your customer/client/colleague to see this?)


Email rendered by Notes 8.5



Email received in Gmail after iFidelity 3 rendering (more appropriate for customer/client/colleague to see)


Inline JPEG image

Previous Topics in this series

In Part 1, I showed how IBM's rendering of MIME messages could lead your customers to think you were still running Notes R5, and how our upcoming iFidelity (sign up for the beta) would allow you to send out more professional looking email, rendered as it is in Notes.  In Part 2, I showed how content rendered by Domino on the web was likely to make prospective customers think twice, or more, before buying Lotus Notes, and how CoexEdit could dramatically improve that default rendering.  In Part 3, I showed how rendering is made even worse when the rich text is edited on the web, and how CoexEdit can improve that process as well.  In Part 4, I showed how HTML signatures are prone to some of the same rendering issues (as well as different ones) as we have seen elsewhere.  In Part 5, I showed how tabbed tables do not translate well through email, and how iFidelity could help.   In Part 6, I showed how sections could lose titles after Notes client render, and how iFidelity could help there as well.    In Part 7, I showed how checked and unchecked lists rendered badly, and how iFidelity could help.     In Part 8, I showed how attachments were handled inconsistently, and how iFidelity could help. 

Tags:

Fri 2 Feb 2007, 12:20 PM
A while back, I posted Method of the Day: AppendHotspot and  Method of the Day: ReplaceText and considered turning it into a regular series like the Rich Text 101 series (see the right hand panel on my blog for that series), but time got away from me.  But a question in our Support forum from a Midas user made me realize that there is a method I use a lot that was not properly documented in our Help database, the AppendParagraph method.  

Like many methods in our Midas Rich Text LSX, the AppendParagraph method packs a lot of punch into a single method.  Not only can you add a paragraph, you can set the styles for the paragraph, set the initial font, color and styles for the text in the paragraph, and even add a hide-when formula while you are at it.  When I was building samples for my SpeedGeeking session on layers, I used this extensively, since it makes it ewasy to set up a paragraph to look and act the way you want in one concise call.  For example, setting up the animated progress bar, I used the following code snippet:

For=To 100
   Call rtchunk.AppendParagraph("", "Plain 10pt Black", "p!="+Cstr(i))
   If i > 10 Then
      Call rtchunk.AppendLayer("150px", "100px", "100px",Cstr((443*i)/100)+"px", 1, |LayerHTMLID='L'+Cstr(i) BackgroundImage='lssubbanner.jpg' BackgroundRepeat='once' Text='|+Cstr(i)+|%' TextFont='Arial Bold 18pt Blue' |, "Above='Single' Justify='Center' ")
   Else
      Call rtchunk.AppendLayer("150px", "100px", "100px",Cstr((443*i)/100)+"px", 1, |LayerHTMLID='L'+Cstr(i) BackgroundImage='lssubbanner.jpg' BackgroundRepeat='once' |, "")
   End If
Next   
Call doc.ReplaceItemValue("p", 0)
rtitem.Save


For each loop, I added a paragraph with a slightly different hide-when formula, then added a layer with content (and its own paragraph style).  Imagine how much harder this would be with the Notes rich text classes, even if they did allow you to create the layer.
Wed 17 May 2006, 07:56 PM
Entropy:  Inevitable and steady deterioration of a system or society.
   - Dictionary.com (5th definition)A good example of entropy touches on the issues I mentioned Sunday.  One of the on-line demos that we have had for years is Walden, which shows dynamic table manipulation using our Midas Rich Text LSX.  The demo used to work perfectly, but in some change to some other agent, I managed to break the Add functionality, so when you tried to add a new member to the fund-raising list, it failed to do anything.  It was actually making the change to the table, but not ever saving it.  I don't even know when the functionality broke, because nobody ever mentioned it, and our internal version works fine.  Since I mostly worry that a new version of Midas could break existing functionality, I didn't bother to test the web version directly beyond sorting the table.  It is only now, through a more consistent check on all existing demos, that I happened to notice this.  Who knows how many people have tried and given up, assuming the product couldn't handle the functionality.  That is the price you pay for a lack of vigilance.

Of course, if you happen to find something broken or wrong or unclear on our website, please do let us know.  Just drop a note to  and let us know.  In the meantime, I am really glad I started this process.  I'll let you know what else I find as I go along.

Tags:

Thu 11 Sep 2003, 11:59 AM
This is a follow up to my post a couple of days ago on Tabbed tables in HTML in which I talk about how our Midas Rich Text LSX renders tabbed tables in HTML with CSS and JavaScript, or will once our latest version comes out.

We are constantly working to find better ways to represent Notes rich text, especially as we are more and more likely to render a form along with the document.  Domino handles sections reasonably well if you have a live Domino server, but since each open or close of a section requires that the page be re-sent by Domino, this is not an adequate solution for customers moving data out of Notes to SQL Server, or to stand alone pages, or even to Domino websites where the form should not be re-submitted.  Therefore, we are working on ways to represent sections using CSS and JavaScript, with results such as that below.

So, the question is, would you want to use this approach, or do you have a better one?  Does it work in your browser?  Is this less compelling than the tabbed table approach, or better as it is simpler?  Let me know what you think... (read on to see demo)
Thu 27 Mar 2008, 08:58 AM
One of the most popular pages on this website has nothing to do with rich text, nothing to do with Notes/Exchange coexistence, and nothing to do with Genii Software itself.  This is the Domino Limits page, which lists many different limits, either documented or experimentally found, in Lotus Notes and Domino.  This is a living document, created from a post by Mike Woolsey of Solutions by Design in the Lotus Business Partner forum many years ago.  The living part means that people write in and let me know about new limits or modified information, and I try to keep the whole thing up to date.  Since this was first added to our site back in 2004, it has received thousands of hits every month.  I have pledged to keep the list as current as possible, and it also has the limits to the current supported versions of Lotus Notes/Domino (currently ND6.5/7/8), so you can add it as a resource link to your own website or list of useful links.  The full URL is DominoLimits and will remain that way for the foreseeable future.  Of course, times change and new Nores/Domino versions are released and old ones retired, so there are also two additional pages Domino Limits for R4 and Domino Limits for R5 and ND6.  When ND6.5 is eventually retired, it will likely be moved to the page with R5 and ND6, but I'll make that determination when the time comes.

It may seem that there are not frequent changes, and that is correct, as the limits don't change often, but we are always willing to update information as we find out that some is incorrect or not properly described.  If you have some new entries for us, or some revised information which might help your fellow Notes/Domino developers and administrators, please reply to the Domino Limits blog entry, or write to me at  and I'll be happy to verify what I can and add to or modify the list as appropriate.  Where possible, I indicate the source for the information, so let me know if there is a Help document or other source or if the information was derived by manual efforts.

Tags:

Thu 13 Nov 2003, 10:02 AM
Well, our @Midas Formulas beta has had its fits and starts, mostly because the feedback I have gotten, and the impression I have myself, is that the syntax is too difficult.  It is difficult to take a set of classes that were specifically designed for LotusScript and re-invent them for a different language with different expectations... (read on)
Thu 29 Apr 2004, 01:20 PM
The title is almost the same, but this post shows the same logic as the one before, but using @Midas Formulas 3.30 instead.  Compare the two and see what you think.

pathName := @Prompt([OkCancelEdit]; "Graphic Pathname""Enter the full pathname for the graphics file:");
fileName := @RightBack(pathName; "\\");
@DbCommand("Midas":"NoCache""CreateImageResource"; ""; fileName; pathName);

Sheesh!  It makes the 32 lines of the Midas Rich Text LSX version look long.  Granted, the live version has some error checking and stuff, but it almost makes you wonder why IBM can't come up with this stuff.  Anyway, I just wanted to let you know I was still here... still testing.  I should come up for air soon.
Thu 23 Feb 2006, 10:05 AM
As part of my presentation at the EntwicklerCamp 2006, I created a database that demonstrates how to integrate FCKeditor, a very powerful open source WYSIWYG web editor, with Domino, including the ability to import local images, attach files, and even create doclinks, all without the need for CoexEdit.  All for free (as in beer, which usually isn't).  Of course, because it doesn't use CoexEdit, this is a web only solution and has a few other implications I will get into, but it is still a fairly awesome and easy to use integration... (read on)

Technorati:

Tags:

Thu 29 Jan 2004, 08:54 AM
For those who attended my session, thank you!  You were a wonderful audience.  The links below should get you to the most specific tips, with some information on how to use them.  I will post the slides here soon, but an only slightly different set are on the Lotusphere on-line site.  There are a number of additional coexistence tips I am working on and will post over the next few weeks, so be sure to come back and check our weblog occasionally to see what I've added.  In the not too distant future, I also plan to add a page dedicated to Notes/Web Coexistence, to make it easier for you to find things such as the rich text editors, weblog articles from others, etc. that I have collected.

  1. Keywords that go somewhere
  2. Anchors aweigh
  3. Foolish inconsistency (doclink symbols on web)
  4. Text popups on the web

For those who noticed the "lost tip", #3, it was about getting thin Notes-like borders on the web, and it turns out to be somewhat inconsistent between browsers, even between IE5.5 and IE6, so I am making sure I have the full story before re-posting.
Wed 3 Oct 2007, 11:36 AM
Dude, where's my toolbar?

A new look...

(read on) to see...
Sun 12 Jun 2005, 08:54 PM
When I first started the Web Editors list, I did it mostly as a private resource (you may remember my first post about this: What is your favorite web based rich text editor?) to help me with testing what is now called CoexEdit.  One reader contributed a whole list of editors, which I incorporated in my list.  It later turned out that the list which had been contributed was actually created by Paul Browning.  I wrote to Dr. Browning to ask for permission to keep using the list, and he turned around and asked if I would take over maintenance of the list, since he no longer worked for the University of Bristol (where it was developed) and did not have time to keep it up.  I agreed, but it raises a question.

Since my semi-private web editors list has now morphed into a public resource, what should I do to make it more useful?  A lot of people come looking for these editors, but there is little in the way of a rating or other way to differentiate them.  I don't have time or breadth of systems to evaluate every one, but it seems like it would be good to be able to tell people a bit more about the strengths and weaknesses of each.  There is a feed back link on the page, but I am wondering if people think there should be a more specific link for each editors, perhaps with a rating and comments, so that it would be possible for readers to self-rate the way they do on Amazon or on hotel sites.  Would that be overkill, or valuable?  What do you think?  Are there other ideas you have about how to make the list more valuable.

Go check out the Web Editors list right now, even if you have been there before, and come back and let me know what you think.  Don't worry, I'll wait.
Fri 1 Feb 2008, 10:57 AM
The gnomes (see here) have asked me to share a teaser about Midas 4.0 support for regular expressions.  It is pretty cool, if I say so myself.  For example, there is a new RegexLink method which allows you to match a regular expression in rich text and turn the match into a URL.  Whether you wanted to recognize that Shirley.Temple@GoodShipLollipop.com was an e-mail address and turn it into a mailto link, or that F2B7C11522EB3F41852573E20048B158 was a UNID and turn it into a Notes URL or that a FedEx tracking number should be turned into a URL hotspot to check the status, or a product code should turn into a lookup for that product, or whatever you want.  Now, I know that IBM has introduced something a bit like this for Eclipse plug-ins, and I am sure it will be very cool for that use, but some people don't have Notes 8.0.1 yet, or don't want to write a plug-in, or want this to work from the web, or want more flexibility than the Eclipse plug-in method allows.  Even I am not sure all the uses the gnomes will find for this.  Syntax highlighting with the RegexHighlight method, perhaps.  Data mining using the RegexKeywords method, probably.  CamelCase recognition with a regular expression such as:

([A-Z]{1,1}[a-z]+){2,}

and so on and so on.

I see there is even a related IdeaJam wish....

Tags:

Tue 21 Nov 2006, 11:46 AM
The question has come up in the Blogosphere frequently about easier AJAX enablement (e.g., Andrew Tetlaw's Domino's Relevance and the Modern Web).  While we are waiting to see if IBM does something about this in Notes 8 (do you think it is likely?), is there anything that could be added to our Midas Rich Text LSX or another toolkit which would make this happen more automatically?  Since Midas works in R5/ND6/ND6.5/ND7, this would open the fucntionality up to more people, even if Notes/Domino 8 does offer similar features.

As a bit of background, Midas already can add JavaScript and a bit of smart logic to make tabbed tables work better and make sections work better (i.e., when I say "better", I mean without a round trip to the server, but instead just using hidden DIVs and such), so it would be within the realm of believable to have it generate JavaScript to handle an AJAX implementation of an input field or drop down box or something else of the sort.  Alternatively, it could work with something like Dojo to allow tricks like Rob's Big Sexy HTML Post to happen when a caption table was used in Notes.  If you don't know what a caption table is, see Rob's post.  That is exactly how a caption tabel works in Notes, but with no programming.  I bet they would be used in Notes more if they were as easy to translate to the web as that.

So, should Midas offer AJAX widgetry?  Should it offer Dojo integration?  Should it offer something else of this sort?  What do you think?

Caption tables ala Rob Novak
Wed 12 Dec 2007, 03:19 PM
The following are good ideas.  Many people agree, as you can see by the votes.  I even encourage you to head off to IdeaJam and vote for any of them.  But after that, you have a choice.  You can wait for IBM to add these to Notes 8.5 or 9 or 10 or whatever, or you could get our Midas Rich Text LSX and have them all this afternoon.









Tags:

Mon 2 Feb 2009, 08:43 AM
Part of my reason for having this blog is to share the real life experiences of running a small software company.  While there are wonderful advantages to being nimble and not having committees decide everything, there is the disadvantage at times of being your own QA department.  While Quality Assurance is critical, and something I take very seriously in shipping products, I sometimes slip up and forget to properly focus on Quality Assurance in beta versions.

So, on Friday, after a great deal of testing of the first beta of our  iFidelity for Lotus Notes  product, I should have known not to make that one last tweak.  The tweak made stress testing easier, and seemed like a perfectly safe and sensible, though minor, performance enhancement, but due to misplaced parentheses (I know how some sad person at Google feels right now), messages were getting converted to MIME that shouldn't have been, then getting converted back to rich text using the native MIME to CD conversion.  The result was ugly messages, the exact opposite of what was intended.  While it was a reminder that if the Notes inbound conversion were not so bad, this would not have been such a problem, that is cold comfort.  I still broke a cardinal rule to not make changes right before sending out a version, beta or not.

So, mea culpa, mea culpa.  Just don't tell Paul.

Tags:

Fri 16 Aug 2019, 09:50 AM
Fifteen years ago, I started a campaign to convince IBM to at least fix the very easiest of rendering issues, the point size of text. I wrote about it on forums and brought it up with IBMers, but nobody seemed to care. It was part of my motivation for writing CoexEdit, which is now AppsFidelity. A memorable post from early 2005 is Selling a 9 year old on CoexEdit, and when CoexEdit was a Beacon Award finalist in January 2006, I thought maybe the point had been made.
 
Well, not quite. Not only was the point problem not fixed in version 9.0.1 or its many fixpacks, but it remained inconsistent. A couple examples. Pay attention to where the small sizes change.
 
Notes/Domino 9.0.1 MIME rendering (sending as email whether rendered by client or server)
Inline GIF image
 
Domino 9.0.1 HTTP rendering (viewing on web page)
Inline GIF image
 
There are other renderings as well, such as when the form saves the rich text field as MIME, when Domino Access Services renders the document to MIME. Sometime 9pt is <font size=1> and sometimes it is <font size=2>. While 10pt and 11pt appear about the same in all, sometimes the size is explicit, as in this from the rich text saved as MIME:
 
<font size=1 face="Times New Roman">Text in 6 pt</font>
<br><font size=1 face="Times New Roman">Text in 7 pt</font>
<br><font size=1 face="Times New Roman">Text in 8 pt</font>
<br><font size=1 face="Times New Roman">Text in 9 pt</font>
<br><font size=2 face="Times New Roman">Text in 10 pt</font>
<br><font size=2 face="Times New Roman">Text in 11 pt</font>
<br><font size=3 face="Times New Roman">Text in 12 pt</font>
<br><font size=3 face="Times New Roman">Text in 13 pt</font>
<br><font size=4 face="Times New Roman">Text in 14 pt</font>
<br><font size=4 face="Times New Roman">Text in 15 pt</font>
<br><font size=4 face="Times New Roman">Text in 16 pt</font>
<br><font size=4 face="Times New Roman">Text in 17 pt</font>
<br><font size=5 face="Times New Roman">Text in 18 pt</font>
<br><font size=5 face="Times New Roman">Text in 19 pt</font>
<br><font size=5 face="Times New Roman">Text in 20 pt</font>
 
and other times it is implicit such as this from the Domino HTTP:
 
<font size="1" face="Times New Roman">Text in 6 pt</font><br>
<font size="1" face="Times New Roman">Text in 7 pt</font><br>
<font size="2" face="Times New Roman">Text in 8 pt</font><br>
<font size="2" face="Times New Roman">Text in 9 pt</font><br>
<font face="Times New Roman">Text in 10 pt</font><br>
<font face="Times New Roman">Text in 11 pt</font><br>
<font size="4" face="Times New Roman">Text in 12 pt</font><br>
<font size="4" face="Times New Roman">Text in 13 pt</font><br>
<font size="5" face="Times New Roman">Text in 14 pt</font><br>
<font size="5" face="Times New Roman">Text in 15 pt</font><br>
<font size="5" face="Times New Roman">Text in 16 pt</font><br>
<font size="5" face="Times New Roman">Text in 17 pt</font><br>
<font size="6" face="Times New Roman">Text in 18 pt</font><br>
<font size="6" face="Times New Roman">Text in 19 pt</font><br>
<font size="6" face="Times New Roman">Text in 20 pt</font><br>
 
While that seems an innocent difference, remember that CSS will override a missing size differently than an explicit size, so you can have a magnified text page where the 10pt and 11pt are larger than the 14pt, 15pt, 16pt, and 17pt.
 
All of these issues ignore the extremely easy to implement CSS style that will use point sizes, as our products have done since late 2004.
 
But while IBM did not pay attention, HCL is aware of the issue and making some progress. If you look at the Notes client MIME rendering (email sent when location document specifies sending MIME), you will see:
 
Notes 10.0.1 MIME rendering (sending as email rendered by client)
Inline GIF image
 
Finally, CSS styling to get exact point sizes! This is implemented as well in places where the form saves the rich text field as MIME. It is not fixed when the Domino server renders the MIME, as in:
 
Domino 10.0.1 MIME rendering (sending as email rendered by server)
Inline GIF image
 
It is also not fixed in Domino 10.0.1 HTTP or Domino Access Services:
 
Domino 10.0.1 HTTP rendering (viewing on web page)
Inline GIF image
 
But HCL gets that this is an issue. They mentioned fixing rich text as a major bullet item in their AppDev roadmap at the Factory Tour, and this is one of many fixes necessary and (as far as I can tell) planned.
 
The point is consistency, accuracy, and fidelity. HCL gets it. Hopefully, soon we will all get there.
 

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
 

Tags:

Fri 23 Aug 2013, 12:59 PM
This is the seventh in my series, Out Of Notes (see Part 1 - The ChallengePart 2 - Capsule ViewsPart 3 - ePublish from XPages,  Part 4 - Linked Collections,  Part 5 - To SharePoint and Part 6 - By a Thread), which shows how the Midas Rich Text LSX can be used to create collections of documents for export. In this mini-lesson, I show how documents from multiple databases can be included, and thus can be ePublished or exported as capsule views in a single snapshot handy for sending to a custom, salesperson in the field or whatever, This is accomplished easily with Midas V5. More information and the script used are at http://mini-lessons.info/Midas14 
 
Note: Accurate closed captions will be provided shortly, and if English is not your first language, you might want to turn on the auto-translate. I also advise turning on HD and watching full screen so the captions show under the video.
 
Fri 9 Aug 2013, 02:27 PM
This is the sixth in my series, Out Of Notes (see Part 1 - The ChallengePart 2 - Capsule ViewsPart 3 - ePublish from XPages,  Part 4 - Linked Collections, and  Part 5 - To SharePoint), which shows how the Midas Rich Text LSX can be used to export or publish a single thread or an entire view, maintaining the response hierarchy from Notes and including an optional thread map for each document.as a mini-navigation tool. In a very short video, I demonstrate how easy this can be with Midas V5. More information and the script used are at http://mini-lessons.info/Midas13 
 
Note: Accurate closed captions will be provided shortly, and if English is not your first language, you might want to turn on the auto-translate. I also advise turning on HD and watching full screen so the captions show under the video.
 
Wed 10 Jan 2007, 04:02 PM
So, far the public schedule (as opposed to private items such as having a milkshake with Bruce and Gayle and that sort of thing), is as follows:

Saturday
  • 3pm: Blogger Party, Big River Grille
  • 7pm-11pm: Penumbra Dinner, Fulton's Crab House


Sunday
  • 5:00pm - 7:00pm: Beta Meet & Greet, Dolphin Oceanic 6
  • 6:30pm - 9:00pm: Opening Reception, Poolside
  • 8:00pm - ?:??am: Wild Bill's Birthday Bash, ESPN Bar


Monday
  • 12:30pm-1:pm: Lotusphere Q&A for bloggers, Dolphin Americas Seminar Room
  • 6:15pm - 6:45pm - TEK Check, Dolphin South Hemisphere II
  • 8:30pm-???: Penumbra HOBnob, House of Blues


Tuesday

Wednesday
  • 12 - 1:15 pm: IBM Move2Lotus Round Table, Hampton Room at the Yacht and Beach Club Hotel
  • 5:45pm - 7:00pm: Speedgeeking: Geeks have Layers, too (don't miss this, either), Yacht & Beach Grand Harbor South
  • 7:30pm - 10:30pm: Lotusphere Party, Animal Kingdom


Thursday
  • 11:15am - 12:15pm GURUpalooza (don't ask any tough rich text questions - I'll have no voice left)


That is without any sessions other than my own.  I guess if you want to meet, you'd better contact me quickly.  Also, if you see something critical I'm missing, mention it.

Tags:

Sun 14 May 2006, 10:59 PM
If there is one lesson you have to learn over and over and over again as an independent software vendor, it is that you shouldn't get too fancy.  Focus on fundamentals, make sure the business needs of customers are met first, and only after that can you afford to add glitz and polish and whiz bang.  As president of Genii Software, I seem to remember this when it comes to my core business, software, and forget it again and again when it comes to peripheral, but crucial, issues such as documentation and samples and that sort of thing.  That is why we get into situations where the Midas Rich Text LSX has never been more stable, functional and complete, but the help database has fallen into some disarray due in part to an effort to add some AJAX whiz bang that probably wasn't as necessary as it seemed when I started.  Similarly, while we have some great Midas example databases, they have suffered some from neglect, and others are just showing their age, partly due to work on other samples that have not been released due to overreaching on my part.

So, it is my job to get this all pulled together.  I have brought in some help to work on the content of the various Help databases, and am pushing on the contractor who has gone too far afield with the design of the Help database to finish up and just get the darn thing working properly again.  Over the next few months, I plan to institute some measures to ensure that the samples are spruced up appropriately and don't get stale again.  A somewhat similar effort is under way with CoexEdit, where the integration databases are in good shape, but are not quite as simple to transfer to a separate database as they should be.  The Help database for CoexEdit has not been completed at all yet, since the main documentation is in the downloadable Word document, but I intend to make sure the Help database for CoexEdit is finished, as there is an opportunity to make it a more valuable contribution to CoexEdit customers.  CoexLinks is in the best shape, partly because Granite Software has done an excellent job providing support and ensuring that issues were reported on a timely basis and integrated into the documentation.  That situation is evolving as well, but I'll hold off on that for a bit longer.

Anyway, I just wanted to let you all know I am aware of the holes and am working on filling them.  To some extent, it is the very success of the business which leads to this, as we are so busy working with customers that we occasionally forget to focus on the necessary, but often less visible (to us) components.  While I am glad for all the new customers, I am very aware that letting such things slide could become a habit, and that is not a habit I want at all.  So, thanks for all your patience, and watch for good things to come.
Tue 19 Jan 2021, 09:23 PM
Inline JPEG image
 
At first glance, it may seem like REST APIs are inherently simple. You retrieve the data from a record or collection of records, and then you do your stuff. If you need to create, update records, or delete records, you can do that as well. But when you are building a proper application, there are many other things to consider. Two key factors are:
 
1) How much data do you need from any given record, and which records do you need it from? If there is related data in another record, can you get it without pulling in loads of stuff you don't need? 
 
2) What format should the data be in? How should it be structured or grouped for maximum usability? While you can certainly write code in your application to reformat or restructure, that adds complexity and room for error on your client.
 
Using the Curb Appeal database I showed in Getting data from Domino with Exciton Boost (and companion post with code samples,Data from Domino: nuts and bolts of REST calls), let's look at a few of the "fancy tricks", also known as "useful features" of Exciton Boost 4.6.1 (released today). With Exciton Boost, you can specify exactly which information you need. In the code sample post above, I use the following call:
 
GET /CurbAppeal.nsf/api/boost/documents/524C08BF648BE77A85257B8600798F5B?metadata=false HTTP/1.1
X-Items-List: StreetAddress+", "+City+", "+State=Address,Bdrms,Full=Bathrooms,Half=Half-Baths,Photo[Graphic 1]
 
The resulting JSON is shown below.  Note that we used formula language for the address, but I've shown that before.
Inline JPEG image
 
Fancy trick 1: - Grouping stuff together
If you look up at the original screen capture, you can see that the bathrooms are grouped together. That is because people logically expect full bathrooms and half bathrooms to go together. So, how can we make our JSON, and thus our eventual JavaScript object, reflect this natural grouping? Pretty simple, really. I just change the X-Items-List header to the following (changes shown in Blue).
 
X-Items-List: StreetAddress+", "+City+", "+State=Address,Bdrms,Full=Bathrooms/Full,Half=Bathrooms/Half,Photo[Graphic 1]
 
If successive items are defined with that =group/alias syntax, the result will be grouped in an object named for the group. Now, we get this JSON, and can act on the whole Bathrooms object in our app.
Inline JPEG image
 
Fancy trick 2: - Using rich text as a data source rather than rendering
If you look up at JSON right above the Fancy trick 1 headline, you can see that it is HTML encapsulated in JSON. That is handy if you want to display it, but not if you want to use it as a data object. You could by parsing the HTML, but you shouldn't have to. A similar example is in the columns of bullet points you can see in the top graphic under the title Features. What if you want those bullet points as separate data strings rather than HTML? Exciton Boost makes it easy to define the data structure you want rather forcing you to parse and interpret.
 
We change the reference from Photo[Graphic 1] to Photo[Graphic *] to mean all graphics in the rich text field named Photo. Then, we add in a series of chunk properties related to a graphic, ;$GraphicOffset;$GraphicFormat;%GraphicHeightPX;%GraphicWidthPX. These will all be grouped together. Finally, we add the {A} which makes this an array of objects, one per graphic. If there were no graphics, it would be an empty array.
 
X-Items-List: StreetAddress+", "+City+", "+State=Address,Bdrms,Full=Bathrooms/Full,Half=Bathrooms/Half,Photo[Graphic *;$GraphicOffset;$GraphicFormat;%GraphicHeightPX;%GraphicWidthPX]{A}
 
Since there is only one graphic in this rich text field, the result looks like this:
 
Inline JPEG image
 
We can iterate through the array to get to the objects and their values, but if we don't want to do that, we could simply change the {A} to {O}, and we would get an object with named sub-objects:
 
X-Items-List: StreetAddress+", "+City+", "+State=Address,Bdrms,Full=Bathrooms/Full,Half=Bathrooms/Half,Photo[Graphic *;$GraphicOffset;$GraphicFormat;%GraphicHeightPX;%GraphicWidthPX]{O}
 
Inline JPEG image
 
Now, we could use JSON.parse to get the JavaScript object and refer to Photo.Graphic_1.GraphicHeightPX to get the value 251. As a note, capitalization follows the item definitions, so if you prefer camel case, just make it:
 
X-Items-List: StreetAddress+", "+City+", "+State=address,bdrms,Full=bathrooms/full,Half=bathrooms/half,photo[graphic *;$graphicOffset;$graphicFormat;%graphicHeightPX;%graphicWidthPX]{O}
 
Inline JPEG image
 
Finally, it is worth noting that if only a single property is specified, we don't need objects. If we wanted to get all the bullet items under that Features column. we could use:
 
X-Items-List: StreetAddress+", "+City+", "+State=address,bdrms,Full=bathrooms/full,Half=bathrooms/half,col1[BulletList *;$UnformattedText]{A}=bullets
 
Inline JPEG image
 
=> Request a free Exciton Boost eval in January, and if you later purchase a license. we'll add in four hours of development assistance, a $700 value. <=
 
I will have a couple more Fancy Tricks tomorrow.
 

Tags:

Mon 19 Apr 2004, 01:49 PM
I have been developing software for a number of years (OK, a rather large number of years), but it is rare in recent years to have a chance to go into "emergency" mode.  Every once in a while, a Midas customer will call, desparate because a server won't start up or an application won't run, but most of the time they have simply forgotten to replace the evaluation license with the production license, or have changed organization names and the license won't work.  More rarely, a bug is discovered and I work feverishly to get them back into production.  Mind you, it is not that rare to have a bug.  It is just rarely a mission critical - it has to work right now or else - situation.
 
So, it was with rather a mixture of pleasure and trepidation that I got a call from a new CoexLinks evaluator saying "It's an emergency!"  After all, we just released a new version, which is always a bit nerve racking.
 
I don't know the whole story yet, but it seems they moved (due to a merger) a number of users to Exchange/Outlook, and all their workflow applications ground to a halt.  It can get pretty uncomfortable pretty quickly when nothing can get approved, so this gentleman called me at 6:30am (a more civilized 1:30pm where he was) and asked for help - in a hurry.  Turned out to be a couple of minor things, most having to do with users using MIME to send e-mails instead of rich text, and everything worked out within a couple of hours, but the adrenaline rush was fun.  Shame I couldn't be there to actually work on it in person, but it is nice to know that CoexLinks was there and ready to do the trick when somebody really needed it.
 
I know, it isn't like being a doctor, but it still feels good.
Wed 7 Mar 2007, 09:11 AM
I was invited to join the OASIS Technical Committee for OpenDocument Format a couple of days ago, and I wrestled a bit before deciding to join.  While I am very favorably inclined towards OpenDocument Format (ODF) over Office Open XML (OOXML), I don't like aligning myself too strongly on one side or the other, as it is quite likely that our OpenSesame products will support both.  There is also an uncomfortable level of antagonism between the camps, which seems unnecessary.  Religious wars may be entertaining, but they are seldom productive.
 
On the other hand, I am worried that the promise of ODF as an open standard will not be adequately realized if the development of the standard is too strongly influenced either by the free open source crowd or by the anti-Microsoft crowd.  I am not a free open source software zealot, as you may have noticed by the fact that Genii Software's offerings are neither free not open source.  I am not part of the anti-Microsoft crowd, as you might have noticed by the fact that many of our largest customers are "Microsoft shops" who use CoexLinks or CoexEdit to coexist with Domino servers in their own or other partner's and customer's companies.
 
So, I have joined the ODF T.C. in part to see if I can help improve interoperability with OOXML, and better round trip fidelity between ODF and other formats, including OOXML, Word binary formats, and last but certainly not least, Notes rich text formats.  I see a lot of potential in ODF, but I see a need to work to improve parts of it and to steer it a bit.  I hope I can help in that effort.
 
As for OOXML, I am also interested in joining Ecma so that I could help on that effort, possibly even help to rationalize OOXML with ODF in some way, although that may be impossible.  Unfortunately, Ecma is pretty expensive to join, and it is hard to justify if they do not really have a free hand in the development of OOXML.  I think Microsoft has made a huge strategic error in not embracing ODF earlier, and I am afraid they are likely to compound that error by continuing the fight for OOXML in its current state, no matter what happens with ISO.  I'd like to help them avoid that mistake, but Microsoft is a pretty big company to try to influence.
Sun 6 Nov 2005, 04:18 PM
When you walk up to my house, there is a front door, but hardly anybody uses it.  Instead, everybody who knows us walks a bit further up the driveway to get to the side door, which is our REAL front door.  I was thinking about it today, and the Genii Software website is like this as well.  There is a home page, but it is hardly the most visited, or even the first visited.  Looking at statistics for the year 2005 so far, there are about six times as many hits on the blog as there on the Genii Software home page.  Likewise, there are about three times as many hits on the Midas Rich Text LSX page as on the home page, and close to that many on the CoexLinks page.  The CoexEdit page is coming up fast, with more hits than the Midas page in the past six weeks.  And that isn't even including the Domino Limits page, which gets close to the number of hits CoexLinks does, and the unbelievable Web Editors page, which actually gets more hits than any other single page.  I tend to discount those two because while they get lots of hits, they don't generate much traffic to the rest of the site.

The question is, how should this effect matters?  One possibility is that the press releases should show up elsewhere, since nobody sees them who comes in the side door.  What else might be missed by people slipping in directly to the Midas page, for example?  How will they ever hear about CoexEdit, which might be just what they need?  This needs some pondering.

How about your website?  Where is your real front door?  Are you missing anything by letting people in through the side door?
Wed 14 Aug 2019, 10:15 AM
This is the second in an occasional series on what you can do right now with Notes/Domino, and some ways our products can help. As before, the top half is general and non-commercial, while the bottom half is where I mention how our products enhance the situation, so you can skip that if you want.
 
A number of enhancements that were made in the earlier days of Notes popularity had to do with saving space. As laptops were coming into vogue, and as companies were packing more and more functionality into an application, they wanted ways to conserve space. These features include tabbed tables, collapsible sections and more. Now, with HCL introducing those Notes apps including the rich text features to mobile devices, the space saving features take on a new importance. Real estate is at a premium even on a larger iPad, and once you are talking phones, anything you can do to use your space more wisely is worth it.
 
With that in mind, let me remind you of a demo I first did at Lotusphere in 2003 on Progressive Disclosure. (I must admit, I didn't know anybody was paying attention, but last year a customer showed me an application where they use this technique for hints on training material.) This is a no code (absolutely none) approach to providing extended information on successive clicks.
 
Inline GIF image
 
The trick is to use a "programmatic" table which shows one line at a time and advances when it is clicked. See below for the document in edit mode. Each of the bullet items has two or three rows. It is important that the early part is duplicated, but you could add images or links or anything as you go on.
 
Inline JPEG image
 
In case that still isn't clear enough, I turned the cell borders on for that first table and showed the properties where you set the AdvanceOnClick.
 
Inline JPEG image
 
There are a lot of ways to use this technique, such as having information in three or four languages and letting people switch through. Anybody can create one without designer or anything else, just a bit of patience and effort and creativity. No code is involved, so nothing needs to be signed and ACLs don't come into play. and yes, it will work on all those mobile device that support Nomad or whatever it is called these days. Anybody can use it in read mode.
 
Of course, there's always a gotcha.
 
*** NOTE: This is where the Genii Software stuff comes in, so if you just want the ideas above, you can stop reading now.
 
While it is great that this works on mobile devices using Notes code, that doesn't help the rest of the world when it comes to a normal web browser. Sadly, this logic doesn't transfer through if you use Domino HTPP. Worse, it doesn't even flatten out the table so you can see all the rows, it just shows the first. But that is where our Midas engine helps.
 
Inline GIF image
 
 
The Midas engine that supports this works in the Midas LSX, the Midas C++ API, AppsFidelity, as well as CoexLinks Migrate and AppsFidelity Migrate. So you can have your fancy no code solution and take it on the road as well.

Tags:

Wed 14 Nov 2018, 09:41 PM
When I say I still write LotusScript, I should include a disclaimer that my scripts tend to be under 30 lines long. Here's one that generates JSON for the documents in a specific view using MongoDB format and spits it out to the browser. All of nineteen lines long if you count the Dims and such. Before somebody says it, I know you can generate JSON with a special Domino URL, but you'd have zero control over the output, whereas I can change that one parameter to 'Saleforce' and get  a different set of JSON or to 'Domino' and get yet another. Or I can pick just a few items to include. Or include formulas or db lookups. Or change that to a GenerateCSV call and get a CSV stream. On top of that, any rich text which gets converted is high fidelity and intact, unlike the stuff generated by the Domino server natively. But otherwise, I'll acknowledge that it's pretty much the same thing as Domino Access Services if you'll acknowledge that the New England Patriots are playing pretty much the same game as the Cleveland Browns.

Anyway, short agents don't have to be short on functionality if you have Tom Brady the Midas LSX on your team.

(My apologies if you are not a U.S. sports fan and don't understand the analogy. I'm sure some of the Boston-based IBMers and HCLers could interpret for you.)

Inline JPEG image


Tags:

Thu 15 Mar 2018, 10:40 AM
Yesterday, I showed how CoexLinks Fidelity handles symbolic fonts such as Wingdings and Symbol that are not properly displayed on the web. It was fun because it celebrated Pi Day, but I wanted to go back to a more common scenario you all may have seen, namely symbolic bullet items from Word . It only took me a few minutes to find this example from IBM's databases. This time I'll show how AppsFidelity differs from the standard web rendering. You'll notice more than the symbols, I suspect.

1) Original in Notes 9.0.1 rich text 

Inline JPEG image

2) Rendered by Notes 9.0.1 web engine

Inline JPEG image

3) Rendered by AppsFidelity 4.2

Inline JPEG image

4) Why not evaluate AppsFidelity for yourself?

If you would like to try AppsFidelity, just request an evaluation license, or contact us to set up an online demo and meeting.

Wed 12 Jul 2006, 06:37 PM
This post was inspired by a comment/question from Paul Ryan (#477.7) regarding an earlier post.  Paul says:
That said, honestly, I didn't find this topic particularly interesting, except to note that ODF consists entirely of XML, something that I hadn't quite registered before. Therefore, and as your example clearly demonstrates, ODF files are going to be very fat compared with proprietary formats like Notes rich-text or Microsoft formats.

Digressive musing...what XML really needs is a widely-used, maybe even compulsory, compression component to combat the bloat problem. Maybe there is something like that out there, and I'm just not aware of it.As a lawyer might say, Paul, asked and answered.  Yes, XML is fairly heavy, and the way ODF is implemented is even heavier than it would need to be, although still not as heavy as Office Open XML (OOXML) seems to be.

So, the obvious answer is to compress the whole thing, which is just what both ODF and Office Open XML do, and even in almost exactly the same way.  When you see an ODF file such as ThisDoc.odt, you are really seeing a zipped repositiory with several files inside it.  Technically, it is even more specific than a zip file, it is a "JAR file", which is to say exactly the same format as a Java Archive package.  There are usually several files and subdirecties in such a package, although the only required files are the META-INF\manifest.xml and the content.xml file which descrbe the contents of the JAR file and the content of the document, respectively.

But is it any good knowing this?  Sure, it makes clear why ODF files are not as humungous as they might otherwise be, since the zip compression is fairly good at compressing, but what else is it good for?

Well, for one thing, it is good for extracting images.  Unlike a Word .doc file or Notes rich text field, if you want all the images included in an ODF file, you can simply rename the .odt to .zip and unzip the graphics files.  You can also alter the content.xml file by hand or with some other utility and re-zip it, so long as there is not encryption set up on the JAR file.  This is like fiddling with DXL, except it is more reasonably structured.

So, for what it is worth, there you have it.

Tags:

Fri 9 Jan 2009, 01:41 PM
The iNotes interface for Domino 8.5 has been spiffed up in numerous ways.  It is fast, fun and functional.  The Dojo editor has been integrated in, so that there is finally a real web editor across multiple platforms.  I can almost guarantee that your users will love it.

Almost.

(read on)

Tags:

Wed 8 Jul 2009, 07:15 PM
I continue with this series of posts (actually, just collecting the samples for the presentation I am preparing) with an example in Notes 6.5, but as before, this same rendering has been an issue since R5 and is still an issue in Notes 8.5.  Mostly, I want to make it clear that iFidelity 3.0 is useful and effective even if your Notes client is at the early end of the supported spectrum.  In fact, if you are hesitating to upgrade, iFidelity may be a way to improve your system at a low cost and with little impact (no retraining, no admin overhead, no developer resources).

In any case, this sample is another that shows lists, but not nested lists this time.  Instead, these are checked lists, which are a useful Notes rich text feature for supporting checklists (welcome, Obviousman!).


Original email as sent from Lotus Notes 6.5.3 client

Original email sent from Notes 6.5 client


Email as received in Outlook after being rendered to MIME by the Notes 6.5.3 client

Received by Outlook after Notes 6.5.3 client rendering


Email as received in Outlook after being rendered to MIME by iFidelity

Received by Outlook after iFidelity rendering

Tags:

Mon 11 Oct 2004, 08:27 PM
It may be a little strange for those who have watched CoexLinks grow through the posts on this website but don't hear as much anymore.  The second post I made in this weblog back in May of 2003 was entitled COEX! Links a better idea than I thought , in which I confessed that I hadn't been a believer at first, but was becoming one... (read on)
Tue 27 Sep 2005, 10:36 AM
It appears that, as in so many areas, we do not exactly follow the standard path with our maintenance agreement for CoexLinks and CoexEdit.  (There is no maintenance agreement currently available for our Midas Rich Text products) I thought it would be worth noting a few important points about how our agreement works... (read on)
Wed 17 Jan 2007, 10:02 AM
Just a word to the wise.  If you are counting on getting into the SpeedGeeking event at Lotusphere, don't be late.  IBM is not convinced that many people will want to attend, but I think they might be surprised.  The details (straight from the Lotusphere 2007 Sessions db) are below.  Note the last line!


FUN102 Speedgeeking at Lotusphere (web link)
Speaker: Assorted Speakers
SW Grand Harbor South - Wednesday  5:45pm - 7:00pm
Created using the
Midas Rich Text LSX
and
CoexEdit

Here’s a brand-new completely condensed, immersive and rowdy approach to hearing from some of the best and brightest that Lotusphere’s YellowSpace 2007 has to offer, and learn about the tips, techniques (and sometimes crazy) ideas that they have been working on. Migrate as a group around the room from one 5-minute demo to the next, while stopwatches,  buzzers and loud-mouthed emcee’s keep things fast-faced and on track! The result is ‘managed mayhem’ and a good amount of fun.

Held at one time only. Don’t be late! Attendance is on a first-come, first-served basis.
Fri 2 Apr 2004, 12:00 PM
A couple of weeks back, Jeff Sandquist wrote on his blog about his Seven Day Rule for evaluating new software.  This is a topic of great interest to me as a product vendor.  Our evaluation cycle for both our Midas Rich Text LSX and CoexLinks is between thirty and forty five days, depending on when the request is received, but our experience with people buying the two products is very different.  Obviously, we have a heck of a lot more experience with the Midas cycle, as we have been selling it for much longer.  Many people who buy Midas do so at the end of the evaluation, no matter how long the evaluation is.  The exception to this is people who buy it for generating HTML e-mails or generating HTML in general, who tend to prove it works and buy it, usually within the first week.

CoexLinks is different.  People usually decide whether it works for them in the first day or so.  They may take longer to buy it, but usually just because they have to get authorization.  The decision is made in the first seven hours, rather than the first seven days.

So, what makes the difference?  Why do people wait so long to decide on Midas, and take so little time with CoexLinks?  I think the key is instant value.  Midas has a great deal of power, but it is unrealized power unless there is a sample that already does what you want, like our Send It! sample, which has been the source of the most "instant" Midas sales.  Otherwise, you need to build an application around it.  People mostly buy because they build the application and lose focus on the product which makes the application work - until the eval license expires and they remember and buy.  CoexLinks has a lot of power too, but it takes about ten minutes to install and prove it, so the decision is almost entirely financial.  "Can I afford this product?"  Usually, seven hours is long enough to decide that the company can't afford NOT to buy it, since the cost of modifying functionality in various applications is so much greater.

Now, what should I, as grand poobah of product direction for Genii, do about this?  Accept that Midas is a slower sell, or turn out more Coex products (yup, they are coming, which is one hint as to my decision), or write more Send It! samples that make instant Midas sales more likely (that sounds good too).  

What would you do if you were grand poobah of Genii? (Sure, do my work for me)
Tue 20 Jan 2004, 09:23 AM
Well, the trend is picking up.  First, Volker has added Google ads, and now Rocky has followed suit.  While everybody has to make their own decisions on how to make a buck, I pledge to keep this site commercial free [except of course for the commercials for the truly amazing and powerful Midas Rich Text LSX, and our astounding COEX! Links, and any other products we sell that are guaranteed to change your life].

Seriously, while I do understand that everybody has a right to their own way of handling their site, I also do have trouble with the insidious pervasiveness of advertising.  It is hard to turn around without seeing another way that advertising has managed to insert itself into our lives.  It used to be that public TV really didn't have ads, but now they have them as well, even if they are somewhat more classy and subtle.  The web is obviously filled with advertisements, but I am always turned off when I go to a site for a company and find ads for other products, etc.  Maybe others are simply more inured to the whole issue, since I watch very little television and avoid most radio stations to avoid the incessant advertising.  Thus far, books have mostly been immune, so I read a lot.  

Of course, aside from my personal dislike for ads, there is the additional issue of negative advertising.  If I am a potential client, might I assume that somebody who needs to put advertising on their site to pay for it must be pretty small potatoes in the business world.  It is not exactly expensive to run a website, and if a consultant can't pay for that without advertising, how good can they be?.  This may well not be accurate, as I know Rocky does quite well, for example, but that is an impression I could get as a client.  I would think that the positive advertising of selling LotusGeek t-shirts and Duffbert and Joe Litton's TeamTSG line of apparel (other than the thong) would be far more positive ways to generate income and good will than filling one's site with ads for other companies.  But what do I know?
Tue 3 Feb 2004, 10:11 PM
As described in Focus - Building a smarter website, here is the snapshot of focus material for doclinks, link hotspots, etc.  See the latest version by going to the Midas page focusing on doclinks... (read on)
Wed 10 Nov 2004, 10:39 PM
It is awe inspiring and sobering to get even a glimpse of the visitors to the Genii Software website and Genii weblog every day.  Just looking at the stats for yesterday, we had visitors from over  25 countries... (read on)
Thu 8 Sep 2005, 06:54 AM
Make Rich Text Your Business logo with SupermanWhen I posted Method of the Day: AppendHotspot, people responded with surprise that one method could be good for so much.  I thought that it would be good to show another mild mannered method which becomes a supermethod when you fully understand it, the ReplaceText method.  (Photo credit to John Head, who is a gaming fanatic and thought I should make this into a t-shirt or something)

It may be hard to imagine just what the ReplaceText  method might do besides replace text, but that is why I am writing this.  To follow the format from the last post, here are recent questions for which the answer is the ReplaceText method... (read on)



Tue 31 Jan 2006, 11:51 AM
Rich Text 101 logo
I have long considered doing an article on layers, but it is a pretty tricky subject, and I was afraid I could not do it justice.  After working with layers again for the Lotusphere 2006 Sessions database, I decided that while I may not know everything there is to know about layers, there are a lot of people who know much less.  Thus, I'll at least start the topic and see if anybody else has additions and modifications they would like to see.  If I find out more information, I'll be sure to modify this article... (read on)

Tags:

Tue 3 Oct 2006, 12:49 AM
CoexLinks 2.7 logo

I hesitate to do this, but it has been frequently requested.  The following is a side by side comparison of some of what the Midas Rich Text LSX 3.61 supports versus what the Notes 7.x rich text classes support, just in the area of table manipulation.  Please note that more could be done by exporting to DXL, modifying and re-importing, but that is not much better than saying more could be done by using the C API.  Of course it could, but it doesn't help most people.  Anyway, here goes, and I think you'll see why I hesitate... it feels like kicking someone when they are down.  If anything, I tried to minimize the features that could be construed as table features to keep the list reasonable.

(read on)

Tags:

Thu 3 Jun 2004, 11:44 PM
As usual, I am foolishly, and probably incompetently, trying to create my own logos and graphics for COEX! Links and possibly other COEX products.  Thus far:
      

HELP!... (read on)
Thu 17 Jan 2008, 10:15 AM
Maybe this shouldn't be so exciting, but I don't think I've had a session taped since the days they taped all of them.  My session appears to be one of six BP track sessions included (see full list.  Well, if you buy the tape, watch carefully for my special outside the box/inside the box presentation trick, as it is pretty cool.  Or you could just see it live...

(read on) to see details
Sat 5 Jul 2003, 02:02 PM
Rich Text 101 logo
Doclinks are an integral part Lotus Notes/Domino, and have been for a long time (OK, I started back in R3 days, and they were used then, but I don't know when they were added), but they still seem a bit mysterious to some developers.  I thought I'd kick off this occasional series on rich text topics by explaining a few of the mysteries.  I'll try to keep this at a comprehensible level, but no promises...

Tags:

Thu 1 Feb 2018, 02:23 PM
Day before yesterday, Rich Schwartz let me know about a question raised on StackOverflow having to do with XPages, rich text and missing doclinks. It appears that when Domino converts a document with a large number of doclinks, it stops including them after some indeterminate number. By the time I visited the question, Stephan Wissel had already responded and mentioned AppsFidelity. (I love it when that happens! Thanks, Stephan!) I have included the question at the bottom of the post because things disappear over ime, and this blog has been around for so many years I've learned to save things.
 
Of course, then I had to hurry over and test huge bunches of doclinks, because what if AppsFidelity didn't help? Fortunately, it handles them fine, so I made a video showing the problem (missing doclinks with native XPages), the odd rendering the developer mentions (Notes links on the web?), and the solution (AppsFidelity!). 
 
If you would like to try AppsFidelity out for yourself, just request an evaluation license.
 
 
 
 
 
StackOverflor question about XPages and missing doclinks

Tags:

Thu 29 Aug 2013, 03:16 PM
This is the eighth in my series, Out Of Notes (see Part 1 - The ChallengePart 2 - Capsule ViewsPart 3 - ePublish from XPages,  Part 4 - Linked Collections,  Part 5 - To SharePointPart 6 - By a Thread and Part 7 - MultiDatabase Export), which shows how the Midas Rich Text LSX V5 features can be integrated in IBM Notes 9 Social Edition and the IBM Notes 9 browser plugin. I show a simple integration where a set of documents can be turned into a single file snapshot (capsule view), aand that can be opened with a NotesUIWorkspace.URLOpen. More information and the script used are at http://mini-lessons.info/Midas15 
 
Note: Accurate closed captions have been provided, and if English is not your first language, you might want to turn on the auto-translate. I also advise turning on HD and watching full screen so the captions show under the video.
 

Tags:

Thu 13 Sep 2012, 07:40 AM
Last night, Genii Software released CoexLinks 3.0, the next major version of our highly regarded coexistence and migration software. As part of the new release, there are now three components to the CoexLinks product, all bundled together and sharing the same license and the same cost. 

CoexLinks: The core extension manager product that runs on an IBM Lotus Domino server. CoexLinks recognizes doclinks created either by users in IBM Lotus Notes or by applications running in either IBM Lotus Notes or IBM Lotus Domino. Doclinks can be converted to Notes URL hotspots, Web HTTP hotspots or NDL attachments. Selective conversion can be done for links from specific databases to allow gradual migration of some Notes applications to a web-based interface. In external email systems, hotspot links will act as Notes doclinks whether by triggering the Notes URL or launching the NDL attachment.

CoexLinks Clipper: A windows menu add-in that allows a user to copy a doclink, view link or db link onto the Windows clipboard in a format which will paste a matching link into an Outlook email or other products such as word processors that accept HTML pasting. This allows a use who has migrated to Outlook for email to continue to share Notes doclinks with other users in Notes, Outlook. As this utility evolves, it will also allow pasting of NDL attachments when CoexLinks is configured to use NDL attachments, and pasting of various links into Gmail, which does not accept the same clipboard formats.

CoexLinks Fidelity: A separate extension manager product which renders Notes rich text messages into high quality MIME so that tables, links, fonts, margins and such appear in the destination email the way they did in Lotus Notes. Also enhances rendering of message in iNotes. Going forward, this rendering will be tuned further to meet the needs of different email systems, but from its launch, this is compatible with all current versions of MS Outlook and Google Mail/Gmail. The CoexLinks Fidelity component will be available in approximately one week.

CoexLinks continues to enhance the coexistence and migration experience for those choosing to move from IBM Lotus Notes/Domino email to alternate email systems.

Tags:

Fri 31 Aug 2007, 12:11 PM
Microsoft is starting really irritate me.  I have no problem with their advocacy of OOXML, except when they get to the point of stacking committees and trying to buy votes, and I have no idea whether they are right that IBM engages in similar tactics, even if they haven't been caught (or been that successful at it, either).  But I really, really hate talking points ala Karl Rove and the "Swift Boat" travesty.

On various posts yesterday, I saw eerily similar snide comments being made about whether IBM would ever release the "Notes proprietary formats", with one poster on Brian Jone's blog saying, as an example:
When this whole to-do is over, IBM may just drop the OSSers like a bad date and proceed to take a bunch of government contracts with a Lotus suite that supports ODF in name only.  And when you ask Rob Weir to open source his stuff or reveal Lotus-specific format information, he'll probably repeat the line about how it contains "old legacy code which is covered by licenses and patents outside of IBM's ontrol." 
Besides the idiocy of acting as if Rob Weir would have any control over this, the subtle message being promoted is that IBM always hides its data formats and just wants to force Microsoft, as a competitor, to expose theirs.

What a pile of crap!

For those who don't know, and the Microsoft people really should, the IBM Lotus Notes data formats are all documented in a free, and generally available, download as part of the Notes C API toolkit.  Rich text, view formats, everything.  Data structures, how they go together, functions to access them as well as how to access them directly if you don't want to use the functions.  Sample code out the wazoo.  And all of it has been available for years, since 1994 at least, since that is when I used all of these documented formats to create my fisrt product.  Since then, all my products have depended on this open access top data formats.

So, is it possible that the Microsoft posters don't know this?  Certainly.  Is it likely?  Maybe the people repeating it don't, but this is the ultimate dirty tricks tactic, as it relies on people's ignorance of the facts, and leaves a sense that is hard to counter it.  So, while I can't do much to stop this, I will at least call it what it is, FUD, pure and simple.
Mon 1 Jan 2007, 11:06 PM
The blog's been a bit quiet lately (although traffic hasn't slowed much - as Bob Sutor says, "having a photo of an attractive young woman on a blog entry will help drive a lot of traffic"), as I have been caught up in end of year preparations, Christmas holidays and a trip to the Deep South to see my wife's sister and family.  I am trying to gather my thoughts, and have considered writing a "favorite columns" post, but decided against it for now.  I may still do a highlights post, but I think I'll wait a bit.
 
A more important thing to post about is: What next?  After almost four years writing this blog, with many hundreds of posts and even more hundreds of comments, what is it I want to do this year to keep things fresh?  What do you want to see me do?  More posts about rich text?  About coexistence?  About ODF?  Or even about dating advice?  More articles in the Rich Text 101 series?  More updates on products?  More insight into the world of software development?
 
Or should I just ask Mike Midas and Crystal Coex to post more?  It so happens that a few months back, Andrew Pollack noticed how quiet Rocky Oliver's blog had been for several weeks, and asked me to "guest blog".  Not thinking, and because I was way too busy (and lazy), I sent Mike and Crystal over to help out.  Did I mention that I wasn't thinking?  Anyway, the following was written back in September, but somehow Rocky managed to keep it off his blog, so I'll post it here just to show you what I have to deal with in my office.  People complain about bosses, but employees can be worse...
 
Inline JPEG image
Wage Slaves Unite!
by Mike Midas, Ace Developer (and virtual, remote guest blogger on LotusGeek.com)

It is said that house guests, like fish, start to smell after a few days.  Something certainly smells fishy over at LotusGeek.com, where the elusive Rocky Oliver hasn't been seen for weeks, so our boss sent me and Crystal over to be house guests, to freshen the place up a bit, if you catch my drift.
 
Driving to Georgia from Cleveland is like volunteering to give blood when your half blind Aunt Gertrude is the only dumb sucker they let draw blood at the annual Red Cross blood drive, and her sciatica is acting up.  You might as well just shut your fingers in the car door before taking off, but taking off we were, me with a hangover that a British King would have found sufficient reason for beheading whomever the current British Queen was, and Crystal with an attitude that filled the passenger seat like a hot blooded Latino princess being eaten slowly by a cold blooded South American reptile.  If looks could kill, the looks she was giving me could have been used by the U.S. Marines to clear out all the insurgents east of Euphrates.  Now don't get me wrong, Crystal and I work together just fine, but she doesn't like me, and the only thing I like about her she keeps covered up and out of reach of the likes of me.
 
But when the boss says jump, sometimes you have to put a lid on the snappy rejoinders, shut your eyes to the obvious headaches, smother your resistance like an unwanted pet ferret, and jump.  After all, Rocky has been a friend to the boss for a lot of years, and not just any friend either, but a short, gimpy, motorcycle driving  friend, and you don't find those on every street corner in town, except maybe you do in Georgia, which is why we were heading in that direction.  Ever since Rocky start working for the Man, his time hasn't been his own.  From free wheeling, hard drinking, bike riding independence, he has chucked it all over for the sake of the Suits, and the Suits have paid him back by piling on the work.  So, when a wage slave calls, us fellow wage slaves go forth in sympathy, because our lazy, self made entrepreneurial pain in the ass boss wants to sit back at the office and "manage the business", by which he means pull in the big bucks while he waits for us to get back and do the real work.  Not that I am complaining, mind you.
 
On a long car ride, because as you might have guessed, our boss is too cheap to spring for plane tickets when his yacht needs provisioning for the late season blowouts, a guy's mind tends to wander like the hands of a wayward Uncle when the attractive nieces are about.  With the lack of any good scenery other than the Ice Queen, my mind wandered toward the topic of what the heck we were supposed to do to help Rocky.  After all, Rocky's blog mirrors his skills, but his ego mirrors the Grand Canyon.  When he wrote a book, he called it "The Bible", and if that doesn't say something about a guy, I don't know what does.  So, I don't want to blog about "new @ functions", and I can't let Crystal blog about what she is thinking about in a public forum read by script kiddies, so what should we tell Rocky's readers to calm them down until he finds a free minute hiding out without his laptop in some corporate bathroom while the vampire Suits wander the halls thirsting for his blood, sweat and tears?  I'm guessing they don't want to hear about CoexLinks and Blackberries, although it makes a good story, and Ed Brill has the whole evil empire thing pretty well covered.  We could start some rumors about Hannover, like how it will include an Eclipse plug in for IPO (individual productivity orgasmatron), but they probably wouldn't believe it without some fuzzy screenshots by Maureen.
 
Then it hit me like a wet towel in a steamy locker room in 7th grade.  We are talking about a blog, not a newspaper.  It doesn't really matter what you say, what matters is what you link to.  So, in honor of Rocky and his blog and the whole LotusGeek ethos, I give you Bennie and the Jets by Elton John, but annotated for the blogosphere with lots of links to drive traffic to LotusGeek.com.  Maybe we can even get LotusGeek.com marked as a link farm and banned from the search engines, which would pay the boss back for sending us here.  (Just don't let Crystal see the last two links!) [Note 02/9/2022 - all links removed due to the passing of time and the taking down of blogs]
 
Bennie And The Jets

Music by Elton John
Lyrics by Bernie Taupin
Available on the album 
Goodbye Yellow Brick Road
  
Hey kids, shake it loose together
The spotlight's hitting something
That's been known to change the weather
We'll kill the fatted calf tonight
So stick around
You're gonna hear electric music
Solid walls of sound
 
Say, Candy and Ronnie, have you seen them yet
But they're so spaced out, Bennie and the Jets
Oh but they're weird and they're wonderful
Oh Bennie she's really keen
She's got electric boots a mohair suit
You know I read it in a magazine
Bennie and the Jets
 
Hey kids, plug into the faithless
Maybe they're blinded
But Bennie makes them ageless
We shall survive, let us take ourselves along
Where we fight our parents out in the streets
To find who's right and who's wrong
 
© 1973 Dick James Music Limited 
 
Mon 15 Nov 2004, 07:38 PM
OK, the first step seems to be to define the term.  I am using the definition on this Wiki Links page as a starting point, but if I discover new and different information, I'll try to incorporate it.  We will need to bend the definitions a bit since this is NOT a wiki, after all...

TO BE FINISHED LATER...
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' ");


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


Tags:

Wed 3 May 2017, 11:54 AM
I posted this over on Facebook, but though I'd share it here as well. We've been doing some performance tuning on CoexLinks Migrate, which let's you export your email, both MIME and rich text, to high fidelity standardized formats including MBOX and EML and Exchange Mail Journal Envelope format (basically a wrapped up EML file with all the recipients and such in an envelope.

Performance tuning is fun, but it isn't sexy. You take Software A which creates End Product B, work incredibly hard to make sure it still creates the exact same damn End Product B, but faster. Same input, same output, less time. Not sexy.

But it can be satisfying. Here are the results from my test this morning (run on an old PC, so your mileage may vary, but it is likely to be better).

Inline JPEG image

Performance tuning seems to be helping. This is exporting to MBOX format, which is much faster than individual EML files, but 6000/minute means averaging 1/100 of a second per document. Wow. This generated an MBOX file with size 0.93GB from a mail db of 1.62GB, for what it is worth. When I ran the same test on the same database generating EML files,  it did about 2600/minute and generated 1.8GB in total EML files. That's overhead for you. 

In case you wonder the practical needs for this kind of speed, we have a client with 5TB of archived email. Using a very rough approximation based on my own mailbox, that would take about 96 hours (approximately 4 days) generated to MBOX. It would take roughly 220 hours for EML format (approximately. 9 days). 

When we started tuning, it averaged 950/minute for EML (we didn't measure for MBOX then). At that rate, it would have have taken 602 hours (approximately 25 days). Now, because these are separate databases, you would either run it on multiple processors or multiple machines, but even dividing these numbers by 10 machines/processors would take 9.6 hours, 22 hours and 60 hours respectively. The longer it takes, the more chance of something going wrong and having to start that part over. In short, speed matters. Fast enough, and you can even re-do the whole thing if some assumption turns out to be wrong. Slow enough, and a mistake can make you miss deadlines.

But as thay say on Reading Rainbow, you don't have to take my word for it. Request an evaluation license today and give it a spin.
Wed 21 Sep 2011, 04:00 PM
In a world where Twitter and instant messaging and time pressure have shortened our patience and attention spans while the complexity and size of the web has led to longer and longer links, the use of link shorteners is inevitable and necessary. The problem is, those links are often gibberish, such as http://bit.ly/nHEwr4 (or even http://planetlotus.org/90e1ed. A customer may not feel very comfortable clicking on such a link, and certainly won't remember it.

But bit.ly (and probably other link shorteners) offers a partial solution to this problem. They allow you to customize a link. Do you think a customer would feel more comfortable clicking on http://bit.ly/nHEwr4 or http://bit.ly/CoexLinks? Both are significantly shorter than CoexLinks but both go there.

With that in mind, I have added some customized links. Feel free to use them if you ever recommend one of our products in a forum or on Facebook/Google+/Twitter:

Midas Rich Text LSX - http://bit.ly/MidasLSX
Genii Software homepage - http://bit.ly/Genii

In addition, I added a few personal ones:

My author page on Amazon - http://amzn.to/BenLanghinrichs
Savage Fire ebook on Amazon - http://amzn.to/SavageFire
My Google+ page (feel free to Circle me) - http://bit.ly/blanghinrichs
My Comfy Chair review blog - http://bit.ly/ComfyChair

Try any of these if you like, and feel free to use them (they are easy to learn). If you add your own for your own products/websites/etc., let me know, as I'd be curious whether others find this useful. As a tip, though, don't try http://bit.ly/Transformer which seems to go somewhere very nasty.
Mon 11 Apr 2011, 08:18 PM
Rich Text 2.0 logo

I sometimes feel like the answer to every question I get asked by customer is somewhere buried in this steaming heap of a weblog. In less than a month, this blog will be eight years old, and still requests are made for "new" features that existed in our Midas Rich Text LSX before I started the blog.


Today, I got a question about sorting tables from the web. Of course, there are lots of ways to do that with views or lookups, but this customer has tables which are embedded in rich text fields, and wanted to export them to XHTML or DXL and then use fancy coding techniques to make them into lists, etc. etc. etc.  I did a quick search on the blog, and came up with this handy bit of coding I posted back in 2006.  It does just what the customer asked with a bit of Ajax and a simple agent.


Anyway, here it is, in all its original glory. Of course, Ajax is taken for granted these days, but this was quite the demo in 2006. And, of course, it is still something you can't really do with native Domino (at least not with rich text fields). And, of course, the code is even easier to make work in the Notes client. Incidentally, do you know when I added that SortByRow method to sort a table in a rich text field? Version 1.00 in 1997.


Table to be sorted using Midas and Ajax (for display):



Original sorting...


Member

Joined

Pledge

Increase

Que, Suzy 

1999

150.00

-50.00 

Jammer, Jo Jo

2001

100.00

100.00

Jones, Jimmy

2002

150.00

150.00

Lowa, Hona

2002

156.00

120.00

Roxx, Fred

2000

190.00

-10.00

Flintstone, Fred

2000

200.00

100.00

Friend, Dorie

2000

400.00

100.00

Gatwick, George G. 

1999

600.00

150.00

Franklin, James Earl T.

1999

750.00

100.00

Fordick, Mike

2003

1000.00

1000.00

Hannibal, George

2002

1000.00

100.00

Green, Olive

2001

1250.00

250.00

Deer, Jane

2002

2003.00

1000.00

Arnie, Miami

2002

3100.00

20.00



Sort by column 1
Sort descending by column 1
Sort numerically by column 2
Sort numerically descending by column 2
Sort numerically by column 3
Sort numerically descending by column 3


So, what is happening in this demo?  The agent code is really, really simple, so I thought I would just put it here in-line for you to look at:


Sub Initialize

   Dim session As New NotesSession

   Dim db As NotesDatabase

   Dim doc As NotesDocument

   Dim rtitem As New GeniiRTItem

   Dim rtchunk As GeniiRTChunk

   Dim unid As String

   Dim pos As Integer

   Dim column As Integer

   Dim reverse As Integer

   Dim numeric As Integer

 

'  &Sort=unid&Column=1&Numeric=Yes|No&Reverse=Yes|No

 

   Set db = session.CurrentDatabase

   Set doc = session.DocumentContext

   pos = Instr(doc.Query_String(0), "&Sort=")

   unid=Mid(doc.Query_String(0), pos+6, 32)

   pos = Instr(doc.Query_String(0), "&Column=")

   column = Cint(Mid(doc.Query_String(0), pos+8, 1))

   pos = Instr(doc.Query_String(0), "&Numeric=")

   numeric = Cint(Mid(doc.Query_String(0), pos+9, 1))   

   pos = Instr(doc.Query_String(0), "&Reverse=")

   reverse = Cint(Mid(doc.Query_String(0), pos+9, 1))      

 

   Set doc = db.GetDocumentByUNID(unid)

   Call rtitem.ConnectBackend(doc.Handle, "BlogBodyRT", True)

   Set rtchunk = rtitem.DefineChunk("Table 1")

   Call rtchunk.SortByRow(column, True, numeric, reverse)

   Print rtchunk.GenerateHTML("Table 1", "HTML", "Generation='Fragment' StandardFontTags='Yes' ")

End Sub


And that is it.  Midas reads the contents of this blog post itself, sorts the table and then spits out the content again into the space occupied before by the table, all using Ajax.  It never saves the changes, so dozens of people can try this at the same time without causing conflicts.  


Of course there are other ways to accomplish this. There are other ways to accomplish anything. But ask anyone who has ever worked with the Midas Rich Text LSX, and they'll tell you, it's just plain easy and intuitive. Did you ever stop to think about using Midas with Ajax and Xpages in a modern website?

Tags:

Fri 13 Nov 2015, 02:12 PM
Back in April of 2008, I wrote a blog post called Help make sure PNG is stored natively in 8.5. The issue then, and still now in Notes 9.0.1, is that while Notes rich text stores and renders PNG graphics perfectly well, when a user actually imports a PNG graphic from the Notes client, it is converted and saved as a JPEG file. Aside from other more minor issues, this means that transparency is lost, thus wrecking many images. As a simple example, consider this logo as it appears above converted to JPG and below stored natively as PNG. 

Inline JPEG image

While it is true that Midas will handle this now (and has since 2008, btw), I am not suggesting you run out and buy Midas for this. I am suggesting the IBM fix the Import. It is easy to do, as I know because it took only a couple of hours to fix the functionality in Midas once I realized that the native format was available. It uses image segments just like the JPG and GIF files do, with the addition of an oddly undocumented but easy to discern CDPNGHEADER record. I have even included the relevant undocumented pieces needed in the same format that the C API uses.

/* Defining undefined ODS elements */
#define SIG_CD_PNGHEADER      (82 | BYTERECORDLENGTH)

#define CDIMAGETYPE_PNG   4

typedef struct
  {
  BSIG  Header;       /* Signature and Length */
  WORD  ImageType;    /* Type of image (e.g., PNG, etc.) */
  DWORD ImageDataSize;    /* Size (in bytes) of the image data */
  DWORD SegCount;     /* Number of CDIMAGESEGMENT records expected to follow */
  DWORD Flags;        /* Flags (currently unused) */
  DWORD Reserved;     /* Reserved for future use */
  } CDPNGHEADER;


Please, IBM, fix the import. Don't make Notes look even more antiquated, clunky and obsolete than many people already think it is. Please!

Tags:

Thu 20 Mar 2014, 10:01 AM
Yesterday, I laid out a roadmap for Genii Software, defining three lanes that we see companies fall into and how we aim to address the needs of those companies. Over the next few days, I will post a few examples to illustrate our goals.

Lanes 1 and Lane 2:Taking data from a Notes database to SQL server without Notes development

Problem: a company has a Notes database, and they need to take a number of fields of a specific form and put them into SQL Server tables. They may be migrating (Lane 1) or simply need it for a specific purpose (Lane 2), but have no Notes developers and don't want to hire consultants for a one-off need.

Solution: using the Midas LSX 5, a customer could download the Export to CSV sample database. All they would need to do is fill out an Export Directive form (see below) with the database and specify which forms and fields to export (or all of them, if they didn't know which are needed), then click the button. Importing the CSV into SQL server is easy, using a technique such as How to create and populate a table in a single step as part of a CSV import. There is no need for Notes developers, and the entire process can be done in an afternoon. This example includes a rich text field, which is rendered by default to high fidelity HTML.


Export directive form

Thu 3 Jun 2010, 07:35 AM
Silver Moon, Bloody Bullets anthologyFor the contest surrounding the launch of our new @Midas Lookups, I thought I'd try a different sort of prize.  As many of you may know, I have been published in a number of magazines, e-zines and such, most recently for science fiction and horror.  For example, Silver Moon, Bloody Bullets, an anthology of werewolf stories, just went to print with my story, Without Remorse.  The young woman who has the leading role is Gabriella, named for Gabriella Davis.  She may or may not die, you'll have to read to find out, but Tim Davis is in a story I am writing now, and I just wrote his heroic, but grisly, death scene yesterday.

Here is your chance.  For the 
@Midas Lookups contest, there will be three prizes.

Grand Prize: Signed copy of 
Silver Moon, Bloody Bullets sent to you, anywhere in the world, plus a grisly death in a future anthology or magazine which will also be sent to you.  You may have a small say in whether your death is heroic, meaningless or just plain nasty.  Plus a free 50-user license of Midas Rich Text LSX for your company with maintenance for a year ($1500 value).

Second Prize: Signed copy of 
Silver Moon, Bloody Bullets sent to you, anywhere in the world, plus a grisly death in a future anthology or magazine which will also be sent to you.  You may have a small say in whether your death is heroic, meaningless or just plain nasty.

Third Prize: Signed copy of 
Silver Moon, Bloody Bullets sent to you, anywhere in the world.  You'll have to write your own ending.

Depending on both your name and your preferences, I may not use your name exactly.  If I am likely to vary it, I'll ask for something memorable about you to include so that you can point to prove it is you.




Back cover credits

Tags:

Thu 5 Feb 2009, 09:55 AM
One of the most confusing and aggravating parts of studying the Notes/Domino MIME rendering is that there are multiple engines, and many decisions made one way in one engine are made differently in the other engine.  I showed the example of collapsed sections (client -> no titles, server -> titles) and the example of tabbed tables (client -> tabs missing completely, server -> tabs shown in separate row), but also various examples where default fonts are interpreted differently, spacing between tables is different, cell widths are different, etc. etc.

In this post, I show another clear, simple case where the client renders the MIME making one decision, while the server renders the MIME making a different decision.

(read on) to see two different ways to deal with the same issue.

Tags:

Tue 15 Mar 2005, 10:07 PM
I love the fact that there is always something new to learn, or perhaps just to use for the first time, in Notes.... (read on)
Tue 25 May 2004, 12:50 PM
It is hard to switch perspective sometimes and see the world from a customer's point of view.  While it is easy for me to understand why not to upgrade my Windows OS version, or why not to upgrade my Notes version, it is harder to understand why people would not want to upgrade their Midas version.  It seems so obvious to me, and not just because my daughter is going to college next year <grin>.  But then, I am reminded that other people have to pay to upgrade, and they have to justify the cost, not just of the relatively reasonable upgrade fee, but also of testing and of taking a risk that something will have changed... (read on)
Fri 30 Apr 2004, 01:11 AM
I must admit I was astonished when Rocky called me up to say that because you can't export to MS Word in Notes 6, his client was going to use our Midas Rich Text LSX to export to MS Word.  Now, I wasn't surprised that he would think to use Midas, as we have lots of customers who use it for this purpose.  I wasn't surprised that Rocky called me, because he calls me quite often, and not infrequently it is about using Midas for a customer.  What surprised me was the news that Lotus Notes 6.x doesn't even have MS Word as an option when exporting from Notes 6.  Not even the traditional "Microsoft Word 6.0" which they had in R5.

What the heck?  I started looking, and came across this technoteExport Options in User Interface and the @Command FileExport Are not Available or Result in an Error, which shows that the only exports supported by the File Export command are:
  • ASCII Text
  • CGM Image
  • Microsoft RTF
  • TIFF 5.0 Image


which seems to me a pretty short list.  In addition, it says that you can't really use any of the other documented export types for @Command([FileExport]; ...) because they will all give errors.

Now, I like the fact that people buy Midas to export to MS Word, I really do, but I am truly embarrassed that you would have to.  This is 2004, and IBM has taken away the ability to export to anything, even MS Word 6.0.  Here is my favorite excerpt from the technote
Workaround:
In some cases the 'Microsoft RTF' export option may suffice as a substitute type if the target application also has a matching import option. Beyond that, if the desired filter does not exist then use a Notes 5.x Client to perform the export.

I am speechless.  OK, not entirely speechless.  I have just enough voice left to encourage you to check out our sample database Export to MS Word to see that it is possible to have a high quality export to MS Word, even one that works with MS Word 97/2000 and beyond.  (If you have tried it with Midas Version 3.20a, try again once Midas Version 3.30 is out, as both the export and the sample are improved and easier)

Think it won't make much difference?  Look at the four screen shots below.  The first is from Notes 6.0.2.  The second is the same document exported to Microsoft RTF.  The third is the same document exported to MS Word using the R5 export DLL (which you can actually call using Midas' Export method, if you like, even in ND6).  The fourth is the same document exported using Midas 3.30 and the new sample db.  I just took a piece of each for size reasons, but if you try the sample out, you can see what I mean with the whole document.  (Don't forget that you will need an evaluation license for Midas)... (read on)
Mon 16 Jan 2006, 11:58 PM
And now, the first of the list that was not covered two years ago when I first created these.  For #5...


#5) Build dynamic interfaces with layers

Description
In Notes 6, IBM introduced layer, a powerful new construct that has been almost, but not completely, ignored by Notes developers.  The concept of a layer was taken from the web, and most of the functionality of the layer (implemented with DIV tags) was included, at least on the surface.  But IBM made two mistakes with layers.  

The first mistake was that there is no way to change the z-index dynamically with JavaScript, or any other way.  The z-index determines which layers are on top of which other layers, and a dynamic z-index would mean that you could swap out different layers easily.  Instead, developers had to use hide-when formulas, which are powerful, but hard to add and hard to control.  Additionally, and ruinously, hide-when formulas would not allow layers to work the same way on the web as in Notes, because each "refresh" on the web required a reload of the whole page.

The second mistake was that IBM did not offer a programmatic way to create and manipulate layers.  This made it very, very difficult to do anything complex, because layers by their nature tend to cover each other up.  The Designer does allow you to hide one layer while working with another "under" it, but that is very, very cumbersome if you have twenty layers or more.

History
Even before Notes 6 was released from beta, the Midas Rich Text LSX offered the ability to create and manipulate layers, but after that quick start, very little happened for a couple of years.  We at Genii Software  simply didn't have a good grasp of what could be done with layers, and without any examples to work with, our customers similarly ignored this feature.  Then, for Lotusphere 2005, we put out our annual Sessions database (this year's is at LS 2006 sessions), and we included calendars made from layers.  All of a sudden, there was a clear and obvious example of the power of layers, and several customers started building their own applications with layers.  Over the past years, we have posted various examples of new kinds of applications, sometimes very surprising ones, that you could create with layers.  To stay with precedent, a new dynamic use of layers is being added to the Lotusphere Sessions db, what you might call "Google Maps for the Notes client".

Comparison with standard Notes/Domino functionality
Notes 6.x doesn't include any native ability to create layers or image maps, which are used extensively with layer applications.  In theory, you could create such applications with DXL, but as a practical point, the formulas involved seem to be difficult to create through DXL.  In addition, I have been informed that you can only export layers as raw rich text data, which makes them essentially impossible to produce through this method.

Documentation
Documentation on using layers is mostly found in the Genii weblog, but documentation on the methods used, particularly the AppendLayer method and the image hotspot methods, are to be found in the Midas Help database.  Try posting a question in the Support Forum if you want one a sample of layers used in an application.  Be sure to describe what you want to accomplish, as are many unusual techniques that have been invented.  As an example, w show how to create scatter graphs, which you might not think of when working with layers (see screenshot below).

Screenshot of Calendar created with layers, with clickable hotspots (from Lotusphere 2006 Sessions db)
Calendar made with layers

Screenshot of interactive "Google" style maps in Notes client (from Lotusphere 2006 Sessions db)
Inline JPEG image

Screenshot of scatter graphs (from Genii Weblog)

On-line demo
None available at this time.

Sample Database
Lotusphere 2006 Sessions database 
The agents creating the calendar subforms are included in the database.  In Version 3 of the database, not yet released, the agent to create the interactive Google style maps in the Notes client will also be included.
Sample Script Snippet
This snippet is taken from the actual script used to generate the Google maps in the Notes client.  Note the use of the AppendLayer method to create the layer, then the FindNamedChunk method to find the layer by name, or id, and finally the use of the AppendGraphic method followed by the SetImageHotspot method, which together add a graphic with a hotspot on it.
Sub SetupPedestalPushpin(rtitem As GeniiRTItem, rtchunk As GeniiRTChunk, pedestal As Integer,As Integer,As Integer)
   Dim rtLayer As GeniiRTChunk
   Dim rtGraphic As GeniiRTChunk
 
   Call rtchunk.AppendParagraph("LeftMargin=1", "", |!(|+Cstr(pedestal)+|= p)|  )
   Call rtchunk.AppendLayer(Cstr(y)+"px", Cstr(x)+"px", "20px","34px", 3, |LayerHTMLID='Layer|+Cstr(pedestal)+|', "JustifyMode='Center' ")
   Set rtLayer = rtitem.Everything.FindNamedChunk(True, "Layer", "Layer"+Cstr(pedestal), "Exact")   
   Set rtLayer = rtitem.DefineChunk("Inside "+rtLayer.Definition)
   Call rtLayer.AppendGraphic("file", "c:\temp\pushpin_ns.gif", "ImageWidth='20px' ImageHeight='344px' ")   
   Set rtGraphic = rtLayer.DefineSubChunk("Graphic 1")
   Call rtGraphic.SetImageHotspot("Formula", |FIELD b:=|+Cstr(pedestal)+|; @Command([RefreshHideFormulas]);|, "", "Default")
End Sub
Weblog Posts on Layers
Veiled Threats (Mike Midas case file)
Example of a calendar with layers (different skins can create a very cool look)
Mon 5 Nov 2007, 08:00 PM
I had a colleague ask this today (in slightly different words), and realized that the answer could be confusing to others.  While I plan to update our CoexEdit page to make this more clear, I thought I'd answer it here.

CoexEdit is not a web editor, but a web editor is included in the package when you download.  Specifically, a customized version of FCKeditor, one of the most popular open source web editors today, and one which has a reasonably liberal LGPL license.  The customizations are free for anybody to use, but may be less than completely useful without CoexEdit.  I guess you could think of FCKeditor as a subset of the CoexEdit package.

FCKeditor is a subset of the CoexEdit package

The confusion comes in because CoexEdit will work with a number of other web editors, both open source (e.g., Xinha and TinyMCE) and commercial (e.g., EditLive).  Those editors do not have the customizations which have been made to FCKeditor, but they could be, even without our assistance.  If a "doclink" appears in the right format, CoexEdit will render it as a doclink inside Notes and an appropriate HTTP link on the web.  If an image is uploaded using the correct form, CoexEdit will convert it to rich text on saving, and so on.  So CoexEdit, the product, is purely a Domino add-in, but CoexEdit, the package includes a web editor which can be used without further work.  It is our way of offering the maximum flexibility with the minimum fuss and bother.  If you want to download CoexEdit, install FCKeditor on your server and copy all relevant design elements to your database, you can do it in about two minutes.  Customizing your template to use CoexEdit may take a little more, but the last thing you need to worry about is finding a web editor and getting it to work with CoexEdit.  That is our job, and we've worked hard to make it easy for you.
Tue 4 Nov 2003, 03:56 PM

After years of telling people about Midas, my good friend Rocky Oliver, the Lotus Geek, has finally started using it.  I try hard not to push friends to use Midas, but it is always fun to listen when they go on about how cool it is, like it is some new discovery.  Rocky is also a heck of an app designer, so it'll be fun to see what he manages to do with Midas.

Anyway, Rocky contacted me today from the Advisor Devcon conference because he wanted to know if you could create action hotspots with Midas.  Maybe even action hotspots on images.

Of course you can.  I whipped up a little sample for Rocky, but I thought I'd share it with those of you who might also want to see it... (read on)
Thu 12 May 2005, 04:21 PM
I thought that it might be useful to go through the exercise of adding CoexEdit to a well known, existing database, documenting each step.  I chose the Partner Forum because it is currently a Notes only database, so I thought it would be easier not to work around the web elements already in place.

Now, let me start by saying that I have no desire to see the Partner Forum web enabled, and that what I did will not web enable it.  I worked on a copy of the Partner forum on an internal database.  Here were the steps as I record them: (read on)
Mon 11 Jun 2007, 08:51 PM
Speed isn't everything, and I was worried a bit about how to test OpenSesame with large files.  The question is, what is large but not simply fabricated.  It is not too hard to create a large spreadsheet (see OpenSesame: Edit view in spreadsheet), but it is not terribly complex content.  Besides, I want to work with word processing documents.  I decided to work with the ODF 1.0 specification itself, which is about 691 pages long with different formatting, images, etc.  If I could get a copy of Microsoft's Office Open XML 1.0 specification, I'd try that, because at 6000+ pages, you don't get much bigger, but I don't have a copy in ODF format.

Anyway, the task OpenSesame has to accomplish is to unzip the various XML parts in the OpenDocument-v1.odt and load them into memory.  The main piece is the content.xml, which is 4,517,062 bytes, and it has to be parsed and loaded into a DOM tree.  OpenSesame performed beautifully, unzipping, parsing, loading, traversing the tree to retrieve a bit of text (just to be sure it was working properly), and removing the tree from memory, all in under a second and without any glitches.  I wondered how the NotesDOMParser would handle a similar task.  Since there is no class for unzipping, I just started with the content.xml and had the NotesDOMParser load, parse and unload.  It took 9 seconds.  OK, speed isn't everything, but it doesn't hurt.

So, now I need some good stress tests.  Should I do a ReplaceText and replace every letter 'a' with the word 'zoo' (since that would expand the text values, it would put more stress than replacing the letter 'a' with the letter 'z')?  Should I do a LinkMatching across the whole document and provide contextual links to website?  Should I create a really mungo Notes document by converting the ODF to rich text?  What would be good tests to run to see how well OpenSesame works under pressure?
Thu 6 Dec 2007, 10:16 PM
In a recent IdeaJam comment responding to Don MNally's idea, Layers Not Bound by Frames, Slawek Rogulski asks this question:
Are layers becoming the Notes Swiss Army Knife?
I'd say the answer should be, "I hope so!", although there are a lot of constraints that could be removed.  Layers are amazingly flexible, render very, very quickly, and can be used to build interface components you wouldn't believe could exist in the Notes client, but they are also incredibly frustrating to manipulate without a tool like our Midas Rich Text LSX, and work differently in the Notes client than on the web in ways that make combined applications difficult. 

I'd like to collect a set of links to the cool things people have done or are doing with layers.  I have a few of my own, such as Not your parent's form design, which I highly recommend for anyone who wants to see some of the diversity of what you can do with layers, and a much earlier post from 2005, Ogres have layers, and now the Sessions db does as well, but there are some excellent examples out there by Chris Blatnick and Nathan Freeman and others.

And for myself, I am signed up to do a sequel to last year's EntwicklerCamp session on layers (where I showed 13 different UI techniques with layers, and then gave a sample db with all of them in it to the attendees).  In my session abstract, I promise:
A sequel to last year's session on layers, this session will show a whole new array of techniques using layers, including techniques for building layers in DXL in Notes 8, and for using layers in any Notes version from Notes 6 onward. Discover tricks to create interactive layer techniques that will empower your applications in ways you didn't think possible.
So, that should make at least 23 UI techniques with layers, as I intend to create at least ten new techniques for that session.  Surely that qualifies as a swiss army knife!

And if there is any chance you might be able to come to the EntwicklerCamp 2008, I'd be happy to see you there and discuss techniques that I don't show because they are too far out there for ordinary developers.
Wed 9 May 2007, 11:03 AM
I am facing a design decision which was already resolved long ago for our Midas Rich Text LSX, but I have to decide whether we should make the same decision for OpenSesame...   (read on)
Thu 28 Jul 2005, 08:28 AM
The screen shots I made for CoexEdit have been very popular (see CoexEdit screenshots), partly because they tell a story and partly because people like eye candy (see Ed Brill's comment on Hannover screenshots near the bottom of this post).  Now, I working with our other products, and creating screenshots for those as well.  The first is the Midas Rich Text LSX, since it is our most popular and long lived product.

My first thought was to have a [screenshot] + Midas = [screenshot] layout, like that below, with each screen shot clickable to get a larger version, but even two examples such as these two below lead to redundancy.  The reports example can lead from the view to several different possible reports, so should each one start with the same view screen shot and lead to the report? Should I skip the A + B = C approach and just show the different reports as screen shots?  

My second thought was that I could turn this into a story the way I did with CoexEdit, but I don't think Midas needs explaining in the same way CoexEdit does.  Should I skip the A + B = C approach and just show the end results?  

Finally, whichever way I do this, do you think I should include snippets of Midas code as screenshots or as a page of textual code?

Any ideas?  Any reaction?

(read on)
Thu 6 Feb 2020, 02:58 PM
While we work to get the beta up and running, I wanted to share a quick preview with you of Exciton Boost in action. Now, since this is a Node.js demo, and since that means everything happens behind the scenes, I can mostly only show the results after I run each subsequent demo. Therefore, here's a quick cheatsheet so you know what you are seeing.
 
In AppDev Pack 1.0.3, the recently released version for Domino 11 (and I think Domino 10 Fixpack 4), you can create a document with text, date, and number fields only. You need to have all the information at your fingertips (or at least on your client).
 
For the first three demos in this video, I use nothing more than the Database.createDocument method. It looks like this, which except for the console.log message I added is the exact code I use in the video for demo1.js.
 
Inline JPEG image
 
Straightforward enough. 
 
For demo2.js, I use the same script plus one line to create a formula for a FullName field which will compute server-side.
 
For demo3.js, I use the same script plus two lines to create an HTML representation of a field to be saved as rich text in the Bio field.
 
For demo4.js, I use a different method, the Database.bulkReplaceItems. The code looks like this (redacted the Exciton part until we are sure about the syntax):
 
Inline JPEG image
 
Now, on to the demo. Let me know your thoughts in the comments, and please don't hesitate to share or Like the video.
 
 
 
Thu 26 Oct 2017, 09:33 PM
This is the first is a series of planned videos on AppsFidelity, and how it is used to modernize your data.
 
What do I mean by 'modernize'? Well, I've found it hard to describe what needs to be done to data so that as it is properly usable in an application on the web or mobile. I've used the word 'render' when I am just talking about rich text. I've used the words 'wrap' or 'extract' or 'migrate' to describe simple data being wrapped into CSV or JSON.
 
But then I realized, the term 'modernize' as used with apps is just as applicable to data. It's the same data, but served up in ways that work with 'modernized' apps, whether that is XPages or in a iOS/Android app or SQL Server or whatever.
 
AppsFidelity does more than render to HTML. It wraps and encapsulates and more, all on the fly. It does as much or little as you need. It can be used with LDC Via or Aveedo or Darwino or virtually any other product, simply by intercepting the calls to open documents, so no changes are needed to those products.
 
Your legacy and current data modernized to work with whatever feels modern to you. Even if that's just a classic Domino web app.
 
This video shows how AppsFidelity can be turned on with an XPages app to surface your data beautifully without programming. 
 
 
 
Planned videos will show AppsFidelity rendering both simple and rich data to:
 
  • JSON (including use with other products going to JSON)
  • CSV (on-the-fly rendering for data analytics or app consumption)
  • HTML and MIME (including bidirectional synchornization with Domino)
 

Tags:

Fri 21 Jul 2017, 03:56 PM
Most IBM Notes/Domino customers who have used the product for a number of years have vast stores of data, but when they want to try to glean new insights, they are stymied by how to handle the data mining. Simple fields which map well to views are easy to extract, and are often relatively "clean", meaning that the value is what the value says it should be. But real applications, especially those built for internal use, often reflect a far more complex set of relationships. They may use parent-child hierarchies, doclinks, lookups to other databases. They may also contain information stored in multi-value fields or rich text fields that require manipulation and cleanup. 
 
While there are a number of techniques available from DXL to data scraping, it can quickly become programming intensive to find information and put it together. With this in mind, we have built a fairly easy database using the Midas LSX engine to extract, correlate and prepare data from different sources and build a result which does not always have a one-to-one correspondence with Notes documents. The main virtue of this approach is the ease with which you can ask questions and put together sources. If you decide you have something wrong or need something else, it takes just a minute to remove or add it.
 
I wanted to show how this works with an existing application used over a period of years by fairly sophisticated Notes users. I chose as a source the IBM Business Partner forums, because they are  widely available and familiar. One of the different uses for these forums over several years was to allow partners to file Possible Bug reports, which IBMers could monitor and use to create SPRs and so forth. In this brief video, I pose five questions of this fairly simple application. Imagine how you could use a similar application to delve into your company's data. 
 
 
Note that I don't talk much in the video about data cleaning, but if you look at the image below, note that the column F (first red arrow) is derived automatically by Midas as a boolean from column G (second red arrow). We have some data cleaning built in as options, but are also looking at ways to provide custom data cleaning and normalization for individual items. While it is inevitable that some data cleaning will be done after the data is loaded into data analysis or data visualization software, the cleaner it can be the better, as 80% of all time doing data analytics is preparing and cleaning and normalization the data. We are eager to discuss with customers how we can minimize that costly effort.
 
 

Tags:

Mon 13 May 2013, 02:11 PM
Samples sell products. Especially with the Midas Rich Text LSX, people want a sample close to what they will need. If it works, they buy it. I call this "From Try to Buy". There are 24 sample available on the Midas LSX samples page now. The biggest obstacle though, is that people must request a Midas evaluation license, download the software and sample and install just to see if the sample is what they need. If they know the sample is what they need, they'll do it. If not, they might go off to check Facebook and forget about it.
 
So, as I release Midas V4.32 today and V5.00 in the near future, I am moving to a new plan, "From Spy to Try to Buy". I will make a brief video for each sample, showing exactly what it does, and add it to my Mini-Lessons.info site with code and extras. If those fit, it will be worth continuing. Every video should be about 2 minutes long, so you can quickly decide whether a sample is worth pursuing.
 
I had a couple that already existed, such as Instant Reports with Midas LSX and Redact credit card numbers with REGEX using Midas LSX, but I'm taking the opportunity to update each sample since some are quite old. In fact, the first new one I've done is below, and it is an update of the sample published in 2003. The code is still relevant and used by many companies today. The video is in HD, so don't hesitate to watch it full screen.
 
 
The full mini-lesson is available as Lesson Midas#6, or the sample database can be found on the Midas LSX samples page.
 
Wed 8 Apr 2009, 11:58 AM
I was talking with another ISV, Mark Ramos of Granite Software, about the fascinating process of updating software created many years ago to work with later compilers, operating systems, versions of Notes, etc. He originally created his well regarded and widely used Zmerge way back in 1994, and has thus had to update it through a whole series of massive changes to Notes, to various operating systems including Windows, and so forth. He is now working on yet another update, this time to support 64bit Windows, I think. Mark and I have talked before about the advantages of having been in the Notes API business before many others, because much of the internal workings were more visible then, so we learned before the distractions were so numerous, although we also had to learn by hacking and trial and error as we were often there before the APIs and documentation. Recently, I have been grappling with one of the downsides of being early to the game...

(read on) to see what I mean.

Tags:

Sat 21 Jan 2006, 07:15 AM
OK, the question has been asked (more than once.  OK, OK, several times).  Well, without going into a lot of details, I decided life in the week before Lotusphere was just a bit too simple and quiet, so... I bought a house.  Well, of course I didn't actually "buy" the house, but my wife and I saw it and saw it again, and put in an offer, and had the offer accepted, and that was all just the first day.  It has been twelve years so I went through this house buying thing, so I forgot the flurries of papers to sign just to set the whole thing up.  The long and short of it is, we got the house we wanted, but you all didn't quite get the finished database you wanted.  I am putting out the last version tonight or tomorrow morning, and version 2 had all the sessions except Gurupalooza and the opening sessions, but some of the cool "Google maps in the Notes client" type functionality I will have to show you at our pedestal #604, since I couldn't get it out there.

Oh yes.  My marketing director ("Quick! Switch hats, Ben") reminds me that perhaps I could emphasize that just a bit more, so.

Our pedestal is #604.  Come see CoexEditCoexLinks and the amazing Midas Rich Text LSX!

Ahem.  Anyway, so you have my apologies for the tardiness of the last version.  I had a house to buy.

But if you want to stop by and see how the sessions db was actually built, and how we created those slick graphical calendars and ripped data wholesale retrieved publicly accessible data off the Lotus website, you can stop by our pedestal on the showcase floor, or you can come to my ISV Theater presentation on The Making of the Sessions Database on Thursday morning at 9am in Europe 5.  Try not to disturb the crickets, as I imagine they will be the only ones up after the festivities at Sea World Wednesday night.  Anyway, if those options don't work, you can always accost me after the Business Development Day opening session or the General Opening Session, where if you watch really, really carefully, you might see them flash our new logo because we were finalists for the Best Tool/Utility Lotus Award.  ("Oh shoot!  I didn't mean to say that.  Do I have to?  C'mon, they don't want to hear this. OK, OK")

Genii Software's CoexEdit was a finalist for the 2006 Lotus Award for Best Tool/Utility!

Sigh.  Sorry about that.  You know marketing people.  Anyway, I look forward to seeing everybody as you dribble in over the next day or so.
Wed 23 Dec 2020, 02:00 PM
Inline JPEG image
 
This is intended as a direct reference companion to my post earlier today, Getting data from Domino with Exciton Boost. Here, developers can see the exact requests made with parameters, HTTP headers, etc. in case anything in the video went by too quickly.
 
There are the nine tasks, but in some cases, I show multiple separate requests, as I used more than one in the video to explain different elements. For each request, I show the HTTP method and then one of different ways (e.g., JavaScript's fetch) to show how this code could be called. The second part is merely to get across the wide range of ways you could call Exciton Boost using different technologies. Finally, I include the video again in case you want to see these requests in action and see the results they generate.
 
Intro: Get core services
Returns a JSON array of objects, one for each view that is included, implicitly (all views) or explicitly (specified views), in the Exciton configuration db and marked as discoverable. Exciton is strict about data security, so views may be accessible but not discoverable. Views not included are inaccessible and will return a 404 error.
 
Intro) HTTP

GET /CurbAppeal.nsf/api/boost HTTP/1.1

Intro) cURL

curl --location --request GET '
https://geniisupport.com/CurbAppeal.nsf/api/boost'
 
 
Task 1: Get list of accessible views
Returns a JSON array of objects, one for each view that is included, implicitly (all views) or explicitly (specified views), in the Exciton configuration db and marked as discoverable. Exciton is strict about data security, so views may be accessible but not discoverable. Views not included are inaccessible and will return a 404 error.
 
1) HTTP
 
GET /CurbAppeal.nsf/api/boost/views HTTP/1.1
Accept: application/json
 
1) JavaScript - jQuery
 
var settings = {
  "url": "
https://geniisupport.com/CurbAppeal.nsf/api/boost/views",
  "method": "GET",
  "timeout": 0,
  "headers": {
    "Accept": "application/json"
  },
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
 
 
Task 2: Get view with columns & metadata
Returns a JSON array of objects, one for each document in the view. Each document includes a link to get the document from the documents collection as well as item values for each view column. Note that there are parameters to page through the view if desired.
 
2) HTTP
 
GET /CurbAppeal.nsf/api/boost/views/76CA31CBCB19C70A8525694F0045C657 HTTP/1.1

2) Python - Request
 
import requests

payload={}
headers = {}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

 
Task 3: Get filtered view
Returns a JSON array of objects, a subset of the full view filtered by a key match with the first view column. There are alternative ways to filter the view, but this is easiest.
 
3) HTTP
 
GET /CurbAppeal.nsf/api/boost/views/76CA31CBCB19C70A8525694F0045C657 HTTP/1.1
X-Key-Value: Chagrin Falls, OH

3) JavaScript - Fetch
 
var myHeaders = new Headers();
myHeaders.append("X-Key-Value", "Beachwood, OH");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("
https://geniisupport.com/CurbAppeal.nsf/api/boost/views/76CA31CBCB19C70A8525694F0045C657", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

 
Task 4: Get all items from the document
Returns a JSON object containing each item found on the document, or at least all allowed. Items may be explicitly allowed or disallowed in the configuration database, or all may be allowed by default. Some items such as time/date, author and reader fields, and rich text items will be represented by subobjects. Rich text fields are rendered to high fidelity roundtrippable HTML.
 
4) HTTP
 
GET /CurbAppeal.nsf/api/boost/documents/524C08BF648BE77A85257B8600798F5B HTTP/1.1
 
4) Node JS - Request
 
var request = require('request');
var options = {
  'method': 'GET',
  'url': '
https://geniisupport.com/CurbAppeal.nsf/api/boost/documents/524C08BF648BE77A85257B8600798F5B',
  'headers': {
  }
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

 
Task 5: Get only selected items
Using an item list via URL or HTTP header, the request determines which items to returns in the JSON object. In addition to actual items, the request may use Notes formula language to create additional items or may use filtering to get subsets of rich text items.
 
5a) HTTP
 
GET /CurbAppeal.nsf/api/boost/documents/524C08BF648BE77A85257B8600798F5B?metadata=false&items=StreetAddress,Bdrms,Full=Bathrooms,Half=Half_Baths,Photo HTTP/1.1
 
5a) JavaScript - XHR

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function() {
  if(this.readyState === 4) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "
https://geniisupport.com/CurbAppeal.nsf/api/boost/documents/524C08BF648BE77A85257B8600798F5B?metadata=false&items=StreetAddress,Bdrms,Full=Bathrooms,Half=Half_Baths,Photo");

xhr.send();

 
5b) HTTP
 
GET /CurbAppeal.nsf/api/boost/documents/524C08BF648BE77A85257B8600798F5B?metadata=false HTTP/1.1
X-Items-List: StreetAddress+", "+City+", "+State=Address,Bdrms,Full=Bathrooms,Half=Half-Baths,Photo[Graphic 1]
 
5b) JavaScript - XHR
 
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function() {
  if(this.readyState === 4) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "
https://geniisupport.com/CurbAppeal.nsf/api/boost/documents/524C08BF648BE77A85257B8600798F5B?metadata=false");
xhr.setRequestHeader("X-Items-List", "StreetAddress+\", \"+City+\", \"+State=Address,Bdrms,Full=Bathrooms,Half=Half-Baths,Photo[Graphic 1]");

xhr.send();

 
Task 6: Add selected items to view results
Going back to the view, the request can include either additional or replacement items for the view columns using an item list via URL or HTTP header. This allows retrieval of any allowed items with the view results, including rendered rich text items.
 
6) HTTP
 
GET /CurbAppeal.nsf/api/boost/views/76CA31CBCB19C70A8525694F0045C657?metadata=false&additems=Col1,Col2 HTTP/1.1
X-Key-Value: Beachwood, OH
 
6) Java - Unirest
 
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.get("
https://geniisupport.com/CurbAppeal.nsf/api/boost/views/76CA31CBCB19C70A8525694F0045C657?metadata=false&additems=Col1,Col2")
  .header("X-Key-Value", "Beachwood, OH")
  .asString();

 
Task 7: Get RTItems (as a list, as individual rtitems in JSON, as rendered HTML pages, or rendered HTML fragments)
Explores some of the different ways to retrieve rich text.
 
7a) HTTP
 
GET /CurbAppeal.nsf/api/boost/documents/524C08BF648BE77A85257B8600798F5B/rtitems HTTP/1.1
 
7a) PowerShell - RestMethod
 
$response = Invoke-RestMethod 'https://geniisupport.com/CurbAppeal.nsf/api/boost/documents/524C08BF648BE77A85257B8600798F5B/rtitems' -Method 'GET' -Headers $headers
$response | ConvertTo-Json
 
7b) HTTP
 
GET /CurbAppeal.nsf/api/boost/documents/524C08BF648BE77A85257B8600798F5B/rtitems/Col1 HTTP/1.1
 
7b) PowerShell - RestMethod
 
$response = Invoke-RestMethod 'https://geniisupport.com/CurbAppeal.nsf/api/boost/documents/524C08BF648BE77A85257B8600798F5B/rtitems/Col1' -Method 'GET' -Headers $headers
$response | ConvertTo-Json
 
7c) HTTP
 
GET /CurbAppeal.nsf/api/boost/documents/524C08BF648BE77A85257B8600798F5B/rtitems/Col1 HTTP/1.1
Accept: text/html
 
7c) PowerShell - RestMethod
 
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Accept", "text/html")

$response = Invoke-RestMethod '
https://geniisupport.com/CurbAppeal.nsf/api/boost/documents/524C08BF648BE77A85257B8600798F5B/rtitems/Col1' -Method 'GET' -Headers $headers
$response | ConvertTo-Json
 
7d) HTTP
 
GET /CurbAppeal.nsf/api/boost/documents/524C08BF648BE77A85257B8600798F5B/rtitems/Col1?fragment=true HTTP/1.1
Accept: text/html
 
7d) PowerShell - RestMethod
 
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Accept", "text/html")

$response = Invoke-RestMethod '
https://geniisupport.com/CurbAppeal.nsf/api/boost/documents/524C08BF648BE77A85257B8600798F5B/rtitems/Col1?fragment=true' -Method 'GET' -Headers $headers
$response | ConvertTo-Json

 
Task 8: Get image from rich text (either as an <img> link or as components in a JSON object, either allowing binary retrieval of the image from the server)
Depending on what exactly is needed, different ways to retrieve an image as a link back to the Domino db.
 
8a) HTTP [Image link as HTML fragment]
 
GET /CurbAppeal.nsf/api/boost/documents/524C08BF648BE77A85257B8600798F5B/rtitems/Photo/chunks/Graphic 1?fragment=true HTTP/1.1
Accept: text/html
 
8a) Python - http.client
 
import http.client

conn = http.client.HTTPSConnection("geniisupport.com")
payload = ''
headers = {
  'Accept': 'text/html'
}
conn.request("GET", "/CurbAppeal.nsf/api/boost/documents/524C08BF648BE77A85257B8600798F5B/rtitems/Photo/chunks/Graphic 1?fragment=true", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
 
8b) HTTP [Image components as JSON]
 
GET /CurbAppeal.nsf/api/boost/documents/524C08BF648BE77A85257B8600798F5B/rtitems/Photo/chunks/Graphic 1?metadata=false HTTP/1.1
X-Items-List: Photo[$GraphicOffset]=Offset,Photo[$GraphicFormat]=Fmt,Photo[%GraphicHeightPX]=height,Photo[%GraphicWidthPX]=width
 
8b) Python - http.client
 
import http.client

conn = http.client.HTTPSConnection("geniisupport.com")
payload = ''
headers = {
  'X-Items-List': 'Photo[$GraphicOffset]=Offset,Photo[$GraphicFormat]=Fmt,Photo[%GraphicHeightPX]=height,Photo[%GraphicWidthPX]=width'
}
conn.request("GET", "/CurbAppeal.nsf/api/boost/documents/524C08BF648BE77A85257B8600798F5B/rtitems/Photo/chunks/Graphic 1?metadata=false", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

 
Task 9: Get image data URI
Retrieves an image as an <img> link with the data URI included, so that the entire image is local. The dataimgs parameter shown can be used for any rich text or document retrieval so that the rendered HTML has the images locally available without any requirement for the Domino image to be accessible.
 
9) HTTP
 
GET /CurbAppeal.nsf/api/boost/documents/524C08BF648BE77A85257B8600798F5B/rtitems/Photo/chunks/Graphic 1?fragment=true&dataimgs=max HTTP/1.1
Accept: text/html
 
9) Shell - wget
 
wget --no-check-certificate --quiet \
  --method GET \
  --timeout=0 \
  --header 'Accept: text/html' \
   '
https://geniisupport.com/CurbAppeal.nsf/api/boost/documents/524C08BF648BE77A85257B8600798F5B/rtitems/Photo/chunks/Graphic 1?fragment=true&dataimgs=max'

 
 
Tue 12 Jun 2018, 01:44 PM
This is the fifth in a series on configuring CKEditor. In my previous post,  I showed how to use a Domino form and view to add doclinks. In this, I'm going to show how to simulate the Notes way of attaching documents along with attachment icons that launch the files. Note: I have used our product, AppsFidelity, for the example. Other topics should be much less product focused, but this seems the best way to demonstrate it..
 
1) Our goal is to create specialized images as attachment icons to launch files as in Notes client
In other words, the first of the following two images is what we want to see on the web, rather than the second which is what we see now.
 
Inline GIF image
 
The default is to add the attachments at the bottom as in this image. This loses context. For example, you can't tell that I added Bonnie's rap sheet first, so the order they are mentioned doesn't match the order they are presented. Iin my example above, the location tells you all you need to know. Imagine the confusion possible when a long document with many attachments is displayed.
 
Inline GIF image
 
 
2) Adding the plugin and dialog
This process is very similar to the Doclink example in the previous post, with one notable exception being that we open the Domino form and save it as a temporary document rather than just reading it.
 
Inline GIF image
 
See in this brief video:
 
 
 
3) How the attachment image is generated
The attachment icon with the text embedded is a challenge. When the file is uploaded to the temporary document, an extra step must generate the attachment icon. This can be accomplished with the C API and an image library. Here, I use AppsFidelity as an extension manager so when the temp document is saved, the image is generated as a second attachment. Then, the HTML inserted in the plug knows where the image will be. Alternately, you could use a web services call or other extension to return the image.
 
Inline GIF image
 
4) How the attachment moves from the temporary document to the original (edited) document
You could leave the attachment in a separate document, but that leads to management and security issues. Instead, on submission of the original document, the save process copies the attachment over, changes the HTML to point internally, and removes the temporary document.
 
 
5) How this looks if opened in Notes client
If you have a web only solution, it doesn't much matter how this works in Notes, but if you did open it, you would have an image with a link to the web document which would then open a browser to open the attachment. To avoid this since we already have an extension manager, we can catch the open from Notes and convert the MIME to rich text with "normal" Notes attachments.
 
Inline GIF image
 
 
6) A multitude of other extensions are possible
Once you open up the idea of actions that reach outside of the local editor, you could have an icon that did a pull request on a stock ticker symbol and inserted a chart, or you could have a dropdown with different boilerplate language which could get inserted, or you could have a translate button which would add (or replace selected content) a translated version. The sky is the limit. The imporatnt thing to realize is that you can extend the toolbar in ways that server your business needs and add capabilities beyond simple rich text manipulation.
 
 
7) Commercial side-note - what AppsFidelity brings to the table 
This file attachment action requires either AppsFidelity or other extensive coding. Subsequent topics in this series will not be similarly focused, but I wanted one last opportunity to invite you to  try AppsFidelity by requesting an AppsFidelity evaluation license. See the ways AppsFidelity can empower your applications, both for web only and web/Notes applications, and for Classic or XPage apps.
 
All topics in the series
 
  
Tue 12 Jun 2018, 02:59 PM

Collabsphere through the years

I am presenting a session at Collabsphere 2018, the successor to the well-respected MWLUG conference which has grown more and more vital over the past few years. If you are in the U.S. or Canada and haven't been able to get over to Engage or other overseas conferences, don't miss this. As an IBM Champion this year, I have had to look around and see which conferences might make sense, and this was an easy choice. Supported by IBM enough to get the inside information, but independent enough to hear more than IBM marketing, this is a conference worth the cost. Not that it costs much. A great hotel rate, negligible entry fee, and a reasonably priced city all make this an easy sell to your company, especially with the critical changes coming to Notes/Domino and the rest.

As for my session, the details are below. I promise it will be a good session, but I also promise you are likely to get even better information by hanging out with me at lunch or chatting in the halls. That is where some of the best discussions happen, and where a lot of the positive changes you'll see in Notes/Domino 10 were bandied about in previous years.

The ROI of Data - Building on your company's existing investment 
Often neglected in the quest for better, faster, easier applications is the invested value in the data, both new and old, that makes your applications more than demoware. Whether converting a Notes client application to a MEAN stack mobile app, or taking an existing Domino web app and building new connections and features, or building reports on a collection of data created and stored by a mixture of applications, there are techniques and methods to get more bang for your buck.

In this session, we will discuss the kinds of data available, not all of it obvious, techniques for normalizing the data for analytics without losing the strengths of NoSQL, and how to unbundle and use data stored in rich text, MIME, attachments and more.

Tags:

Mon 30 Apr 2018, 09:24 PM
There's been a lot of talk about modernization, and it has only accelerated with the enthusiasm surrounding Notes/Domino 10 and IBM/HCL's renewed emphasis on getting things done and getting them right. You may have even seen the slew of blog posts and advertisements by various well known, and perhaps less well known, companies. You can webify. You can mobilize. You can move the whole shebang into Mongo DB or another JSON database, and it all sounds spiffy and easy.

Now, maybe it is. Let's just say that the software does everything that's been promised. After all, there are many good, solid companies with a ton of tech know how. I'm friends with people in lots of these companies, and they believe in what they have to offer, so I believe them.

Now, you may think I'm coming out with yet another modernization tool or service or whizbang framework, but I'm. I encourage you to look at all these options and how they'll work. But remember, they're in the business of selling you planters. They're not so interested in transplanting your plants. If you are starting a whole new garden, that's great, but if you have years worth of carefully cultivated plants, you might give a thought to those.

At Genii Software, we can work with any of those companies (or none of them if you just want to export), but our speciality is moving the precious plants. Whether they are taking your data, rich text and otherwise, to Mongo DB or SQL or SharePoint or XPages or mobileFrameworkXQZ, we can help it stay intact and healthy. 

So, go shop for modernization tools or services, but no matter which you choose, give us a call and we can make their planters look happy, healthy, intact. Your plants (content) deserve it.

Send an email at sales@geniisoft.com or call us at +1 (216) 991-5220 and see how we can improve your modernization, no matter who you use. Nobody does data conversion better.

Nice planters - dead plants (without Genii)

Planters with dead plants symbolizing lousy data conversion without Genii's products


Nice planters - live plants (with Genii)

Planters with healthy plants symbolizing great data conversion with Genii's products



Tags:

Wed 21 Mar 2018, 01:59 PM
I am excited that so many customers and partners are excited about Notes/Domino 10 and all that it can do. Even aside from the new features (which sound awesome), the excitement will get some reluctant companies spending on Notes/Domino again, and what infrastructure wouldn't be helped by an occasional revisit.

But my guess is that the solutions and features will not sufficiently address a nagging problem (which I most conveniently have a solution to). It may be that IBM/HCL will pour the resources in to properly convert Notes rich text to HTML/MIME, given that it is used at the very least in a) email, b) web rendering, c) REST services that deliver content, d) mobile apps, e) Traveler/Verse, f) etc.

Let's look at what AppsFidelity can do for example, what it has been able to do for many years while IBM has not been pouring resources in.

A table in the Notes client

Table in Notes client



Table rendered by the Domino 9.0.1 web server

Table rendered badly by Domino 9.0.1



Table rendered by the Domino 9.0.1 web server using AppsFidelity (no code changes or agents)

Table rendered well by AppsFidelity

See any difference? All this is done with an extension manager plugin which doesn't need to touch the design. It works with REST, with  web browser, with  XPages, with mobile apps. So, if IBM/HCL isn't going to pour the resources in to do this properly, you should know that you can fix it by getting a license to AppsFidelity. You can do it today, just as you could have done it a year ago or even ten years ago. Sure, it has improved since it was a Beacon Award runner up in 2006, but it has consistently been better than the Domino web engine. I'm betting it still will be in Domino 10.

Makes you wonder why IBM and HCL don't know about it.  

Try AppsFidelity yourself. Request an evaluation license today.

Tags:

Tue 7 Aug 2018, 03:59 PM
I am working with a Notes/Domino customer with a large quantity of email in Notes databases they wanted archived outside of Notes, and they are considering  CoexLinks Migrate. At first, they seemed dubious about the importance of how well email renders (a topic as exciting as mixing cement), but one of the people in the meeting had come across a blog post I made about forms that had been mailed where data disappeared when rendered. Disappearing data caught the attention of the lead person, who asked that I demonstrate. The only problem is, the customer is still not sure whether they want the email archived as EML or HTML, possibly both. 

The scenario is quite simple and happens all the time. A user is looking at a form, and forwards it to somebody else with a question or request for action. Since Notes rich text forwards well, they think nothing of it, and the content shows just as it did in the database. But when it leaves Notes, whether right then as an email or later when archived to another format, more than the appearance is lost.

I can't share customer data, so I used a simple example from a Notes database I use to track orders and maintenance. It has some common form elements, nothing fancy. Note that this same engine with some variants is used for CoexLinks FidelityCoexLinks Journal and CoexLinks Migrate, and a similar engine is used for application data with AppsFidelity.

As I mentioned before, the compelling part of this is not just what is preserved, but that it may be your last chance to preserve it. The customer never wants to deal with the Notes databases again, so this is a last chance to get the data out. It better all be there, or it is effectively lost.

What may be lost when archiving/emailing outside of Domino without CoexLinks
Inline JPEG image


1) Notes form open in Notes client (original data+looks)
Inline JPEG image



2) The form forwarded via Notes email, still in rich text (data+looks preserved)
Inline JPEG image



3) The email archived to EML using simple File Save... or native API (data+looks lost)
Inline JPEG image



4) The email archived to EML using CoexLinks Migrate (data+looks preserved)
Inline JPEG image


5) The email archived to HTML using CoexLinks Migrate (data+looks preserved)
Inline JPEG image


Fill out a CoexLinks Migrate evaluation request and try for yourself,


6) The email as it arrived in Outlook 365 using Domino email (data+looks lost)
Inline JPEG image



7) The email as it arrived in Outlook 365 with CoexLinks Fidelity (data+looks preserved)
Inline JPEG image


Fill out a CoexLinks Fidelity evaluation request and try for yourself,

Tags:

Sun 15 Sep 2013, 09:10 PM
While there are different ways to create JSON output, this is a sample of how it looks when Midas V5 generates data from IBM Notes, including Notes rich text aand images. Please note that the formatting is due to JSONLint where I was validating the output, as a long stream of JSON is not too identifiable, and Midas defaults to unformatted JSON because it is is more efficient. The top is a screen capture pf the first of the four documents from the search results. The bottom is the JSON output for that document, though it is truncated on the right. You might notice that the rich text image is rendered in-line, allowing the calling program to forego any reference back to the source, That is due to the DataImages paramter I wrote about previously.

The full agent (full text search in Curb Appeal database for 'Lyndhurst'):
Option Public
Option Declare
Uselsx "*lsxrtc"

Dim fullstr As String

Sub Initialize
   Dim gColl As New GeniiCollection
   Dim txtstr As String 
 
   Call gColl.AddByFTSearch("""CurbAppeal.nsf""Lyndhurst""")
   On Event ActOnText From gColl Call ActOnText
   Call gColl.GenerateJSON(""|DataImages='32000' OutputToEvent='Yes' charset="iso-8859-1"|)
   Print "Content-Type: message/rfc822"
   Print ||
   Print fullstr
End Sub

Sub ActOnText(Source As GeniiCollection, textstr As String)
   fullstr = fullstr+textstr
End Sub


The images:

Screen capture of Notes document.


Screen capture of part of the JSON generated by the Midas LSX Version 5

Tags:

Mon 15 Jan 2007, 07:29 PM
This worked so well before, I decided to do it again.  This message is addressed to those customers, and to those who make and sell applications and solutions, who will be attending Das EntwicklerCamp 2007 in Gelsenkirchen, Germany in February.  (If you are not attending, and you live or work anywhere near Gelsenkirchen, I suggest you seriously consider this excellent conference.  It promises to provide a lot of value for the cost.)

Dear Customers, Notes/Domino Product Vendors, ISVs and Application Designers,

I am not comfortable spamming people with e-mail messages about our products, but I wanted to invite those who come here of their own accord to consider ways in which our products could enhance your solutions.  To paraphrase BASF's famous marketing slogan... (read on)
Mon 18 Jul 2005, 04:47 PM
One of the problems with writing software is that you can test it until you are blue in the face, but you simply can't foresee everything.  One of the mixed joys in a software developer's life, therefore, is facing the worst case scenario, where it feels with a particular customer like you haven't foreseen anything.  This has been happening to me on two fronts recently, one with CoexEdit and one with our Midas Rich Text C++ API.

You might wonder why I would refer to this as a "mixed joy".  It certainly isn't fun, even if there is the occasional thrill as you manage to overcome each hurdle.  It is a joy, however, to identify the problems and scenarios that your customers will actually face.  A known evil is almost always better than an unknown one.

In any case, the CoexEdit issues are to be expected, as there are only a few "real" customers, and we were bound to face some hurdles early on.  The problems in this case are not to do with the CoexEdit engine itself, which has been remarkably solid.  They all have to do with configuration and settings and JavaScript and that sort of thing.  Here are a few of the problems we have faced recently with this customer:

1) Generate HTML for all fields property

Problem
The sample db using FCKEditor worked fine, but when the customer added the code to his database, it didn't work at all.  It wasn't just CoexEdit which didn't work (it didn't even get to that point).  The FCKEditor edit control didn't work at all.  After a certain amount of banging my head against the wall, I discovered that the customer's form had the Generate HTML for all fields value set, which completely screwed up the FCKEditor implementation we shipped to start with.  That implementation uses innerHTML, and needs to not have a field called Body (or whatever) specified on the document.  I tried to hide it in various ways, and I tried to talk the customer out of using the setting, but they need it.  Sigh!
Inline JPEG image

Solution
This had a pleasant ending, since it forced me to learn about and figure out how to use the ReplaceTextarea method in FCKEditor.  The new sample we will ship will use that setting, which matches the functionality is several other editors, and which works with the Generate HTML for all fields setting.  It also does better with large quantities of data and is a bit easier to add.  Score one joy.

2) OnLoadJavaScript event

Problem
This was a stinker.  Again, I couldn't get a form to show the FCKEditor editing controls, but the HTML source looked practically identical to the form in the sample.  I kept adding fields and settings to the sample to match the form that wouldn't work, and followed lots of red herrings before realizing that the new ReplaceTextarea approach was using a 

window.onload = function()

function and the form had a small OnLoad JavaScript event.

Solution
Once I found it, this was easy to solve.  I just moved the OnLoad code down into the subform's window.onload code and everything worked fine.  Still, it means I need to be sure people understand that if there is an OnLoad JavaScript event, it needs to be combined with the FCKEditor usage.  Annoying, but better to know than to now know.

3) WQS agent

Problem
Even after getting everything else working,the changes made from the web were not saving.  I turned on the CoexEdit debugging, even went into the C++ debugger, and I could see the changes were happening, but they were not showing up.  I checked every database setting, looked for scheduled or reactive agents, then finally found that there was a Web Query Save agent that was overwriting the changes in an earlier attempt to solve the problem CoexEdit was designed to solve.

Solution
Once I found it, this was also easy to solve.  I just removed the offending code, and added yet another note to our trouble shooting db.  It is OK to have a WQS agent, and it can even modify the document, but it shouldn't modify the rich text field.

These may not sound that dire, but I have been working on solutions on and off for many days.  Fortunately, this customer has been very patient, partly due to a strong desire to have CoexEdit working for them.  Whatever the reason, I appreciate their patience, and am glad I now have some additional items to document and remember for future implementations.  With any luck, I can find ways to make the samples even more bulletproof so that these considerations won't have to be taken into account.
Mon 12 Jan 2009, 05:45 AM
I am a huge fan of Lotus Notes.  I have based my business, my livelihood, my children's college educations, on Lotus Notes.  But I believe one can applaud the product while still raising hell about a deficiency in it.  I have been accused, perhaps fairly, in coming up with an extreme case of formatting that would not normally be expected to render properly.  So, I decided to go back to basics and try again with IBM's formatting.  The following is the Notes Client (8.0.1) Help topic "Sending a message" which I got to via Help - Help Contents - Lotus Notes - Mail - Sending a message.  It would be hard to argue that this is not something a user would see, or formatting that would not be used, yet after IBM's MIME conversion, it renders like a nicely formatted web page from which someone deleted the CSS file.

(read on) to see the results.

Tags:

Wed 20 Feb 2008, 03:20 PM
This worked so well before, I decided to do it again.  This message is addressed to those customers, and to those who make and sell applications and solutions, who will be attending Das EntwicklerCamp 2008 in Gelsenkirchen, Germany in February.  (If you are not attending, and you live or work anywhere near Gelsenkirchen, I suggest you seriously consider this excellent conference.  It promises to provide a lot of value for the cost.)

Dear Customers, Notes/Domino Product Vendors, ISVs and Application Designers,

I am not comfortable spamming people with e-mail messages about our products, but I wanted to invite those who come here of their own accord to consider ways in which our products could enhance your solutions.  To paraphrase BASF's famous marketing slogan...

(read on)

Tags:

Wed 27 Apr 2005, 11:19 PM
A question came up tonight about using the AppendResource method from the Midas Rich Text LSX  to include an image resource from a different database into the rich text.  It so happens that this is available, although not documented, because we added it to Midas before Domino Designer allowed this, when the remote db was only identified in the API and was not documented.  I didn't know whether support for this would make it into the final product (this was during ND6 betas), so I didn't document the properties, but ND6 has been out, and has allowed remote image resources, for a long time, so here goes.  I will adjust the documentation, but in case you ever wondered, here is how you do it... (read on)
Sat 24 Jan 2009, 09:13 AM
In Part 1, I showed how IBM's rendering of MIME messages could lead your customers to think you were still running Notes R5, and how our upcoming iFidelity (sign up for the beta) would allow you to send out more professional looking email, rendered as it is in Notes.  In Part 2, I showed how content rendered by Domino on the web was likely to make prospective customers think twice, or more, before buying Lotus Notes, and how CoexEdit could dramatically improve that default rendering.  In Part 3, I showed how rendering is made even worse when the rich text is edited on the web, and how CoexEdit can improve that process as well.

In this post, I am moving back to email, and specifically the issue of Signatures.

I have a confession to make.  I don't use a mail signature, so I was not really aware of the issues involved, but I sure heard an earful at Lotusphere.  I will probably make a longer post about email Signatures when I have a chance to fully research the topic, and it is even possible that I am missing something now, so please feel free to correct my impressions if you know something I don't.

I decided to make myself an HTML signature, as that should give me some real control over appearance.  (Unfortunately, I forgot we were dealing with Lotus Notes.  Whacks head with palm of hand.)  So, I created a nice little signature in HTML, using a single table with some nice borders and padding, then checked it in both Firefox and Internet Explorer to make sure it would look good.  Here it is, first as originally intended, then as inserted into a Notes 8.5 client, then finally as received by another Notes 8.5 client using the generally preferred Notes 8.5 client rendering.  Of course, complaining without proposing solutions is just annoying, so I suggest you try this with our iFidelity beta and see what a difference a professional signature can do for your image.

(read on) to see the images, but brace yourself. It isn't pretty.

Tags:

Sat 1 May 2004, 11:41 AM
I must admit I was astonished when Rocky called me up to say that because you can't export to MS Word in Notes 6, his client was going to use our Midas Rich Text LSX to export to MS Word.  Now, I wasn't surprised that he would think to use Midas, as we have lots of customers who use it for this purpose.  I wasn't surprised that Rocky called me, because he calls me quite often, and not infrequently it is about using Midas for a customer.  What surprised me was the news that Lotus Notes 6.x doesn't even have MS Word as an option when exporting from Notes 6.  Not even the traditional "Microsoft Word 6.0" which they had in R5.

What the heck?  I started looking, and came across this technoteExport Options in User Interface and the @Command FileExport Are not Available or Result in an Error, which shows that the only exports supported by the File Export command are:
  • ASCII Text
  • CGM Image
  • Microsoft RTF
  • TIFF 5.0 Image


which seems to me a pretty short list.  In addition, it says that you can't really use any of the other documented export types for @Command([FileExport]; ...) because they will all give errors.

Now, I like the fact that people buy Midas to export to MS Word, I really do, but I am truly embarrassed that you would have to.  This is 2004, and IBM has taken away the ability to export to anything, even MS Word 6.0.  Here is my favorite excerpt from the technote
Workaround:
In some cases the 'Microsoft RTF' export option may suffice as a substitute type if the target application also has a matching import option. Beyond that, if the desired filter does not exist then use a Notes 5.x Client to perform the export.

I am speechless.  OK, not entirely speechless.  I have just enough voice left to encourage you to check out our sample database Export to MS Word to see that it is possible to have a high quality export to MS Word, even one that works with MS Word 97/2000 and beyond.  (If you have tried it with Midas Version 3.20a, try again once Midas Version 3.30 is out, as both the export and the sample are improved and easier)

Think it won't make much difference?  Look at the four screen shots below.  The first is from Notes 6.0.2.  The second is the same document exported to Microsoft RTF.  The third is the same document exported to MS Word using the R5 export DLL (which you can actually call using Midas' Export method, if you like, even in ND6).  The fourth is the same document exported using Midas 3.30 and the new sample db.  I just took a piece of each for size reasons, but if you try the sample out, you can see what I mean with the whole document.  (Don't forget that you will need an evaluation license for Midas)... (read on)
Thu 13 Jan 2005, 08:45 PM
Just this once, I want to address this message specifically to a subset of the readers of this blog...

Dear Notes/Domino Product Vendors, ISVs, Application Designers and Resellers,

I am not comfortable spamming people with e-mail messages about our products, even though a number of companies do just that in this pressured pre-Lotusphere season, but I wanted to invite those who come here of their own accord to consider ways in which our products could enhance your solutions.  To paraphrase BASF's famous marketing slogan:

We don't make many of the Notes/Domino applications you buy.
  We make many of the Notes/Domino applications you buy better.

That's right, it isn't just developers adding cool whiz bang dynamic tables who buy our products.  It is also vendors like you, including those in over ten countries around the world, who design, build, enhance, resell and support... (read on)
Tue 7 Mar 2006, 10:47 PM
Earlier today, I blogged about focusing on not changing things .  I thought I'd give an example.  I swiped copied Alan Lepofsky's cool new signature block that he likes to use on posts in the Notes forums, and I put it through the test.  By the way, Alan's Lotus Notes Tips and Tricks Blog is an excellent source of tips and tricks of his own.  I highly recommend it!

I have a test database called To MIME and Back Again, so I put his signature block in a sample document there and then ran it through the conversion to MIME (using Notes 6.5.3) and then the conversion to rich text (you can see by the subject).  I then tried taking the same signature block and, in a separate test database, created a form with the Store contents as HTML and MIME checked for the body field, then simply saved, closed the document and re-opened.  This effectively does the same conversion to MIME and back as I did, except without the Midas engine to assist.  Here are the results:

Original signature block as it appears in Notes:

Original signature block

Signature block after being converted to MIME and Back Again with Midas:

Signature block after conversion by Midas

The results are not perfect (yet).  The table borders, font size and text alignment are all correct, but there should be a space after the end of the hotspot and before the word Blog.  More work to be done.  But let's compare with the standard Notes conversion and rendering.

Signature block after being converted to MIME and Back Again with Notes engine:

Signature block after conversion by Notes
Actually, I had to cheat and shrink the size of my window to make this look even this good, as the RT to MIME to RT conversion lost the fixed widths along with messing up the borders and the font size, so this extends to the full width of the available document, which is too wide for this blog.  Not quite as cool now, I'm afraid.

But I am not done playing with Alan's table.  Later, or maybe tomorrow, I'll show how you this renders on the web, and how to make it render better... without using Midas or any other third party products.
Sun 30 Jan 2005, 09:48 PM
This worked so well for Lotusphere 2005, I decided to do it again.  This message is addressed to those customers, and to those who make and sell applications and solutions, who will be attending Das EntwicklerCamp 2005 in Dortmund, Germany in February.  (If you are not attending, and you live or work anywhere near Dortmund, I suggest you seriously consider this excellent conference.  It promises to provide a lot of value for the cost.)

Dear Customers, Notes/Domino Product Vendors, ISVs and Application Designers,

I am not comfortable spamming people with e-mail messages about our products, but I wanted to invite those who come here of their own accord to consider ways in which our products could enhance your solutions... (read on)
Wed 4 Oct 2006, 03:59 PM
CoexLinks 2.7 logo
Yesterday, I posted a comparison of support for rich text tables in the Midas Rich Text 3.61 and Notes 7.x.  After thinking about it, I wondered if the following format would be preferable.  This is just a partial table, but I will update with a complete table if people like the format.  The two changes are that the color now indicates the support or lack thereof, and I indicate the methods or properties or technotes which support such a feature in Midas.  What do you think?

Tables - Feature
Support in Midas Rich Text 3.61
Support in Notes 7.x rich text classes
Create new regular table
Supported (AppendTable)
Supported
Create nested table
Supported (AppendTable)
Supported
Access regular table
Supported (DefineChunk)
Supported
Access nested table 
Supported (DefineChunk)
Not supported
Create tabbed table
Supported
Modify tabs after creating
Supported (RowLabel)
Not supported
Set tab font and appearance
Not supported
Create programmable table
Not supported
Create animated table with various settings
Not supported
Modify type of table (tabbed, programmable, animated) on existing table
Not supported
Set cell border style and color
Not supported
Set drop shadow value
Not supported
Set row and column spacing
Not supported
Set table left and right margins (whole table, not cells)
Not supported
Set cell width on creation
Supported (AppendTableAppendRow)
Supported
Table to be continued if people like this approach

Tags:

Fri 5 May 2006, 09:41 AM
Well, it has been three years since my first post on this blog.  I wasn't sure when I started how long the energy would last, and whether I would have useful things to say.  461 posts later, with 1811 comments (aside from the spams that have been deleted), I still don't know how useful it has all been, but I know it has been fun.

If I had to name a few highlights, they would be the Rich Text 101 series, the Mike Midas and Crystal Coex stories (I should get them to guest blog more often), the Hypothetical Carrots post perhaps, and definitely the Dating Tips #1 and #2.  I have enjoyed coding challenges and odd bits of poetry.  I have gone on rather a lot about our products, and a bit about my various trips to Germany, the Netherlands and elsewhere.  Along the way, I seem to have picked up rather more readers than I would have expected, and I appreciate your all coming along for the ride.

I can't promise another three years, because I still don't know how long the energy will last and whether I will have useful things to say, but for the moment, I guess I will keep on keeping on.  Thanks for being here, and keeping me honest.

Tags:

Thu 4 Sep 2014, 08:24 AM
A question came up from a viewer after watching Domino Blog to WordPress using CSV about what differences there were between exporting to CSV using our Export to CSV logic vs. exporting from a custom view to CSV using File -Export. The primary differences and similarities are shown below:
 
Export featureExport to CSV - MidasExport w/ custom view
Summary items (number,date, etc.)
Fully supported
Fully supported
Rich text and non-summary fields
Fully supported
Not supported
Formulas excluding @DbLookup, etc. and excluding special view formulas
Fully supported
Fully supported
Formulas using @DbLookup, etc, pulling data from this or other databases
Fully supported
Not supported
Special view formulas
Not supported
Fully supported
Extraction of attachments, images for external referencing
Partially supported (files attached to document but not in an included rich text field will only be extracted if the separate HTML rendering is included)
Not supported
Export from db where additional views not allowed
Fully supported
Partially supported (only existing views can be used)
Export from db with hidden design (so that additional views not allowed)
Fully supported
Partially supported (only existing views can be used)
Separate HTML rendering of whole document with filename column reference in CSV
Fully supported
Not supported
Separate Web Archive (.mht) rendering of whole document with filename column reference in CSV
Fully supported
Not supported
 
Mon 29 Jun 2009, 09:47 PM
For many years, I have heard stories about how users have mentioned Lotus Notes, and gotten confused responses from others who equate Lotus Notes with Lotus 1-2-3, and think the product disappeared long ago.  I had not had that experience personally until recently, when I had it twice in three weeks, once with a college friend of my wife and once with a man who works with "Unix software development" and initially asked, "Didn't that disappear in the 1970's?", and when I replied that he was thinking of Lotus 1-2-3 (though even then he is inaccurate), and I was speaking of Lotus Notes, said, "Well, pretty much the same thing.  Nobody actually uses it anymore, do they?"

I could draw snarky, and probably undeserved, conclusions about IBM marketing or public perceptions, but I have a different point to make.  These are people who know nothing about Lotus Notes, nothing about the corporate email wars, nothing about standards.  My wife's friend, the Unix developer, my parents, a couple of neighbors - they know nothing at all about these issues that consume our time and focus.  And yet, when my wife goes on to say that I have a new product, and they ask politely what it is, she is able to explain.  She just says, "You know how sometimes you email somebody, and when they reply, your original email looks terrible?  His product fixes that."

Then something happens that has never happened to me in my life as a software developer.  People who know nothing about Notes or email fidelity or standards light up - my wife's friend, my Dad, my neighbor - and they say, "Yeah, I know just what you mean.  Do you think his product could fix my email?"  People get it.  They understand what I'm doing, and they want it for themselves.  Not people who think making rich text dance is hot stuff, or people who are worried about the coexistence of doclinks between Domino and Exchange, but ordinary folks who not only aren't part of the choir, they don't even know the choir exists.

You may ask yourself (if you have gotten this far), "So, what does this have to do with me?"  Well, think about it a minute.  I'm not likely to sell my wife's friend or my Dad or my neighbor on Notes, but what about a small business owner who uses Gmail and curses because it is limited and messes up emails to clients?  What if you could talk about Lotus Foundations, and say "Your email will get to your clients looking just like it left your mailbox, even if it is fancy and carefully formatted"?  Don't even mention iFidelity - talk about the results.  If my Dad can perk up about email - he uses a free email service that probably has more ads than features - imagine if a restaurant owner who wants to impress customers heard about a truly full-featured email client that sends mail which looks crisp and professional without paying a service to create fancy HTML emails.  He or she might just perk up too.

This is functionality that people get, not just here in the choir room, but out there where people aren't listening yet, but might be persuaded.

Tags:

Mon 13 Jul 2009, 11:54 AM
Just to be clear, I am simply trying to learn about this topic, and do not currently have any iFidelity magic to make it better.  I am not even (entirely) certain that what Lotus iNotes is doing is wrong, or whether it is simply a design decision with some unfortunate ramifications.  I mentioned in one of my iFidelity posts that the:
Dojo editor seems to strip out some colors (including the "Geek" in SpamGeek), so now I have to see if I can find a work around for Dojo bugs
It turns out I was incorrect, and that it has nothing to do with Dojo (as far as I can tell), and is a problem back in 8.0, and possibly earlier (although I have not verified yet).

The issue is with MIME emails (ones with HTML) that are displayed in Lotus iNotes.  These are different than rich text emails displayed in iNotes, because in general, you might think that iNotes could simply display the HTML part and let the browser handle it.  Unfortunately, there are valid reasons for the HTML to be manipulated, especially if there are images stored in the message.  In a MIME email, an image may be referred to by URL if it is available on the Internet, or by CID (content-id) if it is stored in the message.  Since the browser would not know how to find the content-id referenced image, the HTML must be modified.  Similarly, sometimes the HTML is modified to ensure that the content doesn't sneak out of the iNotes frame, as in this LinkedIn message with a sprite:

<h3 style="background:url(http://www.linkedin.com/img/sprite/sprite_nus_digest_2.gif) 0 -60px no-repeat; padding: 5px 0 5px 25px; color:#666; margin-bottom: 0; font-weight:normal; font-size: 13px">CONNECTIONS</h3>

which gets stripped to 

<h3 >CONNECTIONS
</h3>

But notice what got stripped out is not just the background image, but the (text) color, font-size, font-weight and margins.  Still, perhaps IBM's preprocessor takes a better safe than sorry attitude when there are any background graphics or that sort of thing.  Not smart, but possible.  What it doesn't explain is the following:

<font size="4" face="sans-serif"><strong>Spam
</strong></font>
<font color="#0000ff" size="4" face="sans-serif"><strong>Geek
</strong>
</font><font size="4" face="sans-serif"><strong> 
for Domino - SMTP Log
</strong></font>

which looks like this:  Spam Geek for Domino - SMTP Log

gets stripped to:

<font size="4" face="sans-serif"><strong>Spam
</strong></font>
<strong>Geek
</strong>
<font size="4" face="sans-serif"><strong> 
for Domino - SMTP Log
</strong></font>

which looks like this: Spam Geek for Domino - SMTP Log

I can't figure out what rule the preprocessor thinks it is following, and there are many similar cases where either the style or font attributes are stripped out.  Since I can't figure out the rules (yet), I have not been able to come up with really solid answers (yet), although I have discovered some ways to make it more likely that Lotus iNotes won't strip out styles and colors when it shouldn't.

Tags:

Tue 6 Sep 2005, 09:33 AM
A customer asked why when they request an evaluation license, it isn't just sent automatically.  It is a valid question.  There is certainly no technical obstacle, as it would be easy to generate an automatic e-mail.  So why?

The reason is that it gives us a chance to respond both to what is asked and what is not asked... (read on)
Thu 1 Sep 2005, 04:53 PM
There was a post on the Gold forum where a person asked:<blockquote>I've got one document with a table (1000 rows) and I want to transfer this table into 1000 single documents. Each row one document. I get the table and the cells with a NotesRichTextNavigator. With normal text it is ok, but when I have a cell with an embedded image, I don't get the image.

If the cell has a doclink, I get the doclink with FindFirstElement(RTELEM_TYPE_DOCLINK), but how do I get an image?

Any ideas?</blockquote>Doug Cohen who works for SUNY (State University of New York) suggested that the person try our Midas Rich Text LSX.  He did, and I just wanted to share this code, which is the sample I created which does the job even more easily than I had thought.  The following code works even if (as I created in the sample) there are doclinks, images and nested tables.  Pretty good for 35 lines of code, wouldn't you agree.  I am putting this up as a sample database on our website tomorrow if anybody wants to try it out.  Look for the Parse Table sample.  Oh, and thanks to Doug Cohen!  We depend on people like Doug for word of mouth recommendations, and we appreciate them immensely when they are given publicly like this,

Sub Initialize
   ' *** Domino class objects
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim newdoc As NotesDocument
   
   ' *** Midas class objects
   Dim rtitem As New GeniiRTItem
   Dim rtchunk As GeniiRTChunk
   Dim rtchunk2 As GeniiRTChunk
   
   Dim new_rtitem As New GeniiRTItem
   Dim new_rtchunk As GeniiRTChunk
   
   ' *** Cycle through each row on the rich text, creating a new document for each and then
   ' *** appending the chunk which is inside the table cell.
   Set db = session.CurrentDatabase
   Set doc = session.DocumentContext
   Call rtitem.ConnectBackend(doc.Handle, "Body", False)
   If rtitem.IsConnected Then
      Set rtchunk = rtitem.DefineChunk("Table 1; Row 1")
      While rtchunk.Exists
         Set rtchunk2 = rtchunk.DefineSubChunk("Inside Column 1")
         Set newdoc = New NotesDocument(db)
         newdoc.Form = "Example Form"
         Call new_rtitem.CreateBackend(newdoc.Handle, "Body")
         Set new_rtchunk = new_rtitem.DefineChunk("Everything")
         newdoc.Subject = doc.Subject(0) + " (contents of "+rtchunk.Definition+")"
         Call new_rtchunk.AppendRTChunk(rtchunk2)
         new_rtitem.Save
         rtchunk.GetNextTarget
      Wend 
   End If
End Sub
Wed 11 Jan 2006, 10:01 AM
Continuing the customer inspired list of the top ten ways to use Midas which I started yesterday with MRTYB with Midas #10 - Rich text comparison with red-lining , I now offer #9...






#9) Manage doclinks, URL links and link hotspots

Description
Midas gives you the power to create, read and modify all sorts of links, including doclinks, view links, db links, anchor links, and URL links.  These can be created or modified even if they are link hotspots, and can be created either directly with the component parts, or indirectly using automatic cross referencing using our SmartRefs technology.  By the way, we refer to link hotspots as hyperlinks in the Midas documentation.

History
Doclink creation and manipulation have been in Midas since Version 1.0, released in June, 1997.  The functionality has been enhanced to take advantage of new rich text constructs such as anchors, URL links, HTML properties and target frames.  New enhancements continue to be made to ensure that Midas make link manipulation as easy and powerful as possible.

Comparison with standard Notes/Domino functionality
While Notes 6.x has finally been enhanced to include basic manipulation of doclinks, there are many features which are missing from the standard Notes classes such as the ability to create URL links, the ability to create anchor links, the ability to set HTML properties and target frame for both new and existing links, the ability to change a set of links based on existing attributes without stepping through each link, and the ability to use automatic cross referencing and existing chunks to create new links.

Documentation
Documented in the Help database by looking at the properties and methods associated with creating and modifying links, including: AppendLink method, ChangeDoclinks method, LinkReplicaID property, LinkViewUniversalID property, LinkNoteUniversalID property, LinkAnchorText property, LinkURL property, LinkHintServer property, LinkPopupText property and the SetTargetProperties method.

On-line demo
None available at this time.

Sample Database
Change Links (Notes client) Doclinks/Hyperlinks
This is more of a tutorial/testing tool than a sample database, but it has been put here for now to facilitate those people seeking to work with doclinks

Doclinks to NDL or Notes URL (Notes client, Web browser) Doclinks/Hyperlinks
This sample contains agents to convert doclinks, view links and db links to external formats that can be used outside Notes to open Notes to the specific document, view or database.

Valid Links (Notes client) Doclinks/Hyperlinks
Example shows how links of all sorts (db, view, doclinks, as well as URL links) in rich text fields can be validated, and a report generated of broken links.
Sample Scripts
This is take from the Help database entry for the AppendLink method:

' *** Create a doclink
Call rtchunk.AppendLink("", db.ReplicaID, myview.UniversalID, doc.UniversalID,
                        "Click to view...", db.Server)

' *** Create a link hotspot to the Categorized view
set myview = db.GetView("Categorized")
Call rtchunk.AppendLink("Categorized view", db.ReplicaID, myview.UniversalID,
                        "", "Click to see view...", db.Server)

' *** Create a URL hotspot
Call rtchunk.AppendLink("Genii Home page", "http://GeniiSoft.com")

' *** Create a URL mailto hotspot
Call rtchunk.AppendLink("Send us mail", "mailto:Sales@GeniiSoft.com")

This is take from the Help database for the ChangeDoclinks method:

' *** Change hint server to "MyServer"
Call rtchunk.ChangeDoclinks("", "", "", "", "MyServer")

' *** If doclinks reference olddb, change to reference newdb and newview
Call rtchunk.ChangeDoclinks(newdb.ReplicaID, newview.UniversalID, 
                            "", "", "", 
                            olddb.ReplicaID)
Thu 24 Mar 2016, 02:03 PM
After the relatively simple data mining example I showed previously using the Midas LSX, I thought I'd show a more useful example. In this, I want to find duplicate file attachments, whether or not they have the same name. This could be tracking down how a particular attachment has been circulated, or simply finding out whether replies and replies-to-replies have duplicated the same attachment many times, wasting valuable space. This could obviously be done with any database, but I wanted to use a real example rather than a demo example.

The basic concept here is that I generate an MD5 hash value for each file attachment and save the hash value, the file size and the attachment name into a line in a CSV file. Again, no additional programming necessary, I just used the Export to CSV sample db. Here is what I found. The top red arrow points to the item I moused over. This is a file called licmidas.lic, an old license file for our Midas LSX, but clearly it has been sent a few times, or has been left attached as the replies and replies-to-replies have been used. 

Below that, the row of red arrows shows that the file attachments has different names. The numbers are the file sizes, all the same obviously for identical files. In this case, the same attachment has eleven different names. (These happen to be image attachments created by one of our customers every time they reply.

Inline JPEG image



By simply viewing the data, we can see the UNID of the documents where the attachments live, so we can go and deal with them.


Inline JPEG image


We can do the same with embedded images, as well as some other rich text constructs I will show another time. As an example of how the duplicate images could be useful, imagine that your company needs to track the use of a licensed image that appears on various web pages. This could ensure that they were all found, even though images don't have an internal name to make them easy to find.

As before, here is the Export Directive I created in the Export to CSV sample. (This uses a soon-to-be-released version of the Midas LSX.)

Inline JPEG image


Update: I created a more specifically useful visualization for my own email database, so I thought I'd add it here.

Inline JPEG image
Fri 17 Oct 2014, 10:58 AM
Last night, Genii Software released CoexLinks Fidelity Version 3.65. This release incorporates three major updates as well as bug fixes and minor enhancements since the previous release. Version 3.65 is currently available for Windows 32-bit and Windows 64-bit, and it is planned that the Linux version will be available next week.

Update 1 - 30% performance enhancement
With a complete code review and numerous changes to streamline, we have achieved a 30% or better improvement in email processing. While most customers won't see a lot of difference because the performance was very good even before these changes, those with heavily loaded systems may see a decrease in bottleneck situations where messages where sometimes backing up in the mail.box database. This performance enhancement is separate from the multi-processing mode below which can also have large performance benefits.

Update 2 - Support for Multiple Message Store databases
Customers using the Message Store feature extensively are now able to specify multiple databases, and CoexLinks Fidelity will cycle through the Message Stores to distribute the load. While a single Message Store database is enough when the feature is implemented for only rare message formats, multiple Message Store databases make sense for customers who configure the feature to trap a larger percentage of emails, or who use encrypted mail extensively.

Update 3 - Multi-processing mode with Enhanced Crash Protection
It is quite common for a hub or gateway server to have multiple mail.box databases to allow smoother, faster processing by the Router task. In this mode, the CoexLinks MsgProc task can spin off a separate process for each mail.box, allowing parallel processing and preventing bottlenecks if one mail.box gets backed up. In addition, the multi-process mode allows enhanced crash protection so that if a badly corrupted rich text message manages to crash the rendering engine, the process will detect the crash, log the message which caused the problem and shut itself down. The process manager will then detect that the process is gone and will restart, skipping the offending message. Note that this is extremely rare, but even if it happens in one out of a million messages and a customer has three hundred thousand emails a day, the crash could theoretically happens once every 3 to 4 days. With this feature enabled, processing will go on without pause, and the offending message can be identified and analyzed so that a similar crash can be avoided in the future. 

The following console messages show how the multiple process happens. Since we have no messages we can find that currently crash the process, no matter how badly corrupted, we had to add a debug flag that allowed us to create a null pointer for a specific message so we could show what happens when it occurs.

Inline GIF image
Thu 3 Mar 2016, 12:38 PM
For the past 13 years, CoexLinks Fidelity has been very successful at helping companies with diverse email systems coexist. From handling doclinks in the early days to high fidelity rendering in recent years, CoexLinks Fidelity has been used by many of the largest companies in the world, as well as some of the fairly small.

Over the years, we have expanded the core functionality, but have always focused on email as it moves through the Domino system and out, whether "out" means outbound email to clients, customers, family and friends, or "out" means to mobile devices (via Traveler) and web access of internal email (via iNotes).

While many of our customers remain dedicated to Notes/Domino email, many others are looking at IBM Verse, Microsoft Exchange, Google Gmail or other offerings in the diverse marketplace today. To continue to provide for those customers, we are expanding the reach of CoexLinks Fidelity to process email in batch mode. Of course, CoexLinks Fidelity will continue to handle all of the email rendering as it does not, including the very popular Message Store feature that customers depend on to isolate and make accessible content which is encrypted or otherwise needs special handling.

What we are adding falls into two categories:

1) Conversion in-place. An administrator can simply target a user's email database and convert some or all of the emails which are in rich text to high fidelity MIME such as we produce now with CoexLinks Fidelity outbound mail. The primary purpose is to allow migration of email to IBM Verse. Other migrations will handle putting the email in Verse but with the same deficient rendering that the Domino server has now (worse even than the Notes client rendering). With CoexLinks Fidelity, that email can be pre-converted to retain its Notes fidelity in Verse.

2) Export of email. An administrator can likewise target a user's email database and export some or all of the emails, including those already in MIME, to either a MIME stream or disk files. This is primarily used for migration to other email systems and for archival purposes outside of the Domino infrastructure for long term accessible email retention.

CoexLinks Fidelity 4.00 will surface some of this functionality next week, with additional options available over the next few months. If you have a use case you would like to discuss or want more information, please give us a call at +1 216-991-5220 or send us an email at sales@geniisoft.com. As always, current customers who are up-to-date on maintenance will receive a free upgrade. If you are not a current customer, but would like to try out an evaluation, fill out an evaluation request.

Inline JPEG image

Mon 7 Nov 2005, 11:11 PM
A while back, I went through the exercise of CoexEdit enabling the Partner Forum.  While technically interesting, it was not terribly useful to most people, since the Partner Forum is not really web enabled.  It seems like a much more useful project would be to CoexEdit enable the standard Discussion Database template, so that is what we are going to do here.

Here were the steps as I recorded them:

CoexEdit-enabling the Discussion Database template

  1. Made sure that CoexEdit was set up on my server, with FCKEditor installed per the directions in the CoexEdit User manual.
  2. Copied the Discussion - Notes & Web (6) template, discsw6.ntf, to a new Discussion - Notes & Web with CoexEdit (6)  template, discsw6CXE.ntf.
  3. The Main TopicResponse and Response to Response forms all use the Body field as the main rich text field.  Since the FCKEditor with CoexEdit sample database on our website also uses this field, I simply copied the FCKEditorSubform and NotesClientSubform from the FCKEditor with CoexEdit sample into the new discussion template..
  4. I replaced the Body field in the Main TopicResponse and Response to Response forms with a computed subform exactly like that in the Example Form from the CoexEdit sample (I actually just copied it and pasted it in).  The formula is simply: @If(@ClientType = "Notes"; "NotesClientSubform"; "FCKEditorSubform").  Before I removed the Body field, I checked its attributes, and noted that it set the width to 625 and the height to 300 on each form.
  5. In the Main TopicResponse and Response to Response forms, there was no current value for the HTML Head Content formula, so I added the word HTMLBodyContent, which is the computed field on the subform which references FCKEditor.
  6. I edited the FCKEditorSubform and in the JS Header, I changed the oFCKeditor1.Height = '500' to oFCKeditor1.Height = '300', and the oFCKeditor1.Width = '600' to oFCKeditor1.Width = '625'.
  7. I went back to the FCKEditor with CoexEdit sample database and copied all the image resources, then pasted them into the new discussion template.
  8. Finally, in a somewhat unnecessary, but pleasant, step, I edited both the Main Topic form and the Shared Response Header subform and deleted the last row of the header table, which is the row with Attach a file: in the first column and a file upload control in the second column.  One of the cool things about CoexEdit is that it will let you add files the way the Notes client does, without a file upload on your form, anywhere you like in the rich text, and as many as you like.

That was about all I could remember to do, so I stopped and created a brand new database using the new discussion template.  From the Notes client, I added some content, including colored text, an animated gif and a simple table, then saved and switched over to Internet Explorer and went to the same database.  I edited the content and it looked fine.  I added some different colors and a colored background on a table cell, and saved again.  I switch to Firefox, edited again and made some more changes, then switched back to Notes and checked, and all changes were made and looked good.  I'd show some graphics, but I think I'll save my energy and make a mini-movie of the whole process.  I will show just one image, to give a feel for what is happening.

Wasn't that easy?  How hard would it be to do the same for YOUR databases?

Inline JPEG image

Mon 19 Dec 2005, 02:23 PM
People obviously can't wait, because there are already a number of hits on the Lotusphere 2006 Sessions DB page.  But now, it is actually available.  This is our sixth annual sessions db made available in Journal format that is suitable for synching with your PDA, or for just general browsing.  Actually, there is much more functionality for general browsing, fun and scheduling this year!  The database is available at LS2006_SessionsDB.  As before, it appears that IBM is not planning on releasing their own database, so I figured I'd better do it again.  Rocky, who has started working for IBM this year, has indicated that just maybe there will be a link to our sessions database again this year on the official Lotusphere page, perhaps even a bit earlier.

One change this year is that many of the folks from the fabulous Penumbra group, of which I am a humble member, have joined in to contribute ideas, features and functions to the database.  Some are already there, such as the Topic Cloud, and several are held back for the on-line version that we will offer this year.

This database is free for you to use either as is or with modifications.  If you make interesting changes, or build another tool around it such as a web services or .NET interface or whatever, let me know and I'll provide a link (or just update my db if you like) on the webpage.  Feel free to point anyone to this post or to the page directly.

I am not doing a session this year, by the way, but I will have a pedestal (#604) and will be showing CoexEdit, finalist for the 2006 Lotus Award (aka Beacon) for Best Tool/Utility.  I'll also be showing CoexLinks and the Midas Rich Text LSX, so drop on down and find me and see the cool stuff you can do when thinking outside the box.

P.S. If you don't have any other reason to download the database, how about the first public sneak peek at the CULT shirt for this year?  Just look for my name and look under the CULT tab.  You know you want to.
Mon 24 May 2004, 09:22 AM
In Carl Myhill's article, Get Your Product Used in Anger!, he demonstrates that many design flaws or weaknesses are not exposed until a product is used "in anger", which he defines in the sense of use in the real world under real conditions, not in a demo or lab.  As a quick example, see the footpath below, and the "Desire Line" which people really want:


(read on)
Thu 18 Nov 2004, 11:10 AM
With special thanks to the Princess Bride for the name, this is the abridged version of my first post, Totally Tubular (the 'Technology Wonk' version)... (read on)
Wed 17 Nov 2004, 11:09 PM
Before you start, this version is long, and possibly pedantic, and you are encourage to skip right to the abridged version, Totally Tabular (the 'Good Parts' version).  This post is retained for the sake of technology wonks who have nothing better to do.  (You know who you are) (read on)
Mon 10 Nov 2003, 11:57 AM
"Imitation is the sincerest flattery." - C. C. Colton

One very cool feature in  Internet Explorer is the ability to save a web page with images and all intact into a single file.  It is very handy if you want to send information to which the recipient does not have full access, or if you want to save a whole page in case later changes to the website invalidate links or images.  Recently, I had a customer say, "Wouldn't it be cool if you could do that with a Notes document so that you could send the whole document with images and everything together to someone who doesn't have Notes?  Of course, you can do something similar with e-mail, but it doesn't preserve the integrity of the whole Notes document."

Well, like many good ideas, this one has been thought of before.  We actually added the ability to create *.mht files back in our Midas Rich Text LSX Version 2.50 in July 2002, but clearly not everybody knows about it, so here is a simple script that will take all selected documents and save them as *.mht files.  You can send these files to someone who doesn't have notes, and they can view them as if they were seeing the original Notes documents.

Sub Initialize
   ' *** Domino classes
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim coll As NotesDocumentCollection
   Dim doc As NotesDocument
 
   ' *** Midas classes
   Dim rtitem As New GeniiRTItem
 
   Set db = s.CurrentDatabase
   Set coll = db.UnprocessedDocuments
   Set doc = coll.GetFirstDocument
   While Not (doc Is Nothing)
      Call rtitem.ConnectBackend(doc.Handle, "Body", True)
      Call rtitem.ExportToMIME("a:\" & doc.NoteID & ".mht","","","")
      Set doc = coll.GetNextDocument(doc)
   Wend 
End Sub

As usual with Midas, there are lots of options about how exactly you store the data, whether borders should be rendered as in Notes, etc.  As an example, with just a bit more code, you can save these as a collection, meaning that doclinks between the documents will continue to work between the *.mht files, giving you a set you can save on a CD or treat as an off-line data store with data integrity.  Let me know if you would like to see what you would need to add to make such a collection.
Mon 6 Jun 2005, 05:03 PM
As a large CoexEdit customer is starting its plan to roll out the product, the question has come up of how to customize the toolbar that comes with FCKEditor, the rich text editor they have chosen as the web side of the Notes/Web coexistence (they are using Notes 6 as the Notes side).  While this obviously isn't part of CoexEdit itself, I imagine this will be a common request, so I thought I'd outline how it works.  In a future post, I'll describe the same kind of customization with TinMCE and Xina/htmlArea.

Static configuration for FCKEditor is mostly stored in a file called fckconfig.js which is directly under the FCKEditor directory... (read on)
Thu 2 Apr 2020, 04:34 PM
Inline GIF image
 
In this classic scene from Jaws, police chief Martin Brody already knows he is facing a dangerous creature, but when the great white shark finally appears, he realizes has been thinking on the wrong scale. Over the years, the phrase, "You're gonna need a bigger boat" has become a popular way of saying that you have underestimated the problem.
 
HCL is doing wonderful things with Domino, building an infrastructure made for today's world, and especially today's web. But the folks at Iris and later Lotus realized early on that you could build the best platform in the world, but it wouldn't do you any good if people couldn't build their business apps on it. They went all in on APIs to make it possible to do fantastic things, well ahead of the competition. But the competition has had a lot of time to improve. Look around at Microsoft and Google and Amazon and a hundred other smaller tech companies, and you realize that if Domino is going to carve out a place in this world, we need a bigger boat.
 
We at Genii Software have a vision for a comprehensive set of functionality that transcends the traditional Domino development framework. We are not competing with HCL, and won't hesitate to piggyback off of their technology where we can. The goal is not to beat HCL, but to enhance the development landscape along with them for all our sakes. Basically, we want to build a bigger boat together with HCL and other partners.
 
This very brief demo shows a first look at our Exciton Power offering, in beta now. This is a Node.js module with (currently) six classes, over two hundred methods, and over 150 properties, all allowing you to build kick butt business apps combining the wealth of Node.js modules with the power and security of Notes/Domino. If you've seen my recent demos, you'll recognize the functionality shown here, but in JavaScript instead of LotusScript. The code below the demo should look very familiar to those who know and love the Midas LSX, but this is more than a Midas port to JavaScript, and it goes far beyond rich text, including form/view/etc. design, data mining, high fidelity rendering, and more. All available to work with both local and server-based databases using the traditional Notes security model, whether your Notes ID is local or in the ID Vault. Oh yes, and you'll notice the demo is in Notes 9.0.1. Exciton Power is built to work with Notes/Domino 8.5.x/9.x/10.x/11.x on both 32-bit and 64-bit Windows and 32-bit and 64-bit Linux. If you need to build a Node.js app for a Domino customer, you don't want to worry what version or OS they are on. You want to meet them where they are, and then take them where you are going.
 
 
If you would be interested in participating in the Exciton beta, or even if you just have questions, contact me by e-mail at 
 
Source Code for demo:
Let's take a quick look at the code. I am using the really basic approach to fulfilling the HTTP request, but you obviously can grab the results of the GET however you like. Just make sure it is a JSON text stream when it is passed to the methods. (This is a first look of the beta, so don't count on everything being exactly like this.) Not bad for 47 lines of code, eh?
 
const https = require('https');
const useExcitonPower = require('./build/debug/ExcitonPower32');

// *** Initiate a session
const gs = useExcitonPower();

// *** Connect to a rich text item
const rtitem = gs.useGRTItem();
rtitem.connect('', 'UseCases.nsf', '2E92311B5BB4CB168525853D0016F8E5', 'Body', true);
const rtchunk = rtitem.useGRTChunk(rtitem);
rtchunk.defineChunk(rtitem, "Everything");

// *** Define the properties to access the data
const props = "AsTable='horizontal' AsObjectArray='yes' TitleFont='Bold #004080' TableWidth='Fit with margins'";
const col1props = "Text='' TextFont='Bold #004080'";
const col2props = "Text='' TextFont='-Bold #084000'";

// Add the first tab with data about how many tests have been run
https.get('https://covid19-server.chrismichael.now.sh/api/v1/TestsinUS', (resp) => {
  let data = '';
  // A chunk of data has been recieved.
  resp.on('data', (chunk) => {
    data += chunk;
  });

 // The whole response has been received. Add the internal table to tab 1
 resp.on('end', () => {

  // *** Add the title, and make everything Verdana to look better
  rtchunk.setFont("Plain 10pt Default Sans Serif");
  console.log("Adding tabbed table with two tabs.");
  rtchunk.appendTable(1, 1, "RowDisplay='Tabbed' TabFont='14pt Bold' BorderEffects='Drop_Shadow'",
          "CellColor='RGB227,234,240' TabLabel='COVID-19 Testing' Width=4");
  rtchunk.zoomIn("Table 1");
  rtchunk.appendRow(false, 1, "CellColor='RGB227,234,240' TabLabel='World Stats'");
  rtchunk.zoomOut();
  
  // *** Appends the fields to the form and save
  rtchunk.zoomIn("Table 1; Row 1; Inside column 1");
  console.log("Adding nested table inside first tab with Testing stats from one REST API call.");
  rtchunk.appendFieldsWithJSON(data, props+" ChildOf='tests.table'", col1props, col2props);
  rtchunk.zoomOut();

  // Add the second tab with data about how many tests have been run in the U.S.
  https.get('https://covid19-server.chrismichael.now.sh/api/v1/AllCasesInAmerica', (resp) => {
    data = '';
  
    // A chunk of data has been recieved.
    resp.on('data', (chunk) => {
      data += chunk;
    });
  
    // The whole response has been received. Add the internal table to tab 1
    resp.on('end', () => {
    
    // *** Appends the fields to the form and save
    rtchunk.zoomIn("Table 1; Row 2; Inside column 1");
    console.log("Adding nested table inside second tab with World stats from a different REST API call.");
    rtchunk.appendFieldsWithJSON(data, props+" ChildOf='data.table'", col1props, col2props);
    rtchunk.zoomOut();
  
    rtitem.save();
    console.log("Document saved");
  });

  }).on("error", (err) => {
    console.log("Error: " + err.message);
  });
  
});

}).on("error", (err) => {
  console.log("Error: " + err.message);
});

 
 

Tags:

Mon 9 Sep 2019, 10:21 AM
Last week, I started a series about certain constraints on exporting or archiving Notes data to PDF. There has been a lot of chatter recently about exporting to PDF, a feature that may be supported natively in HCL Notes V11, and that is offered as an archiving solution by some consultants and vendors. 
 
The PDF format itself is great for certain use cases, but has certain limitations by its very nature, and other limitations due to expectations. As I said in my first post, PDF is seen as being a little like an image. This is wrong on two counts. The first is that the data is not pixel perfect by any means. The second is that in to the extent that it shows what is visible, an image does a lousy job of revealing what is not visible. In this example, I actually show three different instances of where data is lost or obscured in different ways. The first part has the missing data. With caption tables, the caption (or title) is missing, thus losing context. With sections that have not been expanded, the title is there but the contents are missing. And of course, all the attachments and doclinks are non-functional in any case. The second example has obscured data. With a numbered list in a table (not tweaked in any way to try to get this result), part of the numbers is missing. Please note, there examples are only representative of other missing or obscured data with PDF rendering.
 
This is the fourth of eight primary issues. Depending on what vendor or driver you use, a few of these may have at least a partial solution, but they are good items to check when validating your approach. The table of contents of all issues will be at the bottom of this post.
 
 
4a) Missing data
 
Portion of a rich text field with a caption table and a section.
 
Inline JPEG image
 
 
PDF rendering. Note that the caption titles are missing, and the section title is all that remains.
 
Inline JPEG image
 
 
Rendered by the Midas LSX to HTML. The first image shows as it opens, while in the second I have clicked on the Q3 caption and section title to show them open.
 
Inline JPEG image
 
 
After clicking the Q3 caption and section title (both are clickable with our HTML rendering).
 
Inline JPEG image
 
 
4b) Obscured data
 
Portion of a rich text field with a numbered list inside a table (same wide table as before, though I don't show as much).
 
Inline JPEG image
 
 
PDF rendering. Note that the second page looks like it starts a new numbered list, but is really number 11. I also noted the left data cut off as shown in previous post.
 
Inline JPEG image
 
 
Rendered by the Midas LSX to HTML. 
 
Inline JPEG image
 
 
Table of Contents (will be updated as the blog series continues)
 
Want to try out our Midas LSX export for yourself? Simply fill out the online evaluation request, and we'll get you started. There's no cost to seeing it for yourself.
 

Tags:

Tue 19 Aug 2014, 11:34 AM
Inline JPEG imageThe high fidelity email rendering provided by CoexLinks Fidelity 3.6 is often viewed as primarily about appearance, but it is also about preserving data integrity. This 4 minute demo shows a number of examples where actual data loss occurs when certain elements are sent via email and rendered by either the IBM Notes 9.0.1 client or the IBM Domino 9.0.1 server. (None of these data losses started in 9.0.1 - earlier versions were even worse). Problems shown have all been reported by Genii Software customers in rich text rendering, although the examples are contrived for effect.
 
Data issues fixed by CoexLinks Fidelity and shown in the demo:
 
  1. Image resources (disappear with both client/server rendering)
  2. Text and cell colors (light green/dark green confusion in client rendering)
  3. Table borders and cell borders (table borders disappear in both client/server rendering, cell borders rendered poorly in server rendering)
  4. Section titles (disappear completely in client rendering, render poorly in server rendering)
  5. Layout regions (disappear completely in both client/server rendering)
  6. Stored forms (not rendered by client except Body field if present)
  7. Buttons (disappear completely in both client/server rendering)
 
Best viewed in HD. Closed captions are provided for following in English or improved auto-translation.
 
 
 
To try out the new CoexLinks Fidelity including the Message Store, fill out an evaluation request or contact us for more information at sales@geniisoft.com.
 
 
 
Fri 26 Jul 2013, 04:47 PM
It may be that the day may has passed when "power users" could easily create applications in IBM Notes/Domino. The advanced developer is in the ascendency. I get it.

Still, I think a power user should be able to create a button to ePublish the documents in the current view (rendering the whole form, of course) without getting a degree in computer science. Therefore, even if makes me old-fashioned, this is the LotusScript code it would take to export the main view of the Curb Appeal sample database. It uses the Midas Rich Text LSX V5.0, of course.

Option Public
Option Declare
UseLSX "*lsxrtc"

Sub Initialize
   Dim gcoll As New GeniiCollection("""CurbAppeal.nsf""Listings")
   Call gcoll.ExportToEPub("c:\demo\CurbAppeal.epub""RenderWithForm='Yes' ")  
End Sub

Of course, if that is still beyond them, they could also use the following in formula language with @Midas Exports (but don't tell, as it is a secret):

@DbCommand("Midas""ExportToEPub""":"CurbAppeal.nsf""Listings""c:\\demo\\CurbAppeal.epub""RenderWithForm="Yes");

Easy enough for your power users?

Tags:

Mon 26 Jun 2006, 10:05 PM
This is worth repeating.  There are now twenty four of the podcasts done by Bruce Elgort and Julian Robichaux, including:
Episode 1 - Web Services Part 1
Episode 2 - Web Services Part 2
Episode 3 - Interview with Ben Poole - DominoWiki
Episode 4 - Interview with Ben Langhinrichs - Rich Text
Episode 5 - Lotus Sametime with Carl Tyler
Episode 6 - Interview with Bruce Elgort - OpenNTF
Episode 7 - Questions about SPAM - ask Chris Linfoot
Episode 8 - Using Ajax with Lance Spellman and Dwight Wilbanks
Episode 9 - Large-Scale Notes Deployments with Bill Buchan
Episode 10 - Meet the The Turtle
Episode 11 - Lotusphere 2006 Day 0
Episode 12 - Lotusphere 2006 Day 1
Episode 13 - Lotusphere 2006 An Interview with Kevin Cavanaugh
Episode 14 - The weeks after Lotusphere 2006
Episode 15 - Show-n-tell Thursdays
Episode 16 - Interview with Ed Brill
Episode 17 - Julian and "Bruceless"
Episode 18 - Moving on up
Episode 19 - News and views
Episode 20 - Interview with Andrew Pollack
Episode 21 - OpenLog
Episode 22 - Sametime 7.5 with Adam Gartenberg
Episode 23 - CouchDb with Damien Katz
Episode 24 - Interview with Rocky Oliver 

And they are all free.  Meet some of the interesting characters of the Notes/Domino world and beyond.   And after talking with Bruce today, it sounds like they have lined up some truly amazing podcasts for the future.  Just thought you would like to know.

Tags:

Fri 20 Dec 2019, 12:58 PM
 
 
 
HCL released Version 11 of Notes/Domino today with a combination of exciting new features and some less exciting holdovers from previous versions. Customers and partners should realize that this is a journey, not a destination. I'm exciting by some of the developments, and disappointed that others couldn't be made in time, but given HCL's forward-looking philosophy, I am confident there will be more enhancements coming.
 
Meanwhile, here at Genii Software, we have been working on how best to support our customers. The new release and new ownership of Notes/Domino have led to a fork in the road for many companies. Some are waking up to the fact that you must invest in a product and an environment to make the most of it, and therefore are getting back on maintenance for Notes/Domino and also spending some long-needed resources on their applications and infrastructure. Some of that investment is in internal retooling, and some is in buying products and services that can help get the maximum total ROI. Companies who have decided that Notes and Verse mail are the smart choice are deciding to spend a bit extra and get CoexLinks Fidelity to ensure the best outward experience for their partners, customers, and employees. Similarly, some are looking at AppsFidelity to upgrade their applications, or are working with us to build more powerful REST interfaces for round-trip access and updating of application data. Others are dusting off applications that may have used the Midas LSX for a dozen years or more and seeing what new features and functions they can add in an HCL Nomad world.
 
But the other side of the fork is those companies who are finally choosing to migrate the last parts of their Domino infrastructure away. These customers are increasingly looking to the Midas LSX for high fidelity JSON, HTML, CSV, and other data migration needs, whether the destination is SharePoint, Confluence, Zendesk, or a multitude of other systems. We are spending more time with services, something we've limited in the past, but are opening up to. Most of the software functionality is already in place, but we have realized that the licensing aspects have confused people. With that in mind, we will be removing the Midas LSX+Midas Exports combination and simply selling the Midas LSX. But since the pricing will have to shift to accommodate the new uses, we will split the licensing somewhat so that there is a less expensive "classic" Midas LSX without migration for those companies using the rich text manipulation and design creation features, and then have the full Midas LSX experience with migration pricing built in. More details will follow in January.
 
There is also another product in the works that will combine some other features in a Node JS package, empowering those embracing the NERD/DERN stack as well as other developers using Node with other software environments. All in all, 2020 looks to be an exciting year for us, and we hope, for you.
 
Image by Marco Verch with source here using license here.

Tags:

Thu 9 Jul 2020, 11:33 AM
This is a follow up to my post, From REST to Notes db in two seconds. In that, we use the results of a call to a public REST API to created a form, fields, view, and documents. Cool, but often you just want to create an instant little mini-report in a rich text field. Let's start at the end this time. There is a nifty REST API to retrieve foreign exchange rates. You call it at https://open.exchangerate-api.com/v6/latest. An example is today's results, which are 
 
{"result":"success","documentation":"https://www.exchangerate-api.com/docs/free","terms_of_use":"https://www.exchangerate-api.com/terms","time_last_update_unix":1594253195,"time_last_update_utc":"Thu, 09 Jul 2020 00:06:35 +0000","time_next_update_unix":1594340705,"time_next_update_utc":"Fri, 10 Jul 2020 00:25:05 +0000","time_eol_unix":0,"base_code":"USD","rates":{"USD":1,"AED":3.67,"ARS":70.88,"AUD":1.44,"BGN":1.73,"BRL":5.36,"BSD":1,"CAD":1.36,"CHF":0.94,"CLP":791.55,"CNY":7.01,"COP":3608.55,"CZK":23.69,"DKK":6.6,"DOP":58.2,"EGP":15.98,"EUR":0.885,"FJD":2.16,"GBP":0.796,"GTQ":7.7,"HKD":7.75,"HRK":6.68,"HUF":314.67,"IDR":14199.6,"ILS":3.45,"INR":74.99,"ISK":139.34,"JPY":107.48,"KRW":1196.48,"KZT":409.22,"MXN":22.72,"MYR":4.27,"NOK":9.44,"NZD":1.53,"PAB":1,"PEN":3.53,"PHP":49.53,"PKR":166.43,"PLN":3.96,"PYG":6615.67,"RON":4.29,"RUB":71.27,"SAR":3.75,"SEK":9.22,"SGD":1.39,"THB":31.23,"TRY":6.86,"TWD":29.42,"UAH":26.85,"UYU":43.29,"ZAR":17}}
 
Even if you don't deal with JSON much, you could probably pick out that the exchange rate with CAD (Canadian dollar) is 1.36. We could certainly use the new JSON classes in Notes to traverse the JSON, find the values and build a report, but our Midas LSX is all about maximizing what you can do while minimizing the effort to do it. So, my business users want a snapshot of four specific exchange rates. I decided to present them like this:
 
Inline JPEG image
But how did I get from the JSON returned to this table? As a practical matter, I first just used our AppendFieldsWithJSON method to create fields from everything. It looked like this (and goes on and on until ZAR):
 
Inline JPEG image
 
You can see that when our method hits an object inside the object (this one called rates), it presents the values like this. But I wanted the rates presented more nicely, so I switched the properties of the AppendFieldsWithJSON to start down at the rates object (by setting ChildOf='rates'), and specify it as a vertical table inside a single tabbed table with a label. That looked like this:
 
Inline JPEG image
 
This is close, but I only want my four currencies, and I think the background should be green. Oh, and I'd like the labels to reflect the commonly used names for these currencies. So, I change the properties string a bit to include a comma-delimited list of the items I want and the way I want them to appear.
 
props = "AsTable='vertical' AsObjectArray='yes' ChildOf='rates' Items='AUD=Australian Dollar,CAD=Canadian Dollar,EUR=Euro,JPY=Japanese Yen' "
 
After a bit more tweaking of the color and tab label, I get my final code:
 
Sub Initialize
   DimAs New NotesSession
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim http As NotesHTTPRequest
   Dim gs As New Geniisession
   Dim rtitem As New Geniirtitem
   Dim rtchunk As Geniirtchunk
   Dim props As String
   Dim col1props As String
   Dim col2props As String
   Dim json_val As String 
 
   Set db = s.CurrentDatabase
   Set doc = New NotesDocument(db)
   doc.Form = "JournalEntry"
   doc.Subject = "Exchange rate data as of "+CStr(Now)
 
   ' *** Create the rich text item, overwriting it if it already exists
   Call rtitem.CreateBackend(doc.Handle, "Body"True)
 
   ' *** Add the title, and make everything Verdana to look better
   Call rtitem.DefineFont("Verdana")
   Set rtchunk = rtitem.DefineChunk("Everything")
   rtchunk.Font = "Plain 10pt Verdana"
   Call rtchunk.AppendTable(11"RowDisplay='Tabbed' TabFont='12pt Bold Verdana' BorderEffects='Drop_Shadow' TableWidth='Fixed' ", _
   "Text='' Width='3in' CellColor='RGB127,255,127' TabLabel='FX Rates with US Dollar'")
   Call rtchunk.ZoomIn("Table 1; Row 1; Inside column 1")
 
   ' *** Retrieve the JSON to use
   Set http = s.CreateHTTPRequest()
   http.PreferStrings = True
   json_val = CStr(http.get("https://open.exchangerate-api.com/v6/latest"))
 
   props = "AsTable='vertical' AsObjectArray='yes' ChildOf='rates' Items='AUD=Australian Dollar,CAD=Canadian Dollar,EUR=Euro,JPY=Japanese Yen' "
   col1props = "Text='' TextFont='Bold #004080'"      
   col2props = "Text='' TextFont='-Bold #004080'"      
 
    ' *** Appends the fields to the form and save
   Call rtchunk.AppendFieldsWithJSON(json_val, props, col1props, col2props)
   Call rtitem.Save()    
End Sub
 
and when I run that, I am back to the beginning. This could be the entire rich text field, or you could have an agent just drop it in where you want in an existing rich text. 
Inline JPEG image
A lot of power with a small amount of code, and it is easy enough to tweak and change and run again so you can design and create your look without spending a ton of time designing and creating your code. That's the Midas LSX advantage,
Thu 21 Jul 2011, 05:09 PM
Note: I accidentally posted this earlier without its content. I thought it was in draft, but no. Oops!

A question came in from a customer today regarding why CoexLinks did not process a message that was already in MIME, and whether there were other flags or conditions that would prevent a message from being processed. I thought I'd share and elaborate on the answer to give an idea of how CoexLinks works.

Answer (modified slightly to clarify for blog):

It is a basic assumption and requirement for CoexLinks that the message be in rich text format. There are two reasons for this. The first is that after the conversion to MIME by the native engine, some of the loss of information has already occurred. We could still read the MIME (the engine has that ability for other reasons, but it is not used), but if the information to generate a better doclink is gone, we cannot retrieve it. The second reason is that a great many messages would have to be processed that shouldn't need to be. Since every email routed through a server would need processing, all the inbound mail (already in MIME) would be processed, as well as any email already converted by a client or server that routed through your gateway. That would be a huge load added to the server for many companies, with virtually no gain.

That said, here are the tests applied to a message to determine whether to process it at all. The order is determined by the philosophy that you should do the least processing necessary to determine whether to skip, as CoexLinks scales up to very, very heavy loads. The first four checks are unlikely to apply to most people, but I added them for completeness sake. Numbers 5 and 6 are the ones which block the majority of messages that are blocked.

1) If the environment variable COEXDocLinkType is set to 0 (usually a temporary way to turn off CoexLinks), skip processing.

2) If the environment variable COEXLimitToDB is set (not common), skip if the database is not one of the specified databases.

3)  If any of the environment variables COEXExcludeHintServer or COEXExcludeHintServers or COEXIncludeReplicaID are set (not common), skip if the hint server or replica id doesn't match criteria.

4) If the environment variable COEXSkipNoLinksItem is set (only used in very heavily loaded systems with no mails created by agent), skip if the $Links field does not exist.

5) If the COEXStampDate item exists and has a time within the last five minutes, skip processing. This item is set by CoexLinks to ensure that multiple servers don't need to process the same message multiple times.

6) If the Body item is already in MIME, skip processing.

7) If the COEXDocLinkType is set to 2 (generate NDL attachments) and there are already NDL attachments, the message is skipped. This check is going away with Version 3 because there are corner cases where it does not process replies and forwards as it should.

Tags:

Wed 26 Jun 2013, 09:32 AM
In my video yesterday, I showed what I call "capsule views", but I didn't really explain what they were or how they fit in a social business.

Capsule Viewa single file collection containing both a set of documents from one or more databases, and the navigation between them.

In a social world, you can't assume that everybody has exactly the same software that you use in your business, whether that is IBM Notes/Domino or IBM Connections or something else. In order to connect and work together, a variety of formats and specifications have been designed to exchange data in well defined, usable, secure ways. In Midas V5, we use some of these formats to allow you to exchange data easily with customers, partners, salespeople and more. Here are some of the formats and possible uses:

EPUB files (.epub): ePublishing a set of documents based on a query or selection allows customers or your people in the field to work with a set of documents on a tablet or phone. All iPads/iPhones read .epub files directly, and most ereaders and Android devices do as well.  For example, a real state agent could use use a database such as Curb Appeal to show potential buyers home listings based on price and location, then send them an EPUB file with their top picks to take with them.

Web Archive (.mht): A MIME-based file format created for Internet Explorer, the Web Archive files can now be read in Firefox, Chrome and elsewhere with a simple plugin. Send a partner a capsule view of four or five business proposals along with related documentation from another database, all in one easy-to-navigate file they can read in their browser without without connectivity or access to your servers.

HTML view (.htm): Give your salespeople the power to download an HTML/XHTML file with data from one or more databases collated into a view, with additional information expandable under each entry. This can offer a spreadsheet-like collection of data for their immediate use, and it can be customized to the access rights and needs of each salesperson, without the weight of navigating a database and with the ease of printing out a result sheet to hand to a prospective customer.

These and other formats empower your company to share snapshots of data via mail, web pages and social media, all in encapsulated navigable form that is readable without special software or devices. Whether you are using a highly customized XPage application from a mobile device in Social Edition or a bog standard Domino web app from a PC browser in 8.5.3 or a classic Notes application from the Notes client in Notes 7, you can use the Midas Rich Text LSX V5 to maximize your social business.

Tags:

Tue 8 Mar 2011, 09:54 AM
What I've Been Doing with XPages
I have been working more steadily with XPages recently, and while it is clear there are some real deficiencies, there are also some real strengths. I am less tempted to give up in disgust that I was with composite applications, but I do feel a strong urge to make XPages better, faster, more efficient and more powerful.

I have already found a couple of ways that I can use or enhance technology in our Midas Rich Text LSX to make developing XPages easier.  To give one example, I am adding a CopyWithDependencies method to the GeniiRTItem class.  As an example of how that is useful, if I wanted to use some of the discussion logic in another database

Call rtitem.ConnectXPage(db.Server, "discussion8.ntf", "allDocuments")
Call rtitem.CopyWithDependencies(db.Server, db.FilePath, "allDocuments""Overwrite=Yes")

With these two lines, you connect to an XPage (in this case, I just connected to the one in the template, but it could be in any database), and then copy the XPage to a new database using the same name.  But this doesn't just copy over the single design element. It copies all the custom controls, style sheets, JS libraries, image resources, etc. that are used with the XPage, so that you don't have to worry about missing any.  After that, you are free to tweak and change to your heart's content.

What You Can Do (And How to Win the Software)
This is just the beginning, but I thought I'd open up a discussion about what is wrong with XPages, but with a major caveat. For the purpose of this contest, I only want to hear about things that I might possibly be able to fix. Don't limit yourselves too much, as I might be able to enhance/fix things that seem unlikely, but I can't change the UI in any significant way and I can't make designer load an XPage more quickly. I can do lots of things with both XPage development and XPage use, and I can do cool things with the CKEditor.

Here's the deal. You tell me something that could be done better, I do it better, and then I give you a license to Midas to do it better. It's that easy. For example, if you comment that XPages would be more useful if only they allowed such and such, and I can figure out how to make Midas allow such and such, I'll add it to Midas and give you a free Base client license (up to fifty user). That's a $1500 value, just for grumbling.

If you suggest a way that CoexEdit could provide more power, and I add it to CoexEdit, I'll give you a discount of 25% off a CoexEdit server. That's also a $1500 value, just for grumbling.

Of course, you have to be first with a suggestion. The rest is up to you. Grumble away. I'm even happy to have you grumble here, in public, where other ISVs can listen in and try to beat me to the punch. Fine by me. If you like, you can send me a suggestion by email to preserve anonymity, or because you might add it if I don't. I won't tell anyone if you don't want me to, although if the capability makes it into one of our products, I will make the feature public and shout it from the rooftops.

Anybody out there have anything you would like to see work even better?

Tags:

Fri 4 Sep 2009, 02:27 PM
It has been a grim few days, testing out the new Notes/Domino 8.51 (Beta 8) Discussion database template, based on XPages and the Dojo editor.  The bugs in Dojo compete for attention with the bugs in XPages.  The regression bugs clamor for eminence over the new bugs.  It is not really a question of looking for bugs, it is more a question of swatting as many as possible in hopes of getting out alive.
 
This may sound like hyperbole or gross exaggeration, but it isn't.  I maintain a list of free and commercial web editors which is widely referenced even by those who don't know a thing about Notes/Domino, and there is hardly a single editor in that list with fewer features than the Dojo editor used with XPages, yet even with this highly limited feature set, there are bugs that practically jump out at you.  The rich text to HTML/MIME rendering has bugs similar to those in Domino 8 that were fixed in Domino 8.5, but are back in 8.5.1, but you barely notice them because they are blocked by new bugs.

I plan to do a series of posts next week highlighting individual bugs (it takes a LOT of work to set up fair tests, do screen prints that show clearly what the bug is, etc.), but I'll show one because it is a perfect combination of a bug I have blogged about that has reappeared, along with a new bug.

Original created in Notes 8.5.1  (Beta 8) client (simplification of example I blogged as Will Sam (and Rick) get fired tonight?)  Note nested ordered lists with the last number as 5 and the inner lists as lowercase alpha.


(read on) to see the regression and new bugs in 8.5.1 (Beta 8)...

To be absolutely clear, this is beta code, it is only beta code, and anything you see or I report may change before release!

Tags:

Mon 6 Nov 2006, 11:08 AM
A developer called today because she had been told by another developer familiar with our Midas Rich Text LSX that the product might be able to help her with a client issue.  The client had created thousands of documents over the years with newsletters, and the newletters pointed to files on a shared drive.  So, thousands of documents, from a few to hundreds of URL hotspots in each, and of course the company decides to change the whole file system scheme... (read on) to see how this was solved typically by Midas.

Tags:

Mon 15 Dec 2008, 08:37 AM
In Part 1 of this series, I showed how IBM's rendering of MIME messages could lead your customers to think you were still running Notes R5, and how iFidelity, which is in beta right now, would allow you to send out mail that looks like it does in the Notes client rather than the way it did in 2001.  In this part, I show a parallel rendering done when Notes data is displayed on the web.

In his insightful book, Blink - The Power of Thinking Without Thinking, Malcolm Gladwell describes how the human mind can analyze a great deal of data in an instant and come to a conclusion that might be hard to enumerate, but is nonetheless correct.  In one study, people looking at a 10 second clip without sound of various professors teaching could describe their teaching style, effectiveness and ability to maintain control.  Their snapshot evaluations matched those of students who had taken a course with that professor for an entire semester.

Similarly, when a person sees a webpage, that person makes an almost instantaneous judgment about the website.  When a person evaluating Notes sees a webpage rendered by Domino, they make a judgment about whether Notes is right for their organization.  It doesn't really matter that a good web developer could set stylesheets that would fix a number of the rendering issues, or that a website could choose to avoid rich text rendering entirely.  The snap judgment is made, and is the source of many of the negative comments about Domino as a web platform or Notes in general.

With that in mind, let's look at a table sent to me by a customer (with sanitized data) and see the rendering experience that might lead to that instantaneous judgment.  To be perfectly clear, the table was sent because it was rendering badly in CoexEdit.  All software has defects, but what matters is how you deal with them.  We fixed the defects in a matter of days, and sent a fix back to the customer.  The most serious defect shown below was there in both Notes/Domino 8.0.0 and Notes/Domino 8.0.1, and has been fixed in 8.0.2, a full year where this bug was evident, and longer for the many customers still on 8.0.1.  In addition, many of the other rendering issues shown below have been issues for at least the past five years, and a few have gotten worse in the Notes/Domino 8.5 beta than they were in 8.0.1.

(read on) to see this rendered by the Notes client, then Domino and then by CoexEdit.

Tags:

Fri 9 Jan 2004, 04:05 PM
I haven't blogged much about our Midas Rich Text LSX recently, and I thought I would describe an undocumented/semi-documented secret for all of you Midas users out there, or those just interested in Midas.  Perhaps this will even motivate me to document it properly.  Perhaps.

Since this tip relates to chunks, you might want to read Midas 101 - Chunks first if you are not comfortable with the concept.

Imagine the following nested tables (which came from today's CNN site) and that these are surrounded by lots more rich text stuff (as they are in that site):


STOCK/FUND QUOTES:
enter symbol

MARKETS: 04:05PM ET, 01/09
DJIA
-133.55
10458.89
-1.26%
NAS
-13.33
2086.92
-0.63%
S&P
-10.06
1121.86
-0.89%

Now, imagine that you want to get a handle on the blue table with the MARKETS: hotspot.  Midas is pretty flexible, so you could use FindTextChunk and find the appropriate text, or cycle through the hotspots until you found the right one.  After that, you could cycle through the various nested tables until you found one whose LastRecord property was greater than the LastRecord property of the hotspot or text chunk and whose FirstRecord property was less than the FirstRecord property of the hotspot or text chunk.  Possible, but kind of far away from the dream I espouse for Midas.  So, a few versions back, I added a better way.  

In my imagination, a developer or user would look at this problem and say "I want that table which has the word MARKETS in the upper left hand corner".  The question is, how to handle that in Midas-think.  My solution was to add a syntax close to that used in the FindTextChunk property.  Now, you can say:

Set rtchunk = rtitem.DefineChunk("Table 'MARKETS:' 1")

and the chunk will try to match the first table in which the string MARKETS: is the first string found.  Now, that may be a bit too precise, so you could also use 

Set rtchunk = rtitem.DefineChunk("Table Starts 'MARKETS' 1") 

where the first string in the table would need to start with the string, or 

Set rtchunk = rtitem.DefineChunk("Table Substring 'MARKETS' 1")

where the first string in the table would need to contain as a substring the specified string, or 

Set rtchunk = rtitem.DefineChunk("Table Ends 'TS:' 1")

where the first string in the table would need to end the string.  By the way, the search is not case sensitive, as that seemed a bit too constrained.

Now, like all chunks, you can cycle through each hit, so if you had a table such as the following:

Salesperson
Quota ($)
Abelson, Bernard
100000
Anderson, Art
225000
Bratsworth, George
55000
Cadwell, Lori
175000
Carter, Billy
15000
Dirk, Sidwell
45000

you could use the following code to get the total of all the quotas for all the sales people whose last name started with C:

total_quota = 0
Set rtchunk = rtitem.DefineChunk("Table 1; Row Starts 'C' 1; Column 2")
While rtchunk.Exists
   total_quota = total_quota + Clng(rtchunk.Text)
   rtchunk.GetNextTarget
Wend
 
There are lots more ways to use this, some less obvious than others.  See if you can guess what the logic of these other chunk definitions are and why they might be useful:

Set rtchunk = rtitem.DefineChunk("Text Substring '(216)' 1")

Set rtchunk = rtitem.DefineChunk("Hyperlink Substring '/showcase.nsf/' 1")

Set rtchunk = rtitem.DefineChunk("Hyperlink Substring '/Aladdin/' 1")

Set rtchunk = rtitem.DefineChunk("ActionHotspot Ends ' shutdown' 1")

Set rtchunk = rtitem.DefineChunk("Paragraph 'Table of Contents' 1")

Now, if you are a regular Midas user, you have learned something new.  If not, I hope you have gotten at least a taste of how simple and powerful Midas programming can be.
Tue 24 May 2005, 03:28 PM
A friend asked me how I handle hyperlinks to common destinations, as I frequently answer questions in e-mails or comment on my blog about our products, and they always take the form of @Midas Formulas or CoexEdit.  He wanted to know if I keep copies handy, or have add them manually, or what.

The answer, of course, is that I use our Midas Rich Text LSX to do it for me.  The basic code is below (the whole agent is only 25 lines with comments):

' *** Connect to BlogBodyRT field and perform LinkMatching  ****
Call rtitem.ConnectBackend(doc.Handle, "BlogBodyRT", True)
 
rtitem.URLFont = "Blue Underline"
If mode Then uidoc.Save
uidoc.Close
Call rtitem.Everything.LinkMatching("", "GeniiKeywords.nsf", "Keyword View", "Term", "Link", |Target="_new"|)
rtitem.Save
Set uidoc = ws.EditDocument(mode, doc)

So, do you have a common set of keywords you would be able to automatically hyperlink?
Thu 2 Dec 2004, 10:55 AM
Mike MidasCarrying Concealed
by Mike Midas, Ace Developer

It was the end of a long day, the kind of day that made me rummage through my desk for a hair of the dog, even though I hadn't touched a drop the night before.  This e-mail was the last thing I needed, the last thing that is but a glass of whiskey and a dame to spill it on... (read on)
Thu 10 Feb 2005, 05:37 PM
In response to my search for simple API extensions, Tom Duff responded:
I don't know if this is what you had in mind, but here's my "wish"...

When I import a graphic image into a Notes document, I like to use a two-lined border with a weight of 4  and a drop shadow for 12 weight.  The "problem" is that the picture property box doesn't have a memory, so each new picture I load involves getting the picture property box, clicking on the second tab, selecting my double-edge border, selecting the drop shadow, and upping the border weight from 1 to 4.
  
What I'd love to do is have an @Function I could attach to a Smart Icon that allows me to feed in those parameters and set them when I have a picture object selected...
I made some comment about send keys, and Alan Bell was off and running with an extraordinary, if really unwise as he admits, script to do just this: Don't try this at home, silly stuff with sendkeys. Kudos to Alan, but it still doesn't address Tom's need fully... (read on)
Tue 4 Feb 2020, 10:31 AM
Posts in this series: 
 
It occurs to me that it would be useful to contrast the CRUD (or ARCUD for Access/Read/Create/Update/Delete) of domino-db with that of Domino Access Services, as I covered it in those two REST posts. There are some very clear, probably not coincidental, similarities. At the end (if I remember), I'll point out an implied similarity that may have profound implications for domino-db's future plans.
 
I'm going to try to cover this in one post rather than two. If you are confused because I take too many shortcuts, leave a comment and I'll revise the post.
 
0) Access - Getting a list of collections (views and folders) documents from a database
 
On this first item, there is a huge difference between DAS (Domino Access Services). DAS approaches access from the traditional Notes mind set of collections of documents in views, so you get a list of views, pick a view, get a list of documents, and then pick a document. But domino-db comes with a different mind set, closer to an SQL query wold view. In this case, DQL is the query language. You start with a DQL query. Period. No second option. You access a document from the results of the query by UNID, not a user friendly value, so you have both the power and responsibility to pull in other values which help you choose a document.
 
In short, access is through Database.bulkReadDocuments which uses a DQL query to find documents. I guess I'll have to address DQL in another post.
 
Methods: Database.bulkReadDocuments
 
 
1) Read - Getting the contents of a Notes document and all its fields in JSON
 
After the big differences in accessing documents, it is nice to see direct parallels when reading a document. There are other alternatives, but essentially you use Document.read to get a JSON object containing metadata such as UNID plus the items in the document. Well, kind of. You have to tell it which items to retrieve, by name, and it won't return rich text or MIME or other "advanced" types. What if you don't know what fields there are?  If you know the form, you can often figure out many of the fields, but not those created by processes and agents. If you don't already have a list of  fields for the form, you are searching blind.
 
This is not all bad. It means that it is harder to fish for information that is hidden, whereas the Domino Access Services gives up all its secrets too easily. Still, it is an issue.
 
Methods: Database.bulkReadDocuments, Database.bulkReadDocumentsByUnid, Document.read
 
 
2) Create - Making a new document with a JSON JavaScript representation
 
We did this already in the previous post. Creating is very similar to the Domino Access Services POST method, though we use a JavaScript object rather than a JSON object. Note that these two look very similar, so be careful. See the sample code below to create a document:
 
Inline JPEG image
 
If you look at the database.createDocument call, the entire argument is a JavaScript object. Extracted out, it looks like this:
 
Inline JPEG image
 
Now, look at a JSON object with the same data:
 
Inline JPEG image
 
They look similar, but be aware of the differences.
 
Methods: Database.createDocument, Database.bulkCreateDocuments
 
 
3) Update - Updating the contents of a Notes document and all its fields using JSON JavaScript object
 
Updating items/fields on a document:
 
The basic mechanism for updating is similar to that for creating. You pass a JavaScript object or array of objects to a method which updates the items. You can do this on a single document or multiple documents at once. Similar to Domino Access Services' REST API, you can use Document.replaceItems where you would use PATCH to replace just the specified items, or you could use Document.replace where you would use PUT. Using the latter Document.replace can be particularly nasty because you can't give replace the rich text and MIME fields, so they just get deleted. In most cases, I'd recommend you stick to Document.replaceItems unless you have a compelling reason to do otherwise, just as I'd recommend you use PATCH unless you have a compelling reason to do otherwise.
 
There is another kind of update which is not available to Domino Access Services, though I wish it were. That is the ability to delete specific items. In DAS, the closest way is to do a PUT with everything but the items to delete. This is far more elegant and useful, as you can just specify the items to delete. This can be done on a specific item
 
While most of these methods expect you to identify the specific items to update or delete for each document,  the Database.bulkReplaceItems and Database.bulkDeleteItems are different. These two method let you specify a list of items for all documents that match the DQL query. This allows you to do things like change the status of all documents that match a query selection and so forth. (It also provides a huge opportunity for a software extension I will be announcing, but that is a different story.)
 
Methods akin to PATCH: Database.bulkReplaceItems, Database.bulkReplaceItemsByUnid, Document.replaceItems
Methods akin to PUT: Database.bulkReplaceDocumentsByUnid, Document.replace
Methods that delete items:  Database.bulkDeleteItems, Database.bulkDeleteItemsByUnid,Document.deleteItems
 
Updating attachments on a document:
 
While rich text and MIME are not supported, there is an ability to add or delete attachments. I haven't played with this enough to speak knowledgeably about it (as if anything I say is particularly knowledgeable), but it is not as intuitive or easy a concept as attaching documents might seem. I'm guessing this will be a topic for a different post, once I get my head around it. Ugh! This series may go on until I retire at this rate.
 
Methods: Database.bulkCreateAttachmentStream, Document.deleteAttachments, Document.deleteAttachments
 
 
4) Delete - Getting rid of a Notes document
 
Finally, we can delete documents, either one at a time or in bulk using UNIDs or in bulk using a DQL query. That last one, Database.bulkDeleteDocuments, is particularly powerful. Be careful about your DQL syntax, as you'd hate to delete all the documents in a database because you wrote a sloppy DQL query. As Velma might say in such a situation, Jinkies!
 
Methods: Database.deleteDocuments, Database.deleteDocumentsByUnid, Document.delete
 
 
That's all I have for now. Peace out.
 

Tags:

Wed 22 Jan 2020, 12:08 PM
Previous posts in this series: 
 
While Node JS stuff is the newest, I'm going to start back at the REST API logic available in Domino Access Services. (If you thought I was going to post about the song by Cage the Elephant, you might have missed the gist of this blog, though I do like the song.) I'm pretty sure DAS was added in Domino 8.5.3, though the documentation is a bit scattered. The most reliable resource seems to be written by Dave Delay at https://github.com/OpenNTF/das-api-specs. While this is useful, it is hard not to notice that the last update was two years ago.
 
So, is DAS still relevant? I think so, though I'd love to hear from others. I do know that the AppDev Pack 1.0.3, which is very recent, has support for the OAuth DSAPI Extension as part of IAM, which supports the OAuth2 Introspection Protocol. In other words, you can use the same IAM services to authenticate a DSAPI like DAS as you can with the NodeJS stuff. Note that I say a "DSAPI like DAS" because you can write your own DSAPI to handle REST calls. That's exactly one of the things I am doing for a beta we are releasing in the not too distant future, though we are not doing this instead of Node JS, but rather in addition to it.
 
Domino Access Services for Tree Huggers (Documents and Views Edition)
Okay, so this is where I try to explain (figuring out as I go) what you can and can't do, and how you do hat you can. While their is support for calendar events, busytime, mail, and directory stuff, I'm going to leave that for some other enterprising person to document, I'm going to focus on documents  I'll try not to get too geeky, as I'll have to refer back to this post and want to remember what the hell I was talking about. I'll focus on your basic CRUD (Create/Read/Update/Delete), though for the sake of what people usually do, I'll switch that to the less memorable ARCUD (Access/Read/Create/Update/Delete) since that is the order we tend to need stuff. Acess is how we get to the documents in the first place.
 
0) Access - Getting a list of collections (views and folders) from a database
 
If you were paying attention in my previous post, and I hardly blame you if you didn't, you need to set up a database to allow DAS access first. Assuming you have done that, you now have a few URL endpoints you need to know about. I could just say URLs, but would you be as impressed? I thought not. In any case, you could start with
 
 
to get the array of views and folders. You can just type this in a browser, but technically that is doing a GET using HTTP. I downloaded Postman (because Jesse Gallagher suggested it), a free utility which supports all kinds of protocols and is easy to use.  So, if I do this in Postman (specifying the port because of reasons), I get the result below. Particularly notice the red arrows. First shows the URL endpoint and that this is a GET. The second shows the Response code of 200, which means the HTTP request was accepted and responded to. The third arrowshows in the JSON the URL endpoint for a specific view.
 
Inline JPEG image
 
 
We will do a second GET with the new URL endpoint for that collection, which we can see is called "Examples", and since it is not private and not a folder, is a public view.


Read on for the rest of the article...

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.
 
 

Tags:

Wed 16 Aug 2017, 05:01 PM
As part of our Defect Detection feature, we encounter and usually fix a number of different defects in images. The following list is the different scenarios we detect which cause any issue with extracting or rendering the images. Of these 31, at least 27 have been encountered in actual customer documents. The other four are left in because they might be some day. While none of these problems are common, some are likely to be encountered in any large data repository, especially in mail which has been converted back and forth between MIME and rich text (as with replies or forwards).
 
A few of these problems are completely unfixable, but only a few. For example, with scenarios 1a and 17, we have no image information to work with at all.
 
Many of these are easily fixed. For example, 25 or 26 are easily deduced from the data.
 
The rest can be partially fixed. Part of the image may have low resolution, or a section may be missing, but usually the image is at least intact enough to identify.
 
1) Image header lists n segments, but there are only m (where m < n)
1a)Image header lists n segments, but there are none
2) Image header lists n segments, but there are m (where m > n)
3) Image segments contain multiple GIF starts (often associated with #2)
4) Image segments occur with no image header
5) Multiple image headers
6) Image header lists data size other than actual (except where PNG)
7) Win meta header lists n segments, but there are only m (where m < n)
8) Win meta lists n segments, but there are m (where m > n)
9) Win meta segments occur with no Win meta header
10) Multiple win meta headers
11) Win meta header lists data size other than actual
12) Bitmap header lists n segments, but there are only m (where m < n)
13) Bitmap lists n segments, but there are m (where m > n)
14) Bitmap segments occur with no Bitmap header
15) Multiple bitmap headers
16) Bitmap header lists data size other than actual
17) No headers or segments
18) Both image segment or win meta and bitmap
19) Image resource that is missing
20) Pseudo-attached image that is missing.
21) Image segments occur before image header
22) Win meta segments occur before win meta header
23) Bitmap segments occur before bitmap header
24) No graphic record but other graphic elements
25) Graphic record says resized, but has 0 width or height
26) PNG record missing
27) PNG header lists n segments, but there are only m (where m < n)
28) PNG header lists n segments, but there are m (where m > n)
29) Multiple PNG headers
30) Image segments contain multiple PNG starts (often associated with #28)
31) PNG header lists data size other than actual
 
Phew! As you can see, there are a lot of potential issues, but with Defect Detection, we can fix the majority. That's why we do it.
 
Fri 19 Dec 2008, 08:12 AM
One of the hallmarks of well designed software is its resilience to failure, not just its avoidance of failure as people commonly think.  Obviously, it is best if software doesn't fail, and a huge amount of time and effort and engineering goes into design, quality assurance and testing.  But what happens when there is a failure anyway?  This can be very hard to handle, as one has to imagine the situation where the unimagined happens.  If you can foresee it happening, you can usually design around it, but if you have not foreseen it happening, it is more of a challenge.

A good example of this is in the Lotus Domino mail routing.  As mail routing has been a key feature of the Lotus Notes product since before the server was even called Domino, just about everything that can be foreseen has been, but there are still failures, whether due to new challenges such as badly constructed MIME or to simple "random ionic bombardment", which is how we used to describe those bugs that are not repeatable or even explainable.  This is where the Domino maturity kicks in.  Without compromising speed, the mail router has a clever hand off mechanism to ensure that until the message has been verifiably passed on (and is now some other server's responsibility), it is not removed.  If a crash happens, the mail won't get lost.  If there is a massive power failure, the mail won't get lost.  If there is an earthquake and the data center is in California and the building sinks into the ground, the mail might be lost, but only if the server itself can't be recovered.  
 
This may seem obvious - most elegant systems do - but many mail systems don't work this way.  They send the mail on, then hope it got to the other side.  Microsoft's Exchange Connector has long been plagued with just this problem.  The Exchange Connector takes the message, thus relieving the Domino router of its responsibility, and then if the Exchange Connector machine dies or backs up or freezes, all of which happen distressingly often, the mail is lost.  Simply, irretrievably, silently lost.  (One of the huge advantages of CoexLinks over the years has been the simple fact that it works on the Domino server, and thus gets to rely on the Domino server's reliability.  It is always good to tie your cart to a strong horse.)
 
All of this is a long winded way of getting to a bit of relief I had yesterday.  Somebody used the Lotusphere Sessions db to ask a question, and a good question at that, and CoexEdit failed.  It didn't crash or do anything dire, it just happened to be using an evaluation license on Tranquility/TurtlePublic, the public server, rather than a production license.  Nonetheless, the process failed in an unanticipated way, thus giving a bit of insight into CoexEdit's resilience to failure.
 
Fortunately, CoexEdit passed the test.  The software is designed so that as a person saves, the synchronization happens between HTML and rich text, but if it doesn't happen then, it simply waits silently for the next time somebody opens up the document using CoexEdit, or runs a process with CoexEdit.  In this case, when I replicated to a local workstation with CoexEdit, the synchronization happened, and now the message saved on the system where CoexEdit failed is back and working, without any intervention.  The Turtle Partnership made sure that CoexEdit was up and running again, so the failure is unlikely to occur again, but it is a relief to know that if it does, our software will handle it even if things go wrong.

Tags:

Tue 21 Oct 2003, 02:06 PM
There are only a few things that I am really good at, such playing with small children, baking bread, manipulating rich text.  There are a great many that I am horrible at, such as playing basketball (or baseball or hockey or football or...), ordering wine, picking out birthday presents.  Finally, there are a great number of things that I muddle through without any great competence, such as, well, everything else.
 
One great pleasure I have is finding in other people the things they are really good at.  You can usually tell quite quickly just by the way they sit up and pay attention and ask pertinent questions about their area of expertise.  Then, the mind whirrs for a moment, and BAM! the answer is there.
 
I was witness to this today, and it was fortuitous, because the area of difficulty was JavaScript and Notes development in general.  Notes development may fall into the third area I describe above, but I'm afraid JavaScript falls into the second.  Anyway, I've been having a nagging problem with the Midas Help database integrated into the website that I described before.  I was getting a JavaScript error when I went to one view and not to the other, and it seemed to have something odd to do with the IFRAME I was using and the frameset in the Help db, but I was lost.  Not just ordinary lost, like driving down Vine when you know you are supposed to be on Sycamore and the pizza place must be somewhere.  No, this was lost like hiking into the woods in Alaska and losing your compass and twisting your ankle, without a map and with only rancid bacon to keep you company.  That kind of lost.
 
Anyway, I called my various sources, who mostly shrugged, and finally Andrew Pollack pointed me towards Rich Schwartz.
 
"Are you sure he'll know?", I asked with significant doubt (not due to any worries about Richard,  but due to my fear that fate was on my side).
 
"Trust me, he'll know in a heartbeat.", Andrew said (or something like that.  I'm not a reporter, so I don't carry a little pad of paper to make sure I am misquoting people properly).
 
So, I called Richard (because we are both in Penumbra, so I have no shame about begging a bit of free advice), and I described the situation.  I must admit, I held out little hope.  He didn't have the design of the database.  He didn't have a person with a clue on my side describing the situation (just me).  I sighed, and I swear the rancid bacon sighed with me.
 
But a couple of incomprehensible (to me) questions later, and Richard, without anything in front of him but the source in HTML and the basic problem described, said (and again I paraphrase), "Your view has an onLoad on the $$ViewTemplate for that view and it is conflicting with the frameset".
 
Huh?  That view doesn't even have a $$ViewTemplate, or so I thought.  And even if it did, what are the chances it has an onLoad event?  Well, what do you know?  There really is a $$ViewTemplate, and it really does have an onLoad event, and when I got rid of the pesky bugger, the whole thing worked perfectly. Wow!  I'll say it again. Wow!
 
I just have to say that next time I am stranded in the Alaskan wilderness, I'm leaving the rancid bacon at home and taking a volleyball along, as I hear they make better company.  And on that volleyball, I'm writing Richard Schwartz's phone number, because you never know when a web will be strung across your path, and Richard is one heck of a wizard when it comes to web stuff.
Wed 5 May 2021, 05:47 PM
This update on an earlier post shows some of the capability of Midas LSX Version 5.75, released this past week. The goal is an instant little mini-report in a rich text field, based on almost any public REST API. Let's start at the end this time. There is a nifty REST API to retrieve foreign exchange rates. You call it at https://open.exchangerate-api.com/v6/latest. An example is today's results, which are 
 
{"result":"success", "provider":"https://www.exchangerate-api.com", "documentation":"https://www.exchangerate-api.com/docs/free", "terms_of_use":"https://www.exchangerate-api.com/terms", "time_last_update_unix":1620172951, "time_last_update_utc":"Wed,  05 May 2021 00:02:31 +0000", "time_next_update_unix":1620261101, "time_next_update_utc":"Thu,  06 May 2021 00:31:41 +0000", "time_eol_unix":0, "base_code":"USD", "rates":{"USD":1, "AED":3.67, "AFN":78.37, "ALL":102.81, "AMD":520.88, "ANG":1.79, "AOA":650.5, "ARS":93.66, "AUD":1.3, "AWG":1.79, "AZN":1.7, "BAM":1.62, "BBD":2, "BDT":84.84, "BGN":1.62, "BHD":0.376, "BIF":1950.25, "BMD":1, "BND":1.33, "BOB":6.89, "BRL":5.45, "BSD":1, "BTN":73.91, "BWP":10.93, "BYN":2.57, "BZD":2,  "CAD":1.23,  "CDF":1982.38,  "CHF":0.914,  "CLP":704.64, "CNY":6.48, "COP":3790.25, "CRC":613.73, "CUC":1, "CUP":25.75, "CVE":91.35, "CZK":21.54, "DJF":177.72, "DKK":6.18, "DOP":57.03, "DZD":133.71, "EGP":15.65, "ERN":15, "ETB":42.02, "EUR":0.829, "FJD":2.03, "FKP":0.72, "FOK":6.18, "GBP":0.72, "GEL":3.43, "GGP":0.72, "GHS":5.77, "GIP":0.72, "GMD":51.87, "GNF":9886.02, "GTQ":7.72, "GYD":213.58, "HKD":7.77, "HNL":24.03, "HRK":6.24, "HTG":86.4, "HUF":300.5, "IDR":14451.3, "ILS":3.27, "IMP":0.72, "INR":73.91, "IQD":1455.73, "IRR":41896.5, "ISK":124.59, "JMD":153.18, "JOD":0.709, "JPY":109.33, "KES":107.31, "KGS":84.83, "KHR":4071.34, "KID":1.3, "KMF":407.58, "KRW":1124.57, "KWD":0.3, "KYD":0.833, "KZT":428.31, "LAK":9416.2, "LBP":1507.5, "LKR":196.79, "LRD":171.85, "LSL":14.47, "LYD":4.47, "MAD":8.92, "MDL":17.73, "MGA":3792.33, "MKD":50.8, "MMK":1558.46, "MNT":2844.74, "MOP":8, "MRU":35.96, "MUR":40.28, "MVR":15.42, "MWK":792.93, "MXN":20.24, "MYR":4.12, "MZN":57.47, "NAD":14.47, "NGN":395.55, "NIO":34.94, "NOK":8.32, "NPR":118.26, "NZD":1.4, "OMR":0.384, "PAB":1, "PEN":3.82, "PGK":3.51, "PHP":48.08, "PKR":152.86, "PLN":3.79, "PYG":6503.36, "QAR":3.64, "RON":4.1, "RSD":97.85, "RUB":75, "RWF":984.95, "SAR":3.75, "SBD":7.9, "SCR":14.99, "SDG":378.63, "SEK":8.47, "SGD":1.33, "SHP":0.72, "SLL":10205.78, "SOS":577.27, "SRD":14.12, "SSP":177.64, "STN":20.3, "SYP":1262.9, "SZL":14.47, "THB":31.2, "TJS":11.31, "TMT":3.5, "TND":2.74, "TOP":2.26, "TRY":8.31, "TTD":6.78, "TVD":1.3, "TWD":27.94, "TZS":2315.59, "UAH":27.75, "UGX":3561.65, "UYU":43.84, "UZS":10630.2, "VES":2840459.11, "VND":23031.05, "VUV":107.92, "WST":2.51, "XAF":543.44, "XCD":2.7, "XDR":0.699, "XOF":543.44, "XPF":98.86, "YER":250.25, "ZAR":14.47, "ZMW":22.33}}
 
Even if you don't deal with JSON much, you could probably pick out that the exchange rate with CAD (Canadian dollar) is 1.23. We could certainly use the new JSON classes in Notes to traverse the JSON, find the values and build a report, but our Midas LSX is all about maximizing what you can do while minimizing the effort to do it. So, my business users want a snapshot of four specific exchange rates. I decided to present them like this:Inline JPEG image
But how did I get from the JSON returned to this table? As a practical matter, I could just use our AppendFieldsWithJSON method to create fields from everything. It would look like this (and goes on and on until ZAR), though this is not current data:
 
Inline JPEG image
 
You can see that when our method hits an object inside the object (this one called rates), it presents the values like this. But I wanted the rates presented more nicely, so I switched the properties of the AppendFieldsWithJSON to start down at the rates object (by setting ChildOf='rates'), and specify it as a vertical table inside a single tabbed table with a label. That looked like this:
 
Inline JPEG image
 
This is close, but I only want my four currencies, and I think the background should be green. Oh, and I'd like the labels to reflect the commonly used names for these currencies. So, I change the properties string a bit to include a comma-delimited list of the items I want and the way I want them to appear.
 
props = "AsTable='vertical' AsObjectArray='yes' ChildOf='rates' Items='AUD=Australian Dollar, CAD=Canadian Dollar, EUR=Euro, JPY=Japanese Yen' "
 
After a bit more tweaking of the color and tab label, I get my final code:
 
Sub Initialize
   DimAs New NotesSession
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim http As NotesHTTPRequest
   Dim gs As New Geniisession
   Dim rtitem As New Geniirtitem
   Dim rtchunk As Geniirtchunk
   Dim props As String
   Dim json_val As String 
 
   Set db = s.CurrentDatabase
   Set doc = New NotesDocument(db)
   doc.Form = "JournalEntry"
   doc.Subject = "Exchange rate data as of "+CStr(Now)
 
   ' *** Create the rich text item, overwriting it if it already exists
   Call rtitem.CreateBackend(doc.Handle, "Body"True)
 
   ' *** Add the title, and make everything Verdana to look better
   Call rtitem.DefineFont("Verdana")
   Set rtchunk = rtitem.DefineChunk("Everything")
   rtchunk.Font = "Plain 10pt Verdana"
   Call rtchunk.AppendTable(11"RowDisplay='Tabbed' TabFont='12pt Bold Verdana' BorderEffects='Drop_Shadow' TableWidth='Fixed' ", _
   "Text='' Width='3in' CellColor='RGB127, 255, 127' TabLabel='FX Rates with US Dollar'")
   Call rtchunk.ZoomIn("Table 1; Row 1; Inside column 1")
 
   ' *** Retrieve the JSON to use
   Set http = s.CreateHTTPRequest()
   http.PreferStrings = True
   json_val = CStr(http.get("https://open.exchangerate-api.com/v6/latest"))
 
   props = "AsTable='vertical' AsObjectArray='yes' ChildOf='rates' Items='AUD=Australian Dollar, CAD=Canadian Dollar, EUR=Euro, JPY=Japanese Yen' "
 
    ' *** Appends the fields to the form and save
   Call rtchunk.AppendFieldsWithJSON(json_val, props, "TextFont='Bold #004080'""TextFont='-Bold #004080'")
   Call rtitem.Save()    
End Sub
 
and when I run that, I am back to the beginning. This could be the entire rich text field, or you could have an agent just drop it in where you want in an existing rich text. 
Inline JPEG image
A lot of power with a small amount of code, and it is easy enough to tweak and change and run again so you can design and create your look without spending a ton of time designing and creating your code. That's the Midas LSX advantage, 
 
Request a Midas LSX evaluation license today and give it a try. We'll send you a sample db showing this code with a few variations to give you ideas.
 

Tags:

Thu 6 Sep 2018, 02:57 PM
Given Tim Davis' recent post, Things to know with JavaScript – JSON, let, const, and arrows, I thought it might be a good time to follow up my recent post on a RESTful interchange between Notes and Salesforce,  and show the JSON I used to push the Notes data to Salesforce. While the raw JSON data (generated using our Midas LSX) is shown below, I'll mention a few of the specifics so you know what you are seeing.

1) The Id is the Salesforce ID for the Contact sObject, saved from a previous push of the Salesforce data into Notes to make the roundtrip easier.

2) The NotesUNID__c is a custom Salesforce field I added to the ID for the Contact sObject. Salesforce always appends __c to such fields. This is used to make the roundtrip easier from the other direction. This item is created automatically when Midas is told to use JSONFormat='Salesforce'.

3)  The AccountID is taken from our document's CompanyName item. It is a native Saleforce field, so doesn't have the __c at the end. Below the JSON, I'll show the export directive which told Midas to call this AccountID. Note that JSON is in UTF8, so this looks &#220;ber &#216;st instead of like Über Øst.

4) Phone is a native Salesforce field on the Contact sObject. It is taken from our Tel item.

5) Name is a native Salesforce field on the Contact sObject. It is created from a formula language combination of the FirstName and LastName items on our Notes document.

6) Email is a native Salesforce field on the Contact sObject. It is taken from the Email item, so doesn't need a mapping.

7) SampleBody__c is another custom Salesforce rich text area field I added to the Contact sObject. It is taken from the Notes rich text item, rendered in high fidelity by Midas.

{
   "Id": "0030b000023PlWQAA0",
   "NotesUNID__c": "E04775C6408795F4852582F8004945F7",
   "AccountID": "&#220;ber &#216;st",
   "Phone": "+31 025-6206230",
   "Name": "Gunder van der Wilcox",
   "Email": "GvdWilcox@UberOst.com",
   "SampleBody__c": "<div style=\"line-height:normal;\"><span style=\"font-size: 10pt; font-family: sans-serif; \"><\/span><\/div><div align='left'><table cellspacing='0' cellpadding='0' style='width:430px;border-spacing:0;padding:none;border-collapse:collapse;table-layout:fixed;'><colgroup><col style=\"width:44%;\" \/><col style=\"width:26%;\" \/><col style=\"width:26%;\" \/><\/colgroup><tr style='vertical-align:top;'><td width='191' bgcolor=\"#ffffff\" rowspan='3' style=\"padding: 0.0000in 0.0201in; border:1px solid #000000;\"><div style=\"margin-left:1%; margin-right:1%; text-indent:1%;\" align='left'><img src=\"E04775C6408795F4852582F8004945F7_Notes_0_482.jpg\" alt=\"Inline JPEG image\" height=\"72\" width=\"39\" align='right' style=\"border:none;\" \/><span style=\"font-size: 8pt; font-family: sans-serif; \">Customer<br \/><\/span><span style=\"font-size: 10pt; font-family: sans-serif; \"><strong>Better Budgies Ltd<br \/><\/strong><\/span><span style=\"font-size: 10pt; font-family: sans-serif; \">The Aviary Group<br \/><br \/>Swallowdale 36, South Wutherford<br \/>ESSEX BB01 1BB<br \/>United Kingdom&nbsp;<\/span><\/div><\/td><td width='114' bgcolor=\"#ffffff\" style=\"padding: 0.0000in 0.0201in; border:1px solid #000000;\"><br style=\"clear:both;\"\/><div style=\"margin-left:1%; margin-right:1%; text-indent:1%;\" align='left'><span style=\"font-size: 10pt; font-family: sans-serif; \">Date<\/span><\/div><div style=\"margin-left:1%; margin-right:1%; text-indent:1%;\" align='left'><span style=\"font-size: 10pt; font-family: sans-serif; \">05\/17\/2002<\/span><\/div><\/td><td width='114' bgcolor=\"#ffffff\" style=\"padding: 0.0000in 0.0201in; border:1px solid #000000;\"><div style=\"margin-left:1%; margin-right:1%; text-indent:1%;\" align='left'><span style=\"font-size: 10pt; font-family: sans-serif; \">Quotation Number<\/span><\/div><div style=\"margin-left:1%; margin-right:1%; text-indent:1%;\" align='left'><span style=\"font-size: 10pt; font-family: sans-serif; \">QN&#8722;99283-MM2<\/span><\/div><\/td><\/tr><tr style='vertical-align:top;'><td width='114' bgcolor=\"#ffffff\" style=\"padding: 0.0000in 0.0201in; border:1px solid #000000;\"><div style=\"margin-left:1%; margin-right:1%; text-indent:1%;\" align='left'><span style=\"font-size: 10pt; font-family: sans-serif; \">Customer Reference<\/span><\/div><div style=\"margin-left:1%; margin-right:1%; text-indent:1%;\" align='left'><span style=\"font-size: 10pt; font-family: sans-serif; \">BL10923-B573<\/span><\/div><\/td><td width='114' bgcolor=\"#ffffff\" style=\"padding: 0.0000in 0.0201in; border:1px solid #000000;\"><div style=\"margin-left:1%; margin-right:1%; text-indent:1%;\" align='left'><span style=\"font-size: 10pt; font-family: sans-serif; \">Terms of Payment<\/span><\/div><div style=\"margin-left:1%; margin-right:1%; text-indent:1%;\" align='left'><span style=\"font-size: 10pt; font-family: sans-serif; \">30 days net<\/span><\/div><\/td><\/tr><tr style='vertical-align:top;'><td width='114' bgcolor=\"#ffffff\" style=\"padding: 0.0000in 0.0201in; border:1px solid #000000;\"><div style=\"margin-left:1%; margin-right:1%; text-indent:1%;\" align='left'><span style=\"font-size: 10pt; font-family: sans-serif; \">Valid to<\/span><\/div><div style=\"margin-left:1%; margin-right:1%; text-indent:1%;\" align='left'><span style=\"font-size: 10pt; font-family: sans-serif; \">06\/17\/2002<\/span><\/div><\/td><td width='114' bgcolor=\"#ffffff\" style=\"padding: 0.0000in 0.0201in; border:1px solid #000000;\"><div style=\"margin-left:1%; margin-right:1%; text-indent:1%;\" align='left'><span style=\"font-size: 10pt; font-family: sans-serif; \">Delivery Time<\/span><\/div><div style=\"margin-left:1%; margin-right:1%; text-indent:1%;\" align='left'><span style=\"font-size: 10pt; font-family: sans-serif; \">2 Wks<\/span><\/div><\/td><\/tr><\/table><\/div><div align='left'><span style=\"font-size: 10pt; font-family: Verdana; \"><\/span><\/div>"
}

To generate all this, I used our Export to JSON sample db. This is the Export Directive form, which allows a coding-free definition of what is to be exported.. I am only exporting a single document by UNID, but we can generate by view or selection formula or whatever. Note that with the fields to export, we start with the source item or formula, then an equals sign, then the name to use inside the JSON, so FirstName+" "+LastName=Name uses the formula FirstName+" "+LastName to added the Name in the JSON. This can be any Notes formula, including ones that use @DbLookup, for example.

Inline JPEG image

So, that is how I generated the JSON to use in the RESTful exchange going from Notes to Salesforce. I'll show the other way around in a future post.

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

Tags:

Wed 12 Jan 2005, 11:01 AM
I am working on my upcoming presentation for the Bundled Know-How conference EntwicklerCamp '05 on Pushing the Limits - Building Top Notch Lotus Software Extensions.
Aside: If you are in Germany or nearby, this is a conference you should seriously consider.  Besides this session, and my second one, Make Rich Text Your Business, there are sessions on Sharepoint and Office Integration, QuickPlace, SameTime, RSS, XML, Domino and .Net integration, etc. etc., and a lot of great speakers, including Gary Devendorf, Ed Brill, Rudi Knegt and Bernfried Geiger.  I hope to see you there.  But I digress...


Anyway, I was working on my presentation in between support calls and development and fixing the sessions db, and I got a relevant question in the mail... (read on)
Thu 15 Jan 2004, 02:21 PM
Notes/Web Coexistence Tip #5

I hope to see many of you at Lotusphere, and especially at my session on Advanced Lotus Notes/Web Coexistence on Tuesday at 2:30pm in the Swan Pelican.  (Download the Lotusphere 2004 Sessions DB I created and you can even mark it down and keep track of which other sessions you'll have to find in repeats.) 

I have really enjoyed writing some technical content on other topics besides rich text, so I thought I'd throw another one at you to whet your appetite for the Lotusphere session... (read on about text popups that work on both the Notes client and the web)
Tue 27 Apr 2004, 02:45 PM
While it is not a well kept secret, the undocumented Lsi_info function in LotusScript has secrets within secrets.  There is actually a file called LSPRCVAL.LSS in your Notes directory which lists a number of constants for Lsi_info (see the bottom of this post for the 6.0.2 version), but besides these documented constants for the undocumented function, there are undocumented constants.  I am going to concentrate on three that help significantly when tracking memory loss.  This is an issue that is near and dear to my heart since I develop C/C++ extensions and LSXs, and while this may shock you, sometimes memory leaks.   Eeek!  These functions are very helpful when testing our Midas Rich Text LSX, as well as other LSXs, to ensure that memory is not leaking, but even for non-API developers, these are very helpful for determining whether Notes is not letting go of memory for one reason or another.

"So", some bright soul is sure to say, "aren't these just the constants for GetThreadInfo?"

Well, yes they are, but Lsi_info allows values that GetThreadInfo doesn't, and also works in any previous version of Notes, which GetThreadInfo doesn't either.  For these reasons, I use the Lsi_info function.

My agent
The simple agent I tend to use is below saves the agent name and three values:

LSI_Info(50) returns the LotusScript memory allocated. 
LSI_Info(51) returns the LotusScript memory allocated from the OS. 
LSI_Info(52) returns the LotusScript blocks used. 

Sub Initialize
   DimAs New NotesSession
   Dim agent As NotesAgent
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   
   Set db=s.CurrentDatabase
   Set agent = s.CurrentAgent
   Set doc = New NotesDocument(db)
   doc.Form = "MemoryLog"
   doc.AgentName = agent.Name
   doc.lsMemory = Lsi_info(50)
   doc.lsMemoryOS = Lsi_info(51)
   doc.lsMemoryBlks = Lsi_info(52)
   Call doc.Save(True, True)
End Sub

My agent simply saves a document with the current values each time it is called.  You could log this instead, or simply compare one to another, but be aware that there is a lot of start up cost to some operations, and there is also a cost to any background processes running, so try this when nothing else is happening and when you control the situation as much as possible.  With LSX issues, or API issues called through LotusScript, the most important number is usually the blocks.  These represent the "handles" used to open a document or allocate a block of memory, and if this value keeps growing, you will eventually die.  The LotusScript memory tends to grow more with pure LotusScript use, and the memory allocated from the OS tells you whether you are taxing the external memory.  

My best advice is, don't sweat the details.  If any of these values keeps growing, you probably have a problem.  If the number of blocks keeps growing, make sure to do explicit deletes of objects and see if that helps.  If the blocks stay the same and memory keeps growing, watch for arrays and lists that are growing uncontrollably.

Additional undocumented codes
LSI_Info(12) Procedure name of call to current procedure (according to this post by Damien Masson)

LSI_Info(14) returns a list of the LS modules called so far. There are three parameters for each module. The first seems to be some code for the script library, the second is the module name, and the third is the last line number executed in the module before the net module was called (according to this post by Peter Presnell)

Documented codes from LSPRCVAL.LSS file
'-----------------------------------------------------------------------------
' File:      lsprcval.lss
' Copyright (c) 1997 Lotus Development Corporation
'
' Description:  Constants for use with the LSITHREADINFO builtin
'
'-----------------------------------------------------------------------------
public const LSI_THREAD_LINE=0
public const LSI_THREAD_PROC=1
public const LSI_THREAD_MODULE=2
public const LSI_THREAD_VERSION=3
public const LSI_THREAD_LANGUAGE=4
public const LSI_THREAD_COUNTRY=5
public const LSI_THREAD_TICKS=6
public const LSI_THREAD_TICKS_PER_SEC=7
public const LSI_THREAD_PROCESS_ID=8
public const LSI_THREAD_TASK_ID=9
public const LSI_THREAD_CALLPROC=10
public const LSI_THREAD_CALLMODULE=11

Wed 5 Feb 2020, 10:20 AM
Exciton (n): an elementary particle in an excited state, the combination of an electron and a positive gap...
 
It is understandable that a lot of folks in the Yellowverse are wary of hype and weary of letdown. The past several years have seen a lot of disappointment, and while it has been a relief having HCL take over first development and then the reins of the Notes/Domino/Sametime/Connections/etc. software, many have felt little more than cautious relief.
 
It's time for something more. It's time to feel some passion. It's time to seize new opportunities and run with them.
 
It's time to get your Excite On!
 
Those of you following my blog series know that I am focused on new technologies offered or improved in Domino 10 and 11, but especially anything which offers opportunities in the web-oriented world of 2020. A lot of developers left Domino behind as they embraced full stack development, Node.js modules, web services, and the like. But HCL has made sure that Domino can be a player in those arenas. Now, it is our turn. We can embrace the new or cling to the old. We can merely exist or we can get excited. Domino is still a fantastic infrastructure to build on, still has top notch security along with rapid low code development tools and a fully realized set of integrated capabilities many other ecosystems can barely dream about. But it can also now play better with others.
 
Genii Software is embracing the new. Today, I want to tell you a bit about our new product and services line, Exciton (pronounced "excite-on!"). There are at least three products planned, but we'll also be offering both services and custom bespoke solutions. Some of these will play in the Node.js space, offering enhancements and modules to work with Domino and other HCL products in JavaScript and also integrate and support other non-HCL systems. Some will be oriented toward web services. All will offer exiting new opportunities for you to build on Domino, proudly and defiantly even, and to embrace new technologies while harnessing the best of wht you know already.. 
 
Our first product in the new line is called Exciton Boost, and it goes into beta later today.
 
 
Inline JPEG image
 
Product goal: Boost the capabilities of both the AppDev Pack's domino-db module and Domino Access Services' REST API without requiring any client components while maintaining the security model of Domino and avoiding conflict with future enhancements by HCL.
 
For Node.js developers:
 
1) Adds RT/M support (support for Rich Text/MIME fields) to domino-db, where it is currently not supported.
2) Adds SSFS (server-side formula support) to enable formula language computation for simple fields and computed HTML for RT/M.
3) Adds features to reduce number of domino-db calls needed, this reducing load and enhancing speed on the Domino server
 
For full stack web developers:
 
1) Improves RT/M support by improving both one way and roundtrip rendering
2) Adds SSFS (server-side formula support) to enable formula language computation for simple fields
3) Adds features to reduce number of REST calls needed, this reducing load and enhancing speed on the Domino server
 
Designed for Domino 10 or 11 on Linux or Windows (for now) with AppDev Pack 1.0.3 or higher
 
Interested?  If you would be interested in participating in the beta, or even if you just have questions, contact me by e-mail at 
 

Tags:

Wed 6 Jun 2018, 11:59 AM
This is the first in a series of short posts on configuring the CKEditor toolbar which is used by default in XPages for rich text fields, but which may also be added to Classic web applications with only a couple of extra steps. When searching for documentation on configuring the toolbar, almost the only posts or articles I could find show how to switch between "standard" toolbars or how to create a custom toolbar using the existing elements. I'll cover those briefly, but also show a couple more.
 
1) Switching between standard toolbars. 
There are a few standard named toolbars, 'Large', 'Medium', and 'Slim'. The easiest and most common modification in XPages is to set a dojo attribute named toolbarType to one of these three names. For example, to switch to Slim, the dojo properties would look like this:
 
Inline JPEG image
 
The different standard toolbars look like this:
 
Slim
Inline JPEG image
 
Medium
Inline JPEG image
 
Large
Inline JPEG image
 
2) Moving the location of the toolbar to the bottom 
There are times when the toolbar is in the way at the top, In this case, you can switch the toolbar to the bottom of the editor pane by setting the toolbarLocation attribute to "bottom"
 
Inline JPEG image
 
In this case, the editor would appear like this.
 
Inline JPEG image
 
 
3) Configuring your own toolbar 
In some cases, you want your own defined subset of icons. In that case, you created a dojo attribute named toolbar and give it a computed value. In the box, you create a toolbar sting and return it. Creating an ultra-minimal toolbar could look like this (showing the popup box):
 
Inline JPEG image
 
In this case, the editor would appear like this (back at the top, but could be at the bottom).
 
Inline JPEG image
 
To give you an idea of the possible tools (without adding extra plugins), this is the definition of the Large toolbar. The items are the names to look at, though you can create your own groups just like this.
 
CKEDITOR.config.toolbar_Large =
[{name: 'tools', 
   items:['Undo','Redo','MenuPaste','Find','IbmSpellChecker','ShowBlocks','IbmPermanentPen']},
{name: 'styles', 
    items:['Format','Font','FontSize','Bold','Italic','Underline','Strike','TextColor','BGColor','Subscript','Superscript','RemoveFormat']},
{name: 'paragraph', 
    items :['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock','NumberedList','BulletedList','Indent','Outdent','Blockquote','BidiLtr','BidiRtl','Language' ]},
{name: 'insert', 
    items:['Table','Image','MenuLink','Anchor','Iframe','Flash','PageBreak','HorizontalRule','SpecialChar', 'Smiley']}];
 
 
4) Other toolbar attributes
If you want to play a bit with other toolbar attributes, take a look at the CKEditor 4 API toolbar config settings. Note that most can be created as named dojo attributes, but also note that IBM confused matters some by renaming the toolbar you see on that page to toolbarType. For example, if you have a large, multi-line toolbar, you can set it to be collapsed by setting toolbarStartupExpanded to true and toolbarCanCollapse also to true. The user than has a small twistie to expand the toolbar if desired.
 
I hope this has been helpful. My next post will be about using the pre-installed CKEditor in a Classic web application, with notes about how to do these same settings in that context where there are no dojo attributes.
 
All topics in the series
 

Tags:

Mon 16 Sep 2013, 12:56 PM
One of the challenges of writing software is to balance the simplicity and complexity so that the users can mostly revel in the simplicity, but can harness the power of the complexity when necessary. For example, the following are all fairly simple agents, but the first uses only defaults and thus renders all the non-system items on the document, and renders the full rich text field. The second narrows down the export to specified fields. The third uses those same narrow set of fields, but renames them. It also says to only render the first graphic in the Photo field and to render the Col1 item as plain text.

%REM
   Agent SimpleAgent1.json - Generate all non-system items
%END REM
Option Public
Option Declare
Uselsx "*lsxrtc"

Sub Initialize
   Dim gColl As New GeniiCollection
   Call gColl.AddByFTSearch("""CurbAppeal.nsf""Lyndhurst")
   Print gColl.GenerateJSON("""")
   Print "Content-Type: application/json"
   Print ||
   Print gColl.GenerateJSON("""")
End Sub

Inline JPEG image


%REM
   Agent SimpleAgent2.json - Only generate certain items in a particular order
%END REM
Option Public
Option Declare
Uselsx "*lsxrtc"

Sub Initialize
   Dim gColl As New GeniiCollection
   Call gColl.AddByFTSearch("""CurbAppeal.nsf""Lyndhurst")
   Print "Content-Type: application/json"
   Print ||
   Print gColl.GenerateJSON("StreetAddress,City,Price,Photo,Col1""")
End Sub

Inline JPEG image


%REM
   Agent SimpleAgent3.json - Rename some variables and alter the rich text generated
%END REM
Option Public
Option Declare
Uselsx "*lsxrtc"

Sub Initialize
   Dim gColl As New GeniiCollection
   Call gColl.AddByFTSearch("""CurbAppeal.nsf""Lyndhurst")
   Print "Content-Type: application/json"
   Print ||
   Print gColl.GenerateJSON("StreetAddress=Address,City,Price=Cost,Photo[Graphic 1],Col1[Plain Text]=Plain""")
End Sub

Inline JPEG image
Thu 19 Feb 2009, 10:04 AM
In this post, I talk again about email, and a relatively common item in email, list items.  But even though there are lots of list issues in Notes MIME rendering, this is a particularly bad example of how content can be lost along with formatting.  Read just the second letter (rendered by Notes MIME), and think about how it implies that the candidate meets ALL of these qualifications.  Would you like to chance that misunderstanding?

I do have a confession to make.  This problem was identified by a beta tester last night after I released Beta 2, and iFidelity didn't handle these well either.  On the other hand, I fixed it last night in what will be Beta 2a that I will release today.  Would you like to bet on whether IBM will fix this in their rendering by Version 9, now that I have publicly identified the problem?

Email created in Notes client with checked and unchecked items

(read on) to see how this is rendered by native MIME rendering

Checked and unchecked bullets in Notes client

Tags:

Fri 26 Nov 2004, 08:28 PM
I have long been intrigued by the concept of adaptive websites and adaptive applications.  This concept seems to have been popularized based on a paper called Adaptive Web Sites - An AI Challenge, which has a number of wide ranging goals, but while there is a lot of interest and a fair number of product offerings, it feels like most are focused pretty narrowly on
web sites that automatically improve their organization and presentation by learning from user access patterns.
       - Adaptive Web Sites
(read on)
Thu 16 Sep 2004, 11:02 PM
You can read the press release and read all about how our new Midas Rich Text C++ API lets you build new kinds of extensions, but you can also get an evaluation license and download the sample program, and build yourself a little menu add-in to see for yourself.  Take a look down below at the bottom two items on the Actions menu, and these actions are now available from any view in any database.  What could you build in to your Notes client with that kind of power?  (I have a menu add-in which just sorts tables and exports graphics, because those are two things I like to do a lot)  See below the image for a brief excerpt of the code involved... (read on)
Tue 3 Feb 2004, 10:10 PM
As described in Focus - Building a smarter website, here is the snapshot of focus material for doclinks, link hotspots, etc.  See the latest version by going to the Midas page focusing on doclinks... (read on)
Thu 23 Dec 2004, 11:43 PM
To follow up on my Color coding formula language, I thought I should include the color coding agent I use for formula language.  I'll also put it out in a separate database soon, because you are missing a crucial ingredient here.  That is list of 336 reserved words.  Rather than putting in a whole slew of HighlightText calls for each keyword, I use our HighlightMatching method, which simply looks in a view, pulls out each keyword and then highlights it.  To handle another language, such as Java, would be a trivial case of populating its own set of reserved words.  Note that the HighlightMatching method does distinguish between words and parts of words, so only whole words are highlighted.

Again, this logic is not very robust, but it is a heck of a quick and easy way to color code LotusScript (but you need to have our Midas Rich Text LSX)... (read on)
Tue 28 Oct 2003, 08:20 AM
"You're taller than your e-mail" was the first thing Bill Buchan said to me at the UK Admin-Developer Conference after my session.  It seemed ironic from someone who I had pictured as Hagrid after reading and hearing about his exploits, but who is actually somewhat short and round robust and vertically challenged.  (Of course, I am 6' 6 1/2" (or two meters, to be even easier), so maybe he has a point.)

It seems to be human nature to think that others will be "like us".  It surprises us when people speak differently or look different or like different sorts of food.

What constantly surprises me is that people at these conferences do seem to have one thing in common, with each other at least, if not with me.  They all seem very happy with technology.  Oh, they may quibble about J2EE vs .NET or Mac vs. Windows or Domino vs. Websphere, but they all actually seem quite happy discussing it.

Why aren't they like me?  I hate technology.  I don't like PDAs or WIFI cards.  I certainly don't want a phone that is smarter than I am.  I would be more than happy if I could develop software without any mechanical device at all.

Because I do like to develop software.  Not because I like the technology, but because if people must use the horrid stuff, it should be easier than what I have to go through.  I once did a demo for a company with a simple table with seven rows and three columns and a bit of LotusScript code using Midas (10 lines in all probably) which sorted the table.  No loops, no fuss, with the guts of the code being something like:

Call rtitem.ConnectBackend(doc.Handle, "Body")
Set rtTable = rtitem.DefineChunk("Table 1")
Call rtTable.SortByRow(2, True, True, False)
rtitem.Save

It was short.  It was easy to read.  It was fairly clear what it did.  It ran practically instantaneously.  So why did I show them?  Because the kicker was, those four lines of code ran over eight and a half million lines of C code.  That's right, eight and a half million lines (obviously not all different lines, because there are only about 40 thousand lines of code in all of Midas).  So what's the point?

For those of you who have not tried to manipulate rich text with the C API, you'll simply have to take my word that it is horrible, wretched stuff.  That table might have nested tables and sections and graphics within it.  It  might have fifty columns instead of three.  The table cells might be empty or filled with pages of formatted text.  Midas has to handle all that, determine what to do, take the table apart and put it back together again, and it has to do it efficiently.  It has to handle LMBCS and hotspots and packed data records and so on and so on.

"So, why does he do this again?", you might reasonably ask yourself.  

Because, as I said,  I hate technology.  Nobody should have to go through the pain I go through.  Other, "normal" people, don't like to sit around and code, or program their wireless PDA Swiss army knife electronic smart gadgets either.  "Normal" people want to point at what they want and say "Sort yourself, table" and then go home and watch reality TV on the telly.  They don't find any joy in iterating through nested structures or building hierarchical multiple inheritance objects that wet their pants if the expected data is different than they expect.

So, I hereby dedicate Midas to the "normal" people, who don't like programming, and think it should take no more lines to do a task than it does to describe it.  And should you think that even that agent I have above is a bit too much, consider that in @Midas Formulas, the formula code to do the same thing would be:

@DbCommand("Midas":"NoCache"; @DocumentUniqueID; "Table 1"; "SortByRow"; 2; @Yes; @Yes; @No; "Save")

So go home, and enjoy the telly!  I'm going to go back and hang around with a whole bunch of people who look shorter than their e-mails, but have digital cameras which hold 850 pictures at 20 zillion by 20 zillion resolution, whatever that means.
Mon 14 Mar 2005, 10:22 AM
Sometimes a picture is really worth a thousand words.  My nine year old son was curious about what the heck I was working on so hard, and I said I'd show him.  I have to admit that the results surprised me considerably.  I apologize for the long post, but you have to see the series of images to really get the impact.  For what it is worth, my son "got it" completely about CoexEdit, which is a good sign, I think... (read on)
Mon 6 Dec 2004, 11:50 AM
A while back, I implemented a hook into the search for both our Midas Help db and our Support Forum that would send a notification of the searches that were made.  I wanted to know what people were looking for, and it has been useful, but it has also been very frustrating.  People search the Support Form for topics that would be better suited to searching the Midas Help db, and vice versa.  This weblog isn't searchable at all, as my daughter pointed out recently when looking for my posts about her clueless date and his tipping ability to show to a friend.  Besides an interest in obscure dating advice though, there is lots in here that is valuable... (read on)
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
 
 
 

Tags:

Mon 16 Sep 2019, 03:22 PM
As folks like Mat Newman run around the globe signing up some new Notes/Domino customers and reinstating others, there is a recognition that Notes/Domino still has a lot to offer. While the promise of new features may encourage some, many simply want the same stability, reliability, and ease-of-development that we have all known for years (er, decades).
 
But while consistency is good in some areas, there are other areas that are consistent in unfortunate ways. One of those is mail rendering. Too often, people send off emails not realizing that they will arrive looking far different and sometimes containing less information that intended.
 
Here's an example from Singapore (okay, the original customer was from that region, but the identifying information has been altered). This was a real problem for a customer, which you could blame on the cringeworthy decision to use gradients except that many more people do than you might hope.
 
 
In Notes V11 Beta 1 (though it looks identical in earlier versions because rich text is nice like that):
 
 
Inline JPEG image
 
Sent to Gmail using the Notes 11 client (set to send as MIME):
 
Inline JPEG image
 
 
Sent to Gmail using the Notes 11 client (using CoexLinks Fidelity):
 
Inline JPEG image
 
 
Let me assure you, this is not a Notes 11 Beta problem, or at least no more than previous versions. I went back and testing to ND7...
 
Inline JPEG image
 
 
Amazing consistency. I checked these versions with CoexLinks Fidelity as well.
 
Inline JPEG image
 
 
I guess the message is, there are tons of great reasons to use Notes/Domino even in 2019, but don't expect everything to have improved. For that, you might need to call an ISV and make the great in Domino even greater.
 
 
 
Additional note:
In case you happen to know (someone always seems to) that Outlook 365 does not support gradients, this is how the CoexLinks Fidelity email looks in Outlook 365. Note that we degrade to the higher contrast color so that you will not miss any information.
 
Inline JPEG image
 

Tags:

Wed 6 Jan 2021, 12:24 PM
Following up on the promise in yesterday's post, REST plus RPC: Do the demo backward, this post describes our first steps in building the nested tabbed table report demo.
 
My wife works in a preschool, and the first lesson for a successful day is: Rest first (well-rested and well-fed kids are happy kids). Most often, we find the same lesson is true when building apps which may require both the REST API and remote procedure calls: REST first (collect the necessary data, and only that data, in the most usable format).
 
Let's examine the data requirements by looking at a snippet of the table and marking up what data we'll need, some item values and other formulas.
 
Inline JPEG image
 
For those who have been following along, there are direct parallels  from my earlier post, Data from Domino: nuts and bolts of REST calls. That post is a good place to start when thinking about extracting data from any database using Exciton Boost's REST API. It is also a good post for showing many different ways to call the REST API from different languages. In this post, I'll stick to HTTP for clarity.
 
Task 1: Get list of accessible views
Returns a JSON array of objects, one for each view that is included, implicitly (all views) or explicitly (specified views), in the Exciton configuration db and marked as discoverable. Exciton is strict about data security, so views may be accessible but not discoverable. Views not included are inaccessible and will return a 404 error.
 
GET /ReportIt.nsf/api/boost/views HTTP/1.1
Accept: application/json
 
One of the accessible views is (AllOrdersByState) which has a UNID of 8F4CC3794598B864852586540074DE3F. We could access it using the UNID, but since using view names was added in Exciton Boost 4.6.0, we'll do that instead.
 
Task 2: Get view with columns & metadata
Returns a JSON array of objects, one for each document in the view. Each document includes a link to get the document from the documents collection as well as item values for each view column. Note that there are parameters to page through the view if desired.
 
GET /ReportIt.nsf/api/boost/views/(AllOrdersByState) HTTP/1.1
Accept: application/json
 
We get a JSON array of objects like that below. From this, we know we'll need State, City, and Qty, but won't need anything else.
 
Inline JPEG image
 
Task 3: Add selected items to view results 
Going back to the view, the request can include either additional or replacement items for the view columns using an item list via URL or HTTP header. This allows retrieval of any allowed items with the view results, including rendered rich text items.
 
GET /ReportIt.nsf/api/boost/views/(AllOrdersByState)?metadata=false HTTP/1.1
Accept: application/json
X-Items-List: State,City,LastName+", "+FirstName=Saleperson,Unit,Quantity,Color,DeliveryMethod,@Text(Price;"C,")=Price
 
And now we have the data we need in the format we need without the extra baggage. This call is the one REST call that is necessary, though it only returns 20 documents in the view at a time by default. That's a matter for another post as we process the data further
 
Inline JPEG image
 
 
=> Request a free Exciton Boost eval in January, and if you later purchase a license. we'll add in four hours of development assistance, a $700 value. <=
 
 
Continuing reading as I develop the solution. My follow up post, REST plus RPC: building the JavaScript for RPC calls, is now available.

Tags:

Tue 3 Feb 2004, 11:13 AM
I'll be honest up front: I am not a great web designer.  The Genii website looks OK, especially if I keep my hands off the UI, but I am not a brilliant JavaScript expert or CSS expert.  I honestly don't want a lot of flash and sizzle, because this is a serious, business oriented website, and flash tends to distract rather than focus.

So what can a guy like me do to improve the website?  I need to focus on content, but the more content I add, the harder it is to find the information you may need, which is just a subset of the available information.  It seems to me that the key difficulty is getting the website to focus on what the user wants.

How can we know what the user wants?  We can always ask, and that is a great way, but we also have some other clues.  How did the user get to this page?  Let's say the user searched for "Generate HTML with Midas LSX" on  Google or Yahoo or some other search engine.  The first result points to our specific Midas LSX page, but the Midas LSX page doesn't have a lot of information about HTML generation, as that is just one of many topics of interest to those looking at Midas.

Or it didn't until today... (read on)
Tue 3 Feb 2004, 10:09 PM
As described in Focus - Building a smarter website, here is the snapshot of focus material for dynamic tables.  See the latest version by going to the Midas page focusing on dynamic tables... (read on)
Thu 29 Jun 2006, 12:08 PM
The Export Shop Sketch
(with thanks and apologies to Monty Python)

(a customer walks in the door.)

Customer: Good Morning.
Owner:    Good morning, Sir.  Welcome to the IBM Lotus Notes Export Facility!

(read on)
Mon 10 Oct 2005, 06:22 PM
Julian posted an interesting post today called Rounded Tables in Notes.  I had seen the border image option, but I had never realized how it worked for something like rounded table borders.  Of course, once I saw it, I had to add the ability to create these to our Midas Rich Text LSX.  I create a little gif image:

Inline GIF image

and then I added it as an image resource to a test database.  After adding a bit of capability to Midas, I wrote the following script.

Sub Initialize
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim rtitem As New GeniiRTItem
 
   Set doc = session.DocumentContext
   Call rtitem.ConnectBackend(doc.Handle, "Body")
 
   Set rtchunk = rtitem.DefineChunk("Everything")
   Call rtitem.Everything.AppendTable(1, 1, |
BorderStyle="Image" 
BorderImage="rounded1.gif" 
BorderThickness="5" 
CellBorder="NNNN"|, "Table created by Midas using border image")
   rtitem.Save
End Sub

I have included the look of the table created in the Notes client, but, alas, the Domino HTML renderer does not show the border image.  I'm not sure why not, since I think CSS would allow it.  Ah well, I guess I can add that to the HTML rendering engine tomorrow.

Inline GIF image

Looks pretty snazzy.  Thanks, Julian!
Thu 5 Sep 2019, 10:25 AM
Yesterday, I started a series about certain constraints on exporting or archiving Notes data to PDF. There has been more chatter recently about exporting to PDF, a feature that may be supported natively in HCL Notes V11, and that is offered as an archiving solution by some consultants and vendors. 
 
To reiterate, the PDF format itself is great for certain use cases, but has certain limitations by its nature. It is page based unlike both Notes and the web, and it is more of an image of a document than the document itself. That played a role in the first post which showed how attachments appear to be there in the PDF, but are not clickable or launchable, and require a separate process to save at all. Today's peril is similar with a Notes feature that is widely depended upon, the doclink.
 
This is the second of eight primary issues. Depending on what vendor or driver you use, a few of these may have at least a partial solution, but they are good items to check when validating your approach. The table of contents of all issues will be at the bottom of this post.
 
 
 
2) Doclinks not clickable at all, or go to the original source
 
Original Notes rich text field. A table of doclinks (from 2008 BP forum) showing original hierarchy in view.
 
Inline JPEG image
 
and if we follow one of the links, we get to
 
Inline JPEG image
 
 
PDF rendering. The doclinks look like they are there, but you can't follow them, making them both useless and frustrating
 
Inline JPEG image
 
 
Rendered by the Midas LSX to HTML. You can seem them, you can click them, you can configure where they'll be resolved (in this case, to other local HTML files)
 
Inline JPEG image
 
and if we follow one of the links, we get to
 
Inline JPEG image
 
 
Table of Contents (will be updated as the blog series continues)
 
Want to try out our Midas LSX export for yourself? Simply fill out the online evaluation request, and we'll get you started. There's no cost to seeing it for yourself.
 

Tags:

Fri 6 Sep 2019, 11:53 AM
A couple of days ago, I started a series about certain constraints on exporting or archiving Notes data to PDF. There has been more chatter recently about exporting to PDF, a feature that may be supported natively in HCL Notes V11, and that is offered as an archiving solution by some consultants and vendors. 
 
The PDF format itself is great for certain use cases, but has certain limitations by its very nature. One of those is that It is page based, and pages are defined with set heights and widths that don't easily accommodate the different screen sizes and orientations of the modern world. Worse, pages have to cut off sometimes, which means large amounts of data may be lost completely.
 
This is the third of eight primary issues. Depending on what vendor or driver you use, a few of these may have at least a partial solution, but they are good items to check when validating your approach. The table of contents of all issues will be at the bottom of this post.
 
 
 
3) Wide tables or table cells may be cut off and all data to the right lost
 
Original Notes rich text field. This is based on a customer I am working with right now, but wide tables are quite frequent in large complex forms. This table is so wide, I had to take two screen shots, but in Notes, I could simply scroll horizontally to see it all.
 
Inline JPEG image
 
Inline JPEG image
 
 
PDF rendering. There is no horizontal scroll bar, and the data to the left of the page is simply cut off
 
Inline JPEG image
 
 
Rendered by the Midas LSX to HTML. The text flows down in the table because of how the margin was set. If it were set differently in Notes, this would render with a horizontal scroll bar. Either way, all data is preserved.
 
Inline JPEG image
 
If we view the same HTML file with a different screen size, it still flows and is readable on screen.
 
Inline JPEG image
 
 
Table of Contents (will be updated as the blog series continues)
 
Want to try out our Midas LSX export for yourself? Simply fill out the online evaluation request, and we'll get you started. There's no cost to seeing it for yourself.
 

Tags:

Fri 12 Dec 2003, 12:19 PM
I have just come out the other end of one of those support nightmares, and I thought it might be informative to describe a support call from the other side for those of you who have wound up waiting and waiting for assistance... (read on)
Wed 4 Feb 2004, 10:30 PM
10:30pm - First impressions
Customers who use Midas often tell me that they decided to buy the product the first day they used it, based on either a standard sample database such as Send It! or a custom sample such as those I produce frequently for customers.  For that reason, the sample database is incredibly important, and I thought it might be useful to describe the process I use to create an effective sample... (read on)
Mon 31 Aug 2009, 11:41 AM
As part of my testing for Notes 8.5.1 (Managed Beta 8 Refresh), I am simply re-doing earlier posts on rendering with the Notes/Domino 8.5.1 beta to see if it has has improved matters.  My original post actually used the beta of Notes 8.5, but there were no changes in the HTML between the beta and Notes 8.5.0.  There are slight differences between the HTML for Notes 8.5.0 and Notes 8.5.1 (Managed Beta 8 Refresh), but they do not change the appearance.  To see those minor changes, look at the very bottom of this post.



In Part 1 of this series, I showed how IBM's rendering of MIME messages could lead your customers to think you were still running Notes R5, and how iFidelity, which is in beta right now, would allow you to send out mail that looks like it does in the Notes client rather than the way it did in 2001.  In this part, I show a parallel rendering done when Notes data is displayed on the web.


(read on) for the revised view of HTML rendering with 8.5.1 (beta 8)...

Tags:

Wed 18 Mar 2009, 01:26 PM
In this post, I talk about one of the absolute necessities of email, the attachment.  Attachments are one thing that nobody wants to get rid of, even if they favor plain text mail.  They were around long before most HTML email was thought of, and will likely be around for many years to come, at least until "the cloud" is truly ubiquitous and we can start passing links instead of attachments.

With this much riding on attachments, you might think it would be a hard thing to mess up.  Unfortunately, you would be wrong, and as is becoming apparent with IBM mail to the outside world, there is always more than one way to mess up.  It is hard to decide whether to use client or server based MIME rendering, as there are advantages and disadvantages to both.  Incidentally, Gmail is used for this demo but the exact same results are seen with Outlook or other mail systems.  Also, the rendering seen here is roughly the same in Notes 8 and previous versions.


Email created in Notes client with two attachments


Original email in Notes with attachments

(read on) for rendering madness.

Tags:

Thu 8 Jan 2009, 10:01 AM
Error resultsI have talked about this before a bit, but the error page for Genii Software's website (which comes up when you look for a page that doesn't exist) seems like a missed opportunity.  Today I took some steps to make it a bit more useful by auto-searching keywords and topics in the Midas Help database and the formulating links.  You can see the results by using a URL such as image which is a page that doesn't exist on our website.  The new error screen is shown at the right, and you will notice it has links to possible topics in the Midas Help db which match the term or a keyword.  I thought that I would take a rare chance to show some useful formula language, something I don't do in here often enough.  There is nothing here to astound the experts, but some of you who are not aware of how useful formula language can be for a website might be interested (see the formula below the image at the bottom).

This is computed text included as part of the $$ReturnGeneralError form.  Since that returns different sorts of errors, and I only care about the one, I start by using a temporary variable 
arg1, which becomes the not found design note, or "" if this is a different error.

Next, I put either a "" or the results of a partial text search of the 
FIND view in the MidasHelp.nsf database.  Note the very important [FailSilent], which ensures that a failed search will return "" rather than raising an error, which would be a nuisance to handle.  The results will be either "" or a list of values which match.  If you look at the results above, you can tell that methods such as the AppendGraphic method must use a keyword of "image" or something like it.

Finally, after ensuring that I won't have over 20 results (due to computed text issues as well as space considerations), add after eliminating duplicates and sorting the results, I am ready to create the HTML.  Note that I heavily use the feature in formula language that a formula such as 
"A"+("B":"C") will become the list "AB":"AC", which is how I first add the <a href part before each argument and then the text and ending of the a tag afterwards.  This is very powerful, but it takes some practice and trial and error.

There is more to come, such as using the same technique to make the Help topic pages have more dynamic Related Topics sections, and adding in search links on the error page, but I thought this might be useful for those somewhat new to web development or somewhat new to formula language and its strengths with lists.



arg1 := 
@If (@Begins(MessageString; "HTTP Web Server: Couldn't find design note - "); @Right(MessageString; @Length(MessageString)-45); "");
arg2 := @If (arg1 = """"@DbLookup("""":"MidasHelp.nsf""FIND"; arg1; "Subject"; [FailSilent]:[PartialMatch]));
arg3 := @Sort(@Unique(@If(@Elements(arg2) > 20; @Subset(arg2; 20); arg2)));
@If (arg3 = """<!-- No Midas Help match for '"+arg1+"' -->""<br><h3>Possible Midas Rich Text topic matches:</h3>"+@Implode(((("&nbsp;&nbsp;<a href=\"/showcase.nsf/MidasHelp?ReadForm&Focus=" + @ReplaceSubstring(arg3; " ""+")) + ("\">"+arg3)) + "</a>"); "<br>")+"<br><br>")


Of course, you probably don't want to provide links to the Midas Help database, but just a little tweaking would probably allow you to provide links to your Site map or product database or something else.  Good luck, and happy erroring!

Tags:

Mon 11 Jun 2018, 11:13 AM
This is the fourth in a series of short posts on configuring CKEditor, the web editor included with Domino. In my previous post, I showed how to create your own Hello World plugin and add it to the toolbar. Now, I'll show a useful plugin that uses the database design elements in the current database to add doclinks via a Doclink action. 
 
1) We will open a form with an embedded view to select the doclink 
The technique in Notes where you copy a doclink and then paste it elsewhere is both difficult to implement on the web and fairly cumbersome. Instead, we will launch a form with an embedded view, and then let the doclink selection happen with a simple click. Adding a bit more flexibility here, if you click the icon, you get a doclink, but if you click the subject title, you will get a text link. These are then shown in the dialog so you have a chance to edit the subject if you like..
 
Inline GIF image
 
 
2) Adding a dialog to to a toolbar plugin 
In order to launch the dialog box when we click the doclink icon on the CKEditor toolbar, we need to add a section to our plugin.js, which otherwise looks fairly like the Hello World example from yesterday. We will also add a dialogs folder under the doclink plugin folder with a doclink.js to handle the specialized logic.
 
Inline GIF image
 
Inline GIF image
 
 
3) Creating a form in the dialog to allow setting fields  
While it is easy to create the dialog and ask for input, one tricky aspect is creating a form so that the Domino design elements can find and set the fields from the opener. The input fields herewill be set when clicking the icon in the embedded view in Domino. Notice that the first part of the dialog is the Browse Database button which triggers the BrowseDatabase function I will show in a moment. Note: You could extend this  to give you a dropdown of databases, or have the form retrieve values from other databases to create a pseudo-view. The latter would be a bit more work, but would allow access to databases that did not have the form and view added to them.
 
Inline GIF image
 
 
4) Opening the form with the embedded view 
The BrowseDatabase uses the db path and ReadForm to open a form in the database which we created with an embedded view.
 
Inline GIF image
 
 
5) The logic behind the embedded view 
The trick here is to have an onClick event in the column formula which sets those values from urlForm back in the dialog which opened this window, after which you simply close the window, returning you to the dialog.
 
Inline GIF image
 
 
6) Inserting the HTML pressing OK 
Similar to the insertHTML logic in the Hello World plugin, we simply use the input fields in the onOK event to either create a doclink or a text link.
 
Inline GIF image
 
7) Commercial side-note - what AppsFidelity brings to the table 
While this plugin works like a charm if you have a web only solution, if you also have Notes users, those doclinks will be URL links and not work so well. Along with its other features, AppsFidelity auto-converts the doclinks so that in Notes they are true doclinks and on the web they are true web links. If you want to try it out for yourself, request an AppsFidelity evaluation license and see all the ways AppsFidelity can make your applications work better..
 
 
All topics in the series
 

Tags:

Mon 19 Sep 2005, 01:23 PM
With 3.50 just recently released, you might think that our "Notes/Domino 7 supported" version would be short on features, but there has been a lot of behind the scenes work done that was not ready for 3.50.  This is the third in a short series of posts on new features coming along with Notes/Domino 7 support.

Last Wednesday, I showed how Version 3.60 will add the option to suppress font tags when generating HTML, which is critical to better CSS control.

On Thursday, I showed how Version 3,60 will also add the option to generate sparse tables in HTML, which used along with the font suppression makes it possible to create tables that can be displayed almost any way with CSS.

Today, I will show how auto tagging can add ids or classes to tables, table rows (TR tag) and table cells (TD or TH tags)... (read on)
Thu 15 Sep 2005, 11:01 PM
With 3.50 just recently released, you might think that our "Notes/Domino 7 supported" version would be short on features, but there has been a lot of behind the scenes work done that was not ready for 3.50.  This is the second in a short series of posts on new features coming along with Notes/Domino 7 support.

Sparse Tables
A frequent request from customers is the ability to generate sparse tables in HTML.  A sparse table would have just the bare table tags, so <table><tr><td>content</td></tr></table>.  As an example, here is a portion of a larger table which Alan Lepofsky published in the BP forum based on Forrester Research's findings... (read on)
Fri 27 Jan 2006, 06:36 PM
I have been to a lot of Lotusphere's, and I always try to find some way to make it fresh.  In the early years, I went to sessions, in the middle years I spoke at sessions, and in recent years, I have avoided sessions like the plague.  Having tried all of those things, I thought it was about time Genii Software had our own pedestal, so what I did was stand at the pedestal and talk to people and listen to people... and talk to people and listen to people... and talk hoarsely to people and listen to people.  Well, you get the picture.  It was wonderful and exhilarating in some ways, and supremely frustrating in others.  In recent years, besides avoiding sessions, I have tried to hard to take the pulse of the our community and industry and have gotten some great product and feature ideas, and have also met a lot of people with varied interests.

But being on the Product Showcase is different.  Certainly, you meet very interesting people, and hear lots of interesting ideas, but there is a different hum, and the ideas are different... (read on)
Thu 11 Nov 2004, 03:19 PM
In working with @Midas Formulas, I am reminded as I have not been for a while how convoluted complex formulas can look.  The formatting is not simple, and the formulas tend to look like badly run on sentences.  In any case, here are three tips on how to make a complex formula a bit more readable... (read on)
Thu 27 Apr 2006, 11:41 PM
Show and tell ThursdayThis came up as a request from the IBM Business Partner forum, but I thought I'd share it.  Alan Lepofsky asked:
After working with Notes at IBM for over a decade, I have several hundred DB icons on my Workspace.   I'd say I only use a dozen or so on a daily basis.

I'd like to dramatically clean up my Workspace, remove icons, even remove entire pages.   However, I know the day I do it is going to be the day I need "that link I was sent a few years ago about X".

I'm thinking an agent could scans all the tabs, and creates a document (or email) with links to all my DBs.   I can then save that document as a backup.
 

So, here goes.  This tip requires use of our Midas Rich Text LSX, but if you happen to already have it (a heck of a lot of people do, and probably a fairly high percentage of my readers, but if you don't, why not?):

Option Public
Option Declare
Uselsx "*lsxrtc"

Sub Initialize
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim currentdb As NotesDatabase
   Dim newdoc As NotesDocument
   Dim view As NotesView
 
   Dim rtitem As New GeniiRTItem
   Dim new_rtitem As New GeniiRTItem
 
   Dim count As Integer
 
   Set currentdb = session.CurrentDatabase
   Set newdoc = New NotesDocument(currentdb)
   newdoc.Form = "Example Form"
   newdoc.Subject = "Bookmarks"
   Call new_rtitem.CreateBackend(newdoc.Handle, "Body")
 
   Set db = New NotesDatabase("", "")
   Call db.Open("", "bookmark.nsf")
   Set view = db.GetView("(All Bookmarks)")
 
   Set doc = view.GetFirstDocument
   count = 0
   While Not (doc Is Nothing)
      count = count + 1
      Call rtitem.ConnectBackend(doc.Handle, "URL")
      If rtitem.Everything.LinkReplicaID <> "" Then
         Print doc.Title(0)+":"+rtitem.Everything.LinkReplicaID
         Call new_rtitem.Everything.AppendLink(doc.Title(0), rtitem.Everything.LinkReplicaID)
         If count Mod=Then
            Call new_rtitem.Everything.AppendNewlines(0, True)
         Else
            Call new_rtitem.Everything.AppendNewlines(1, False)
         End If
      Else
         Print doc.Title(0)+":undefined"
      End If
      Set doc = view.GetNextDocument(doc)
   Wend
   Call new_rtitem.Save
End Sub

Tags:

Sun 23 Apr 2006, 08:29 PM
Show and Tell Thursday (any day)I have decided that expecting myself to actually post Show 'N Tell Thursday posts on Thursdays could lead to my not fixing bugs in a timely manner (see #10 below when you get to it), and so have decided to ignore the day of the week and simply post when and how I like, but I'll still use the graphic because it looks cool and isn't animated or noisy and doesn't spread kitty litter all over the place.

Oh yes, and I may update this post a few times to try to make it a bit more coherent.  If you don't like bloggers who edit their posts, you may want to avert your eyes for a few days and come back then.











Why bugs don't get fixed

It is a common question asked on the various forums I read, "Why hasn't [fill in the blank] bug gotten fixed, even though it has been around forever?" and since the forums are Lotus Notes forums, the questions tend to be about Lotus Notes bugs.  The funny thing is, if you hang around on Exchange forums, you hear the same questions, and the same with Oracle forums and pretty much anywhere else, including open source forums where the obvious answer is "because you didn't get off your lazy bum and fix it".

But in most of these cases, the software is not open source, and the lazy bums are perceived to belong to IBM... or Microsoft... or [name of software company].  

(read on)

Technorati Tags: Show-n-Tell Thursday, Lotus Notes, SnTT

Wed 21 Sep 2005, 10:35 AM

Integrating EditLive! for Java 5.0
I started the process of integrating EditLive! for Java 5.0 (from Ephox) with CoexEdit because of a customer requirement.... In this article, I go through the steps required. The process took about an hour... (read on)
Fri 9 Sep 2005, 04:22 PM
In the midst of testing for Notes/Domino 7, I have been finalizing some new samples for the Midas Rich Text LSX.  One is the Color code LotusScript and Formula language sample, which I use quite often when posting code.  In a self-referential kind of move, here is the code in the Color code LotusScript agent.  Pretty handy for posting samples on forums:


Sub Initialize
   ' *** Domino front-end classes
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
 
   ' *** Domino front-end classes
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim unid As String
   Dim mode As Integer
 
   Dim flag As Variant
   Dim textfrom As String
 
   Set db = session.CurrentDatabase
   Set uidoc = ws.CurrentDocument
   mode = uidoc.EditMode
   Set doc = uidoc.Document
 
   On Error Goto ErrorHandler
   Dim rtitem As New GeniiRTItem
   Dim rtchunk As GeniiRTChunk
 
   ' *** Connect to Body field and perform highlight  ****
   Call rtitem.ConnectBackend(doc.Handle, "Body", False)
 
   rtitem.CacheLinkMatching = True
   If rtitem.IsConnected Then
      If mode Then uidoc.Save
      uidoc.Close
      Set rtchunk = rtitem.DefineChunk("Everything")
      rtchunk.TextWildcards = True      
      rtitem.HighlightFont = "DarkGreen"
      Call rtchunk.HighlightText(|'*|+Chr(0))
 
      rtitem.HighlightFont = "Blue"
      Call rtchunk.HighlightMatching("", db.FilePath, "LotusScript Reserved Words", "ReservedWord", "", "MinLength=2")
      Call rtchunk.HighlightText("=")
      Call rtchunk.HighlightText("(")
      Call rtchunk.HighlightText(")")
      Call rtchunk.HighlightText("&")
      Call rtchunk.HighlightText(",")
      rtitem.Save
      Set uidoc = ws.EditDocument(mode, doc)
   End If
   Exit Sub   
ErrorHandler:
   Print "Error is& Cstr(Err) & "(& Cstr(Error(Err)) & ")"
   Resume Next
End Sub
Thu 20 Jan 2005, 01:32 PM
Like Shrek with his layers, Notes/Domino 6.x and abive has layers, and ever since Notes 6 was released, I have thought it would be fun to create an application using them, but I have never gotten around to it.  Recently, Mike Midas wrote about a case where he used layers, and it appealed to me so much I had him add them to the Lotusphere 2005 Sessions DB in Version 3 (which is now available).  Here is a sneak peek... (read on)