Ben Langhinrichs

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

Search the weblog





























Genii Weblog


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


Tue 30 Nov 2004, 11:44 PM
Mike MidasLuck be a Lady Tonight
by Mike Midas, Ace Developer

The low sexy voice came over the phone with the kind of invitation that grabbed you by the scruff of the neck and dragged you three thousand miles through the ether, no matter the consequences.  I'd never met the dame, but you could tell by her first words that I'd never walk by her in a crowd.

"Mr. Midas? This is Annika from Uppsala, Sweden, and I have a problem", she purred, and right then she could have asked for a light and the phone would have burst into flame faster than a cheap firecracker on a hot 4th of July.

"What can I do for you?", I asked, measuring the possibilities the way a jockey measures his steed.

"I work for Uppsala Exports, and we recently, uh, merged with a bigger firm."

The sudden chill in her voice made me want to pull on a sweater.  There was no mistaking the venom, and I realized there might be more to this tiger than pretty stripes.  I said nothing, and let her choose her words carefully.

"We used to use Lotus Notes for e-mail and applications", she started, and I knew by the catch in her throat that the parting wasn't her choice.  "Now, we have Outlook and Exchange", and again the tone gave away her secrets as easily as a diary left out on a high school desk.

I was ready to brush her off, since there is nothing worse than a whiny dame, but she went on and I listened.  My little black book wasn't so full that I was going to hang up on a voice like that without some hesitation.

"We have hundreds of applications written for Notes that use doclinks", she said, warming to the subject like butter on a hot stack of flapjacks.  "We thought we could just let Domino convert the links for us, but then we would still have to have Notes clients", and I hardly needed to hear the rest.  "We can keep a Domino server or two for applications, but the Notes clients have to go, and fast."  And there it was.  The naked pleading in her voice would have gotten you arrested in some Middle Eastern countries.  "So, we thought maybe we could use your Midas products to modify the applications and make them send out web URL's instead.  The applications are mostly ready for web access, so we just have to modify the code, and there are way too many to modify by hand."  Her voice drifted on, but I didn't hear most of it.

They say that life takes some crazy turns, sometimes leaving you to meander down a quiet lane with white picket fences and two fresh faced kids in every yard, then just when you get comfortable, shifting gears and sending you spinning down a steep mountain road where you have to hug the side like a distant aunt at Easter.  But seldom had I a hit a hairpin turn like this, with two wheels off the ground and my entire life set up on double reels for a twilight showing if I made a wrong turn.

"You want Midas for that?", I gasped, reeling at the thought and grabbing a shot glass and a bottle from my bottom drawer. "Midas is good for a lot of things, but look, lady, you can't go around modifying whole applications like some teenage stunt driver rearranging his face with the road."

"But I thought Midas would let me modify design elements?" she stammered, and I could feel her withdrawing like the last few bucks from my bank account on the Thursday after payday.

"Yeah, you can add some fields to a form or create an image resource or even build a page element, but this?  This?...", and I couldn't even go on.  I waited for the click as she hung up the phone on my dreams, but the sound I heard wasn't what I expected.

"I'll handle this." came the voice, hard and smooth as a fist of iron in a velvet glove.  My colleague, Crystal, took the phone from my trembling fingers, and took charge like Bobby Knight in a Hoosier play-off. "You don't need Midas, miss, but we do have a solution." she spat out, and the edge in her voice belied any chance of argument.  "You need our CoexLinks product.  It can convert doclinks to web URLs or Notes URLs, or even different types of URLs for different databases."

As Crystal walked out of the room, leaving me shattered and bruised with my ego deflated like a tire on broken glass, I could hear her going on about CoexLinks allowing a company to migrate applications to the web slowly, and the dynamic nature of the URL links.  I shut it all out.  The train may have left the station, but I didn't have to weep and wave.

Copyright © 2004 Genii Software Ltd.

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

Copyright © 2004 Genii Software Ltd.

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.  If I were to develop some course material teaching developers how to use the Midas Rich Text LSX, @Midas Formulas or Midas Rich Text C++ API, should these be free and available from here, or cost something and available from a site such as The Learning Continuum Company?

OK, raise your hand if you answered something like "Of course I'd rather have it free".  Don't be shy, as I won't be able to see you anyway.

Free is good, and a viable option, but it may not be the best option.  It is possible that a course that costs something, even a few hundred dollars, will have more credibility for some companies.  They may be more willing to allocate time to a developer who uses an on-line course that is clearly more than just a free demo.  Clearly only because there is a cost involved.  In addition, the developer or consultant who has paid a few hundred dollars for a course on Midas may be in a better position to claim some higher expertise with the product than the poor schmoe who has only browsed the website and tried out the free on-line demos and tutorials.  It is not a certification, but corporations do respect someone who has "attended a course", and a paid course may seem more "real".

So, given that, what do you think?  Should I develop a paid course and get TLCC to carry it?  I wouldn't see any of the money, so it doesn't make any financial difference to me, but I do sometimes get companies who buy a Midas license and then want to be sure their developers are getting the most out of it.  Would this be a reasonable way?

Copyright © 2004 Genii Software Ltd.

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
The problem with that focus, in my opinion, is that you don't get a chance to capture the needs of the visitor until they have accessed a few pages, and by then you may have lost them.  Now, in some organizations, this doesn't matter, since the adaptive website is aimed toward an authenticated user.  In that case, it is quite likely the website has a "captive audience".  For example, a college website could adapt to meet the "user access pattern" of a student, because they know which student it is and can track across sessions.  IBM's Partnerworld could track a partner and adapt (although they don't), so that if I always head for the downloads, those could become more prominent, but again, they would know who I am so they could make educated guesses based on my profile.

Since ours is a sales organization visited by many anonymous visitors, and since nobody authenticates, it might seem that we couldn't be adaptive, or at least not beyond a single session.  The trouble is, many users may not stay for many pages, so we don't have as many chances to adapt, and we might need want to tailor their very first page visit.

This is where presence awareness comes in.  I don't mean presence awareness in the limited sense that is used by instant messaging, but the bigger presence awareness provided by CGI - knowing where someone might be going by where they have been and who they appear to be.  We implemented a certain level of this on the Genii website a while ago, as I mentioned in Forum and Help queries back in August.  Our implementation is called Focus topics, wherein awareness of either the search term used to find a web or a specific off-site reference to our products changes the page so that it highlights topics which may be of specific use to that user.  If you search on "dynamic tables for Notes" in a search engine, and you find a reference to our Midas Rich Text LSX and go to that page, the focus topic on the left section will be on dynamic tables.  This is a form of presence awareness that can track the very first page you see.

Another form of presence awareness that we don't currently use, but have considered, is awareness of your country of origin.  Since we get hits from visitors all over the world, we could tailor some content to the country or region.  For example, visitors from China might be interested in a sample using Search and Replace technology that featured Chinese text, while those from Russia might be interested in Cyrillic samples.  Besides samples, it is possible that our "Focus on Belgium" and "Focus on Australia" type pages on the front page could be adapted to mention specific customers in different regions, so a Brazilian visitor might see a "Focus on South America", while a visitor from the United Arab Emirates might see a "Focus on the Mid-East".

Another form of presence awareness might have to do with the operating system or browser being used.  If a visitor is using Firefox, it might be good if there were an on-line sample of HTML generation that reassured them that the HTML generated would work with Firefox.  A Linux user might want to know our plans for Linux versions.  

None of these different alterations should predominate the webpage.  There is always more we don't know than that we do know about the visitor, but if any should either guide or soothe a visitor, the eventual sale is more likely.  I also want to be clear that these are not new inventions of mine.  Plenty of other websites track the referrer page or search terms, but I'm not sure how often Notes/Domino ISVs or other smaller software vendors take advantage of these techniques.  If anybody is interested, I'd be happy to share how we do it in a future post.  I'd also be happy to hear any suggestions for better ways to use presence awareness to customize and better the user experience.

Copyright © 2004 Genii Software Ltd.

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.

To IBM I offer somewhat mixed thanks.  Thanks for building a product as robust and durable and compelling as Lotus Notes and Domino so that ten years after starting to work with that software, I still make my living at it.  Thanks even more for refusing to take the time year after year after year to build in better rich text support, so that nine years after developing our first rich text manipulation extensions in our @YourCommand Toolkit, and seven years after developing our flagship Midas Rich Text LSX product, you still have nothing that really competes.  You have enabled me to send my daughter to a wonderful private college.

