Ben Langhinrichs

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

Search the weblog





























Genii Weblog


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


Thu 24 Mar 2011, 02:53 PM
Several of you have been playing with our new Domino Limits page design, which I rolled out today right before posting my earlier post. (Compare with the old page - cringe.) Along with the ability to comment on individual limits is a matching ability to tweet individual limits. It is not included in all documents yet as I am slowly making tweetable versions, but it gives you the ability to answer a question on twitter by simply:
 
1) copying the person's username (e.g., blanghinrichs) , 
2) searching the Domino Limits to find the appropriate limit,
3) opening the document by clicking on the  symbol,  
4) clicking the appropriate Tweet button (there may be multiples), and
5) modifying the tweet (e.g., changing from "Max characters allowed in Form names: 32 #DominoLimits" to "@blanghinrichs Max characters allowed in Form names: 32 #DominoLimits"). Each tweet includes a link back to the specific document showing the limit.

I am still playing around with how to make these more useful, so let me know any ideas you have. I received my first new limit in a while from Mark Ramos. As I tweeted: 

Max new docs per second before db/doc mod time skews forward: 48 #DominoLimits #JustAdded t.co/qGD8ZGO 

Now, what I'd really like are some XPage limits. There must be some.

Copyright © 2011 Genii Software Ltd.

Technorati tags:

Thu 24 Mar 2011, 12:11 PM
Back in 2004, in a post called Limits in Notes/Domino: Living document, I blogged about taking over the Domino Limits page that Mike Woolsey had maintained in the Business Partner forum for a long time before that (with his permission, of course). Since then, multiple versions have come along, and many, many people have helped shape this dynamic list of official and unofficial limits, maintained on our Domino Limits resource page. For a long time, it was the most popular single page on our website aside from this blog, until it was overtaken by the Web Editors resource page.

Thanks to the posting yesterday by Paul Farris, I was reminded of the importance of such a page. He had so many hits from re-posting the table from the Notes Help that his blog now shows the error message below. I don't know what his limits are, but clearly the interest is great. To prevent Paul's provider from having hissy fits, might I suggest you come over to the Domino Limits resource page, which has all these limits and many more. Every limit allows you to comment on it, so you can point out errors, or suggest additions and caveats. That is where the wisdom of crowds comes in. This is still a living document, as it was when Mike maintained it for years, and any new information you have to offer will help the whole community.

(Special thanks to my provider, The Turtle Partnership, for never shutting me down, no matter how I swamp their servers.)



Copyright © 2011 Genii Software Ltd.

Technorati tags:

Wed 23 Mar 2011, 08:11 AM
I don't much like sports, and I hardly ever watch football, but I can't believe anybody would be unimpressed by this catch:


Copyright © 2011 Genii Software Ltd.

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.

Copyright © 2011 Genii Software Ltd.

Technorati tags:

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.  

Ulrich 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.

Copyright © 2011 Genii Software Ltd.

Technorati 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?

Copyright © 2011 Genii Software Ltd.

Technorati tags: