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.