Likewise, to Microsoft I offer mixed thanks.  Thanks for building a compelling Outlook client which impels people to move away from Notes and a compellingly awful Exchange server which impels them back.  Thanks even more for providing the most lackluster support for your Exchange Notes Connector so that we would have a ready made market for our CoexLinks product.  Thanks as well for providing only the most minimal support possible for integration between .Net and Notes/Domino so that we would have such wondrous opportunities to provide better integration ourselves.  You have enabled me to fully fund our retirement and provide savings for my second two children to attend private colleges.

Thanks to IBM for removing even the poor excuse for a GenerateHTML method after the R5 betas, thus giving us free reign to create a whole business on high quality HTML generation.  This has enabled me to pay the mortgage and expenses for a number of years.

Thanks to Microsoft for refusing to support your Exchange Notes Connector even on your own Windows 2003 server, thus providing my wife and me with a wonderful impromptu vacation in London for our 20th anniversary.

Thanks to IBM for adding nested tables in R5, but still not supporting nested tables with your rich text classes even in the ND7 beta, much less ND6/6.5.  This has enabled me to provide a most wonderful digital camera for my daughter, and other cool electronics for those in the family who like such stuff.

The list goes on, but I must go spend some quality time with a bookcase that needs to be assembled, thanks perhaps to IBM's weak support for FindAndReplace.  

Life is good.  Thank you!

Copyright © 2004 Genii Software Ltd.

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:

ND 6 Gold Forum
"You could try to look at a tool called Midas from Geniisoft." 
     - Robert Ibsen Voith, Voith's CODE, Nov. 12, 2004

" The second option would involve using the MIDAS RichText LSX to compare the differences." 
     - Bill Ernest, Teamwork Solutions Inc., Nov. 8, 2004 

"That not only is a cool tool but also saved me *a lot* of time and headaches! Keep up the GREAT work!" 
     - Florian TA VOGLER, ICODEX Software AG, Nov. 1, 2004

"Congrats Ben, as always... an amazing product" 
     - Alan Lepofsky, IBM,  Nov. 1, 2004 

ND 4 & 5 Gold Forum
"The only way I know of to dynamically resize an image is to use the MidasLSX toolkit by GeniiSoft (Thanks Ben, it saved my job!)." 
     - John C. Palmer, JP Associates, Nov. 19, 2004

"You can probably use Notes API to reset hide-when in richtext items. Check also if MidasLSX has some hide-when features." 
     - Andrei Kouvchinnikov , Nov. 11, 2004

"One way to get your desired result is to build one document with formatted text in a RTF which lloks like a view -- but the categories wouldn't be expandable unless you used Ben's Midas Rich Text LSX"  
     - Bruce Stapley, Sep. 24, 2004

"You can do it for example using Midas Richtext LSX for LotusScript. It's a very useful tool."  
     - Andrei Kouvchinnikov, IBM,  Sep. 24, 2004 

On-Line Journals
"There's not an easy, built-in way to do this. There is no rich text class or method to handle imported images -- only attached images. 
You can use third-party tools to do this, such as Midas rich text API from Geniisoft."   
     - Andre Guirard, IBM, SearchDomino.com,  Oct. 28, 2004

"Genii Software's Midas LSX exposes this so it can be done easily." 
     - Brian Mahoney, SearchDomino.com, Aug. 27, 2004

"There is a very good product that makes much of the RichText functionality available from LotusScript; it is Genii Software's Midas RichText LSX."  
     - Brian Mahoney, SearchDomino.com, May 3, 2004

"The foreground Import command is the only way I know of to get a picture included in Rich Text "from scratch" without writing C or C++ Notes API code (or using a third-party tool such as Midas)." 
     - Andre Guirard, IBM, SearchDomino.com,  Apr. 23, 2004 

Weblogs
"I think Ben has a solution with Coex links...{link}" 
     - Neil, NotesTips.com, May 12, 2004

"Or would this require me to use something like MidasLSX to generate HTML from the RTF first, then email that?"  
     - Andy M., CodeStore.net, Jan. 19, 2004

"I have been using my friend Ben's incredible tool, the Midas Rich Text LSX, to create a kick-ass app for a client of mine." 
     - Rocky Oliver, LotusGeek.com, Nov. 11, 2003

"Yes, richtext to html conversion in notes is crap. That's what Midas is for :)"  
     - John Head, NotesTips.com, Mar. 11, 2003

Copyright © 2004 Genii Software Ltd.