My first email address
The day after my 40th birthday, I realized it had been exactly 21 years since I got my first email account. It was if I remember rightly Tylerc2@NossVM6. This was my IBM PROFS address and I was given it the day I started there.
Domino Designer – Free or "Free"?
- Domino Designer 8.5.1 can be used for free (no license needed) to develop local applications.
- In order to deploy applications to a Domino Enterprise Server (regular license or Express, does not matter), an Enterprise Client Access License (CAL) is needed. The Messaging only CAL can not be used, nor can the Collaboration Express license.
- Any developer in a Domino Collaboration Express environment need (in addition to the Express license) an Enterprise CAL in order to use Domino Designer. The cost is $159. The Express license is $142. Both prices areaccording to Ed Brill.
- A license for Domino Designer used to be $864, so it is still a substantial cost reduction,$705 to be precise.
- For a customer using the cheaper per-seat and no serverchargeDomino Express license, the cost savings will still be large, even if Designer technically not is free in that environment.
- Previous versions of Domino Designer are not free. Only 8.5.1 and later.
In my personal opinion, I think IBM should make all versions of Designer free. No extra license needed to deploy applications on any servers. Each developer will still need either an Enterprise CAL or a Domino Collaboration Express license anyway.
I hope this is a beginning of getting Domino Designer out there, and making developers aware of the tool. I can see a need for plenty of good books/wikis/reference material for new developers, though. I still believe in books. You can read them in the bathroom, in bed, on a flight (even during take-off and landing). Revisit the R6 Developer Redbook and publish a new version of it, updated for Designer 8.5.1…
Sweden can make more than meatballs…
For that special girl in your life…
Texas Law H.B. 2003
A new Texas law that took effect September 1, 2009. H.B. 2003 says a person commits a third degree felony if the person posts one or more messages on a social networking site with the intent to harm, defraud, intimidate or threaten another person.
The same thing goes for instant messaging, it is now illegal to pretend to be someone else in an IM, trying to defraud or intimidate someone.
Strange problem with views
I been having a strange problem with a particular view in one of my Notes applications.
The view displays main documents andchild (response)documents.
The problem is thatthe child documents are not sorting correctly, as you can see in the following screenshot:
The child documents are created using several different forms, and I have a hidden column in the view intended to sort the documents in a particular order based on the form.
The first column isjust displaying the claim number (09PSITXnnnnnnn, etc). It is sorted but not categorized. It is set to show a twistie when expandable. The column is very narrow, so it will only show the custom twistie I am using.
The second column is the one I use for sorting. The column formula is as follows:
@If(Form="Coverage Verification";1; Form="QuickStrikeSheet";2; Form="Expense Sheet";3; Form="Attachments";4; Form="Time Sheet";5; Form="Legal Summary";6; Form="Diary";7; Form="Log";8; Form="Negotiation Summary";9; Form="LargeLossNoticeReport";10;@Left(Form;4)="frm_";11;@Left(Form;10)="MailMerged";12;99 );
The column is hidden and sorted ascending.
Following this column I have a handful more, but they are all for the main document, showing additional info, creating the colored background based on status, etc.
Below is the design, with the non-sortable view selected.

