The draft version of the Redbook
Self Assessment and Strategy Guide for Migrating from Domino Document Manager has been published. I contributed to the book mainly in
Chapter 11. Analyzing Customizations. Part of the effort is an upgrade to
DXLMagic which now sports a GUI (build with
Thinlet and a module that can compare two Notes database designs, not limited to DDM templates. The comparison report is a start but (for my taste) far from perfect. Give it a spin and compare some databases and let me know in which sequence I should improve what.
Posted by Stephan H Wissel on 29 July 2009
|
categories: DXLMagic
Posted by Stephan H Wissel on 28 July 2009
|
3 comments
|
categories: Show-N-Tell ThursdayXPages
The new DXLMagic UI is making progress. One of the features I'm working on are reports included into the JAR file, so you can pick them from the internal list easily. I'm planning to have reports for @Formula, Fields, HideWhen and actions. What reports would you like to see in that list?
Posted by Stephan H Wissel on 24 July 2009
|
1 comment
|
categories: DXLMagic
We get this question quite often lately obviously driven by who-does-not-need-to-be-named claiming lesser bandwidth requirement. Of course that is utter nonsense. There is no instrinct bandwidth requirement in Domino. After all Notes servers were happily running on 4800 Baud modem connections. Bandwidth is the speed, so when you rephrase the question, you see it is missing half of it: "How fast should [insert-your-favorite-land-transport-vehicle] be?" The logical reply: to do _what_? So when looking for bandwidth requirements you need to know: how much data do I have and in what amount of time do I need (or want) this data to be delivered. So step 1 is to compute these values:
- Average requirements:
[Average/Median number of messages per hour] *[Average/Median size of message] / (360* [Acceptable average delivery time in seconds])
The 360 is to adjust hour to seconds.
- Peak requirements: [Peak number of messages per hour] *[Peak size of message] / (360* [Expected maximum delivery time in seconds])
These formulas are product independent. Now you can apply additional factors. E.g. when messages are transmitted using SMTP/MIME attachments swell by 34% due to the mime encoding. Notes compresses documents, data and network communication and can save 5-70% of transmission size. Why this big spread? Well when you transmit a compressed archive file, there is little you can squeeze out it, a old MS-Office document on the other hand can loose 80% of its size when compressed. There are a few caveats of course:
- Corporate habit: we see very often that 80-90% of messages are retrieved in just 2 of 24 hours. so when you calculate 24000 messages/day you mis- calculate your average to be 1000 messages/hour while your true average is 9600 in the relevant hours.
- You underestimate your growth. What might have been enough 3 month ago might not be good enough one year in the future. (IBM internally seems to be a big difference. Using Lotus Quickr and Lotus Connections we actually see a decline in message volume)
- Management (or user) expectation: They would expect prompt delivery event for the biggest messages at peak time (ties a little toward the first point)
- Bandwidth availability. This is mostly an issue on VPN connections. The nominal speed my ISP bills me is far higher that what I ever able to get.
What's your bandwidth experience?
Posted by Stephan H Wissel on 23 July 2009
|
5 comments
|
categories: Show-N-Tell Thursday
When looking for data in a Notes database using LotusScript you have 3 possibilities: NotesView.getDocumentByKey (and its cousing NotesView.getEntryByKey), NotesDatabase.dbSearch and [NotesView|NotesDatabase].FTSearch. Use each of them wisely (when to use what might make another nice post). I want to focus on FTSearch for now. One would expect that a fulltext search against a view is substantial faster than against a whole database. However the results are quite different. The fulltext index is build once for the
entire database. So even a FTSearch against a view will use the Index for the whole database. Searches are actually very fast. What makes a difference is how the results are processed and how you intend to use the result. If you plan to list them all out, there is no real difference. If you only want to show a subset continue reading. Very often a search returns 1000 documents but you only want to show 20 or 50 at a time. The core search returns an document collection that contains the UNIDs but not the document objects. When you use db.FTSearch the document objects are initialised when you loop through the collection as do a NotesDocumentCollection.getNextDocument(doc). So if you only use a fraction (50 of 1000) you would only initialize document objects 50 times. On a NotesView.FTSearch on the other hand the collection gets fully initialised since Domino needs to check if the document meets the view's selection criteria. If it matches the document stays in the result collection, if not it gets removed. So even if you would only use a few documents you would need to bear the waiting time of all document object initialisation calls. Unfortunately if you need a very specific sorting sequence you need to stick with a view. Andre gives
more advice. In summary: in cases where your expected results are much bigger than what you want to show NotesDatabase.FTSearch beats NotesView.FTSearch
Posted by Stephan H Wissel on 22 July 2009
|
1 comment
|
categories: Show-N-Tell Thursday
We have scheduled 3 more XPages training classes in AP:
- 28/29 July, Jakarta - Indonesia (contact Gunawan for details
- 31Aug/01Sep, Seoul - Korea (contact Kim Ky Young for details)
- 22/23 Sep, Hanoi - Vietnam (contact Nguyen Hoai Nam for details)
And yes. Class delivery is by yours truly.
Posted by Stephan H Wissel on 20 July 2009
|
2 comments
|
categories: XPages
We all heard the stories about
DAOS space savings. In case you missed the party, go
download the estimator and run it against your server. But there is much more to the R8.5 release. I'm using the new ODS structure (ODS51) also locally (simply add CREATE_R85_DATABASES=1 to your notes.ini and run a
little script). My mail file as of just now has about 6000 documents, almost no attachments (I'm using
MyAttachments) and design and data compression enabled. I have tons of folders that I use regularly, so there is quite some view indexes in that NSF.
Out of curiosity I replicated the mail file back to a test server running Domino 7.x. Domino 7.x runs ODS43 and doesn't support document or design compression. That same database swell to 273 MB. This is an increase of 50% (or if you walk the other way around: Moving from ODS43 to ODS51 saved me 33.3%). That's a very compelling reason to act.
As usual YMMV
Posted by Stephan H Wissel on 19 July 2009
|
categories: Show-N-Tell Thursday
It has been a while since the last update. There are a number of interesting enhancements coming soon to DXLMagic. While the command line interface is still available for your automation projects there will be a GUI and other enhancements:
- GUI for Export, Import, Injection, Reports (Transformation) and Server Documentation
- Graphical Installer for Windows (Mac/Linux maybe later)
- A list of build in reports
- New Function: Compare 2 databases
- New Function: Brute Force View Tuning (article coming soon)
Stay tuned.
Posted by Stephan H Wissel on 17 July 2009
|
1 comment
|
categories: DXLMagic
XPages is a constant topic when talking to Domino developers. One of my favorite questions to them is: "What (custom) controls are you expecting to use". The controls might exist, being build or being acquired. This is the unsorted list of what I heard so far:
- Names fields with address picker
- Custom address dialogs
- Numeric spinners
- Graphic controls connected to a data source
- Custom data sources control
- Controls supporting encryption/decryption
- Workflow controls
- Tagging input/Tag cloud from Lotus Connections
- Controls that are Sametime aware
- Chat controls
- Data filter control that looks like the Excel filter mechanism
- Tree control to render an outline
- Dialogbox control
- Login/User account control
- Pivot table linked to a data source
- Picture gallery controls in various forms and shapes including cover flow
- Task list controls (add this to a task in Notes or Activities)
- Notification control (send a message to notify others: eMail, Chat, Twitter)
- Document history controls
- Access control control (reader/author field management)
- Translation control (translate the DATA)
- Rating control
- Feedback control
- Shopping cart control
- Lotus Connections Business Card control
- Attachment control. Here I got multiple ideas around attachment management including Quickr integration
- "See also" control: add a link to the page
- Application Help control
- Comment control
- Expiry control (from just adding a date to sophisticated lookups in corporate policies databases)
- Media view control (Flash, Media players etc.)
- Inline edit control (edit one field without switching to edit mode)
- Spreadsheet control (with Export - thx John)
- Search control (from search in a view to Enterprise Search to Google search)
- Poll control (ask a question and render the results)
- ToolTip control
- "Print This" control
- PDF control
- Gannt chart control
- Scheduling control (using Quarz) for tasks
- Balsamiq Mockup control
- iLog Rule engine control
- Update: New control requests/ideas
- Query Building control (Formula/FullText), thx Erik
- Datasource merge control: Have 2 identical structured datasources and merge their content into a single grid/table
- Login/Credential for SSO, thx Kevin
- Transformation/Export control: transform the content of the pages into other formats. A superset of PDF/Spreadsheet export.
- Paypal control: there are new more open APIs available now
- Actionbar / Dropdown menu control
- Right Mouseclick menu
- Document lock/unlock control
- Timer control: execute JavaScript and/or Ajax calls on time
- Slilder control for views, data tables and repeat control
Interesting insight: We are seeing "small" controls like the names field as well as "big" ones like an entire Workflow piece. To be clear: that's what customers and partner said, that's *
not* taken from any IBM ToDo list (or at least none I'm aware of). Some of these controls are already in the wild.
What controls are you looking to use in your application?
Posted by Stephan H Wissel on 17 July 2009
|
7 comments
|
categories: XPages
An interesting question landed on my desk: "
In a web application you use extensive agents to prepare or render content. When the user is authenticated you want that agent to run in the user's context. For anonymous users you want the agent to run in the agent signers security context, so you don't need to expose your resources to anonymous browsing. How to do that?"
Answer:
- Write all your business code in functions in a script library. Have one function as entry point. It is a matter of taste to use the documentContext as parameter or to retrieve that inside the function.
- Write two agents that both call that function: "agAnonymous" and "agUser". Configure the first one to run with the signer access, the second one to run as web user.
- In your WebQuer[Open|Close] use this formula:
agentToRun := @if(@UserName = "Anonymous";"agAnonymous";"agUser");
@Command([ToolsRunMacro];agentToRun);
As usual: YMMV.
Posted by Stephan H Wissel on 13 July 2009
|
categories: Show-N-Tell Thursday
HTML has widely used and more exotic tags.
Fieldset and
Legend being of the later type.
Theo reminded me, that they can be useful and asked how to incorporate them into a XPage. The best approach is to create a custom control with custom parameters and an editable area inside and simply type the html controls into the source code. The legend is rendered by a computed field, so translation will be able to pick it up.
The source code of the XPage looks like this (note: the custom property doesn't show up here since it is stored in a file hidden from the Domino Designer perspective):
< xp: view xmlns:xp=" http://www.ibm.com/xsp/core">
< fieldset>
< legend>
< xp: text escape=" false" id=" legendText" value=" #{javascript:compositeData.legendText}">
</ xp: text>
</ legend>
< xp: callback facetName=" facetFieldSetContent" id=" callbackFieldControlSet" />
</ fieldset>
</ xp: view>
When using the custom control in a XPage or another control it looks like this (note the content inside the "this.facets") is what you put in there. can be a panel or table with fields in it or another control.
>
< xp: view xmlns:xp=" http://www.ibm.com/xsp/core" xmlns:xc=" http://www.ibm.com/xsp/custom">
< xc: FieldSetControl id=" MyFieldSet">
< xc: this.legendText> This is the <b>legend</b> text</ xc: this.legendText>
< xp: this.facets>
< xp: panel xp:key=" facetFieldSetContent" id=" stuffInsideTheFieldSet">
< xp: label id=" label1" for=" inputText1" value=" Test Field">
</ xp: label>
< xp: inputText id=" inputText1" />
</ xp: panel>
</ xp: this.facets>
</ xc: FieldSetControl>
</ xp: view>
As usual: YMMV
Posted by Stephan H Wissel on 09 July 2009
|
5 comments
|
categories: XPages
Domino 8.5.1 went into controlled beta recently. While others
do performance testing provide us with and
performance tips I poked around detail improvements. One of the early tips to integrate dojo components into XPages is to use a
DIV wrapper. In 8.5.1 this is no longer necessary, since you now can specify dojoType and dojoAttributes directly on a panel (and some other custom controls). A nice step to cleaner code

Posted by Stephan H Wissel on 09 July 2009
|
categories: XPages
Posted by Stephan H Wissel on 08 July 2009
|
10 comments
|
categories: Show-N-Tell Thursday
I like movies. My family and I go to the cinema quite often (a movie is only half the fun without the coke and the popcorn) and we own quite a number of VCDs and DVDs. What p\*\*\*\*s me off more and more: in every movie I get a advertisement about how bad "burning movies" is. Every DVD starts with an FBI warning telling me: "Hey you spend your money with us, but we tell you you probably are a thug". Grab any DVD from a Bangkok street vendor and you are not bothered by advertisement you can't skip or a warning about your obvious criminal intend. I don't mind to pay for media I watch, but I very much mind being called a potential criminal after I actually paid due to greed (?) of the media industry. Economy of abundance anyone?
Posted by Stephan H Wissel on 07 July 2009
|
2 comments
|
categories: After hours
I'm a customer of a number of banks.
HSBC being one of them. I also hardly visit any bank branches. I do my business online. I like HSBC's site. It is easy to use and fully functional (Short of a glitch that doesn't allow to set a date for all type of transactions). In recent years all the banks have added additional security to their online login by requiring a security token besides your user name and password. This token is either generated by a little gadget or send via SMS to your mobile phone. HSBC choose the first option (while some smarter banks actually let you choose what option you like). The token vendor they picked seems to be on the cheap site and with 99% probability the devices' internal clock will get out of sync with the security server (about every 2-3 month), so you can't login. A call to the help-desk fixes that, but it takes 3-4 hours.
In other words:
you can't depend on the availability of HSBC Internet banking when you need or want it. I chatted a little with the help desk guy who was very pleasant to talk to and highlighted that this problem dents HSBC's reputation. So I asked if I'm just dumb out of luck or the problem is widespread. He admitted, that _all_ HSBC Internet banking customers will experience that type of problem (Guess that's why there was a specific option in the voice menu just for that). I'm now seriously considering to close my account since I'm not amused. All other bank tokens I use(d) never fail(ed).
Note to HSBC: Fix the problem or loose customers
Posted by Stephan H Wissel on 01 July 2009
|
2 comments
|
categories: Business