It seems like the response documents are being displayed in some other sort order. It does not seem to be consistent with the order they are created, though.
Anyone can figure this out? I am using Domino Designer 7.0.2.
Please mail me at khm@deep-south.com if you can’t comment here.
I would have asked the question on twitter or used SameTime and the BleedYellow community server, but my network admin is blocking pretty much everything. Especially twitter, as he think the only use for twitter is to see what Ashton Kutcher is doing…
Update: If I move the hidden sortedcolumn to the left, before the categorized column, the sorting is correct but then the users can’t jump quickly to a particular claim number by doing a view search (just start typing in a claim number).
Lotus Notes 8.5.1 – Now with free Designer!
ProgressBar class for Lotusscript
Brian Moore wrote about the problem with users thinking Notes applications are slow, due to no visible feedback:
“People seem to be totally happy at letting something take bleeding ages just so long as there is a little moving object to distract them from the clock.”
This is very true, and I addressed this in one of my applications a while back by implementing a progress bar.
Suddenly, when the users got feedback on what was happening, all complaints about it being slow stopped, despite it taking the same amount of time…
I built a progress bar class. Here it is, as well as a small code sample showing how to call it. Note that this is a Win32 only solution.
Option Public
Option Declare
' ***** Declarations for (undocumented) progress bar in Notes *****
Private Const NPB_TWOLINE% = 1
Private Const NPB_STATUSBAR% = 32
Declare Private Function NEMProgressBegin Lib "nnotesws.dll" ( Byval wFlags As Integer ) As Long
Declare Private Sub NEMProgressDeltaPos Lib "nnotesws.dll" ( Byval hwnd As Long, Byval dwIncrement As Long )
Declare Private Sub NEMProgressEnd Lib "nnotesws.dll" ( Byval hwnd As Long )
Declare Private Sub NEMProgressSetBarPos Lib "nnotesws.dll" ( Byval hwnd As Long, Byval dwPos As Long)
Declare Private Sub NEMProgressSetBarRange Lib "nnotesws.dll" ( Byval hwnd As Long, Byval dwMax As Long )
Declare Private Sub NEMProgressSetText Lib "nnotesws.dll" ( Byval hwnd As Long, Byval pcszLine1 As String, Byval pcszLine2 As String )
Class ProgressBar
Private hidden As Integer
Private hwnd As Long
Private value As Long
Private title As String
Private textline1 As String
Private textline2 As String
Private maxvalue As Long
Public Sub New(range As Long, initialtitle As String)
Dim session As New NotesSession
maxvalue = Clng(range)
title = initialtitle
textline1 = ""
textline2 = ""
If session.IsOnServer Then ' Check if code is running on server (scheduled agent)
hidden=True
Else
hidden=False
End If
If hidden = True Then
Exit Sub
End If
hwnd = NEMProgressBegin(NPB_TWOLINE)
Call SetRange(maxvalue)
NemProgressSetText hwnd, title, textline1 & Chr$(13) & textline2
End Sub
Sub Increase()
If hidden = True Then
Exit Sub
End If
If hwnd <> 0 Then
If value < maxvalue Then
value = value + 1
NEMProgressSetBarPos hwnd, value
End If
End If
End Sub
Sub Decrease()
If hidden = True Then
Exit Sub
End If
If hwnd <> 0 Then
If value > 0 Then
value = value - 1
NEMProgressSetBarPos hwnd, value
End If
End If
End Sub
Sub Close
If hidden = True Then
Exit Sub
End If
If hwnd <> 0 Then
NEMProgressEnd hwnd
hwnd = 0
title = ""
value = 0
End If
End Sub
Sub SetRange(value As Long)
If hidden = True Then
Exit Sub
End If
If hwnd <> 0 Then
maxvalue = value
NEMProgressSetBarRange hwnd, maxvalue
End If
End Sub
Sub SetValue(value As Long)
If hidden = True Then
Exit Sub
End If
If hwnd <> 0 Then
NEMProgressSetBarPos hwnd, value
End If
End Sub
Sub SetText(message As String)
If textline2="" Then
Call PrintText()
End If
If hidden = True Then
Exit Sub
End If
If hwnd <> 0 Then
textline1 = message
NEMProgressSetText hwnd, title, textline1 & Chr$(13) & textline2
End If
End Sub
Sub SetText2(message As String)
Call PrintText()
If hidden = True Then
Exit Sub
End If
If hwnd <> 0 Then
textline2 = message
NEMProgressSetText hwnd, title, textline1 & Chr$(13) & textline2
End If
End Sub
Function GetText() As String
GetText = textline1
End Function
Function GetText2() As String
GetText2 = textline2
End Function
Sub PrintText()
Dim text As String
If hidden = True Then
text = textline1
If textline2 <> "" Then
text = text & " - " & textline2
End If
Print text
End If
End Sub
Function Show() As String
hidden = False
hwnd = NEMProgressBegin(NPB_TWOLINE)
Call SetRange(maxvalue)
NemProgressSetText hwnd, title, textline1 & Chr$(13) & textline2
End Function
Function Hide() As String
hidden = True
If hwnd <> 0 Then
NEMProgressEnd hwnd
hwnd = 0
End If
End Function
End Class
Below is a snippet of sample code, showing how it can be implemented. Enjoy!
units = GetNumberOfUnits()
Set pbar = New ProgressBar(CLng(units+1),"Loading data From backend server…")
Call pbar.Show()
For i = 1 To units
Call pbar.Increase()
Call pbar.SetText("Loading coverage For unit " & i & "…")
Set vehicle = New CoverageData(i) ' Get vehicle coverage
Call pbar.SetText2(vehicle.year & " " & FullTrim(vehicle.name) & " – Coverage " & vehicle.cvgcode)
Next
Call pbar.Increase()
Call pbar.SetText("Finishing processing.")
Call pbar.SetText2("Please wait…")
' Do some more stuff here
Call pbar.Close()
Notes client performance
Watch the two screencam videos linked below. They are each about 10-15 seconds long.
Exactly the same code, running on the same computer, against the same server.
I am able to reproduce the results are reproduced every time I test.
I don’t have Notes 8.x on this system, as our plans currently are to eventually move all our users to Notes 7…
And I don’t see Notes 8.x being deployed in a near future here.
Update: I just used TeamStudio Profiler to time the process. In Notes 5 it took 3.8 seconds, in Notes 7 it took 0.8 seconds. The main difference was in calling a db.GetView(). I then wrote some code that just call that function 8 times, each time to a different view. It took 2.4 seconds in Notes 5 and 0.17 seconds in Notes 7, again according to Profiler.

