Falling Dominos | Let's keep Lotus Notes development relevant
Two things I learned on Friday:
- You get what you pay for. My $10 a year host was hacked. I think the server people figured it was easier to reformat the server than try to save anything.
- Back up your stuff every now and then. I honestly backed up using Wordpress’ export feature on June 29th. I don’t know if it hit a limit or what but it didn’t backup anything past 2008.
This is a painful lesson but I should know better. I will hopefully have my code examples for MD5/SHA1 uploaded soon.
Tags:
June 25, 2009 ( Comments Off )
I was trying to search for an old comment of mine and stumbled across this great answer for the question: “What is the difference between CouchDB and Lotus Notes?”
This is just the summary:
Summery: CouchDB is brand new software that is developing a core that has a similar conceptual but far more sophisticated design to that used in Lotus Notes Domino. Lotus Notes Domino is a mature fully featured product that is capable of being deployed today. CouchDB is starting from scratch, building a solid foundation for future feature development. Lotus Notes Domino is continuing to develop new features, but is doing so on a 20 year old platform that strives to maintain backwards compatibility. There are features in Notes Domino that you might wish were in CouchDB, but there are also features in Notes Domino that are anachronistic in today’s world.
I’m not sure if the author “Kerrr” plagiarized the entire answer but I highly suggest reading the whole thing if you are ever at a loss for the technical explanation of “What is Lotus Notes?”
Update: A little info on who Kerrr is (from Matt White of the UK)…
Just to clarify, Kerr Rainey is a London based Domino / Couch DB developer who really knows his stuff.
Kerr is a regular commenter on lots of the blogs, helps out with ILUG and UKLUG etc, i.e. a busy member of the Lotus community.
Tags:
June 22, 2009 ( Comments Off )
Like Ed Brill… I am also going to the IAMLUG conference in St Louis.
My employer said I could only attend one of the two Midwest events so I picked the one where I get to stay overnight at a casino. Travel is the same for me too… two round-trip train tickets were the same price as a round-trip flight to St Louis.
I would like to meet with other corporate developers like me. Maybe I’d call it a “support group” for corporate RAD developers. Those of us who are supporting hundreds of applications and are still developing tools for business. Possible points of discussion include…
- Are you using any project methodology?
- Has your workload increased due to the economy? (mine certainly has)
- Is your group still treated like a red-headed step-child? (I won’t comment on this one until IAM LUG)
- How are you dealing with compliance issues?
If you are interested in getting together at IAMLUG please email me at tjoneil @ codepress.net.
Overall… I am excited to head down to St Louis. I have not been on a business trip since Lotusphere 2008 (and that was with the family). It’s great to hear Ed will be attending and I look forward to seeing everyone down there!
Tags:
November 14, 2008 ( Comments Off )
I finally created an example database for the MD5 and SHA1 hashing libraries.
The database contains an “Example” form that allows you to either hash or HMAC hash a text string. Fill out the fields and click the “Hash!” button.
If you debug the button (or look at the code) you will notice that I use four declared classes: HMAC_SHA1, SHA1, HMAC_MD5, and MD5.
All four classes require the text to be sent in the constructor. The HMAC classes also require a “key” due to the nature of HMAC.
All four classes expose three functions: toStr (string), toHex, toB64 (Binary64). These are the results of the hash. My example form returns the results in Hex because that is what the SlavaSoft HashCalc tool uses.
Link to the Example database: MD5/SHA1 Example Database
Tags:
October 28, 2008 ( Comments Off )
I am finished converting David Ireland’s VBScript version of Blowfish encryption. The code is all David’s. I made two hacks to make it work in LotusScript.
1) LotusScript doesn’t allow for Array building the way VBScript does (this should have been included in R5 let alone R8). In VBScript, an array can be declared by writing Array(1,2,3,4). In LotusScript, I had to declare the array then build it. Take a look at the basblfArrays library and see how many arrays I had to convert (close to 300 lines of code).
2) My other hack was in blf_StringDec function of the basBlowfishFns library. In LotusScript ASC() throws an error if a null string is given. I threw a try/catch around the code.
I also copied David’s example ASP page into a Lotus Notes form so you can see how the code is used.
I could spend some time wrapping it into Object classes and making it a bit more intuitive for us Lotus developers but I will wait until I am happy with the testing.
FYI: I did not rename any of the libraries or functions. As I said… this is David Ireland’s code. Please follow the terms under his Copyright (found in every script library).
Zipped NSF File: LotusScript/Blowfish Database
Tags:
October 15, 2008 ( Comments Off )
Legacy databases… you just have to love them. I was working with a database the other day which stored names in the Common Name format (big no-no) instead of the Abbreviated Name. That’s cool if you work in a small company or if your Administrators do not allow duplicate user names.
Using the Common Name causes two major problems.
* If you are using the common name for security (comparing @Name([CN]) to the stored name) you might have a second user out there with the same name that should not be accessing the data
* Duplicate common names break mailing scripts.
I created this code to use in the Notes Client UI to check for duplicate names. It seems to run pretty fast with our 50,000 entry address book. I wouldn’t suggest continuously running it in script but it is good for validation.
Function checkForCNDupes(commonName As String) As String
' Check for common name duplicates. Force user to choose the correct option
' assumes we are using the client UI (workspace)
checkForCNDupes = ""
If commonName = "" Then
Exit Function
End If
Dim evalString As String
Dim check_CN As Variant
Dim response As String
evalstring = {@Name([ABBREVIATE];@NameLookup ([NOSEARCHING];"} + commonName + {";"Owner"))}
check_CN = Evaluate(evalstring)
Print Ubound(check_CN)
If (Ubound(check_CN) > 0) Then
Dim workspace As New NotesUIWorkspace
response = workspace.Prompt (PROMPT_OKCANCELLIST, _
"Multiple users found", _
"Multiple names were found in the address book for your selection. Please pick the correct user.","",check_CN)
If Isempty (response) Or response = "" Then
Messagebox "You must select the correct name before continuing." , 16, "Update canceled"
Exit Function
Else
checkForCNDupes = response
End If
Else
checkForCNDupes = check_CN(0)
End If
End Function
Tags:
July 22, 2008 ( Comments Off )
UPDATE: A sample database using these hashes can be found here.
Jason Molzen contacted me this weekend asking for help generating MD5 hashes in LotusScript. I had previously posted a HMAC SHA1 library that was an amalgamation of two developers’ (Paul Johnston and Julian Robichaux) code. Paul did not mind me converting the SHA1 code so I spent a lot of time translating the MD5 script he created.
With Jason’s help I converted Paul Johnston’s MD5 script but I wasn’t quite happy when I finished the library. The code was written as functions and it was hard to figure out what to use to create each hash.
I finally ended up with three script libraries. Click on the links to download the “lss” library files.
- CoreHashLibrary – Contains one class called HashHelper (I loved using the word “Hash”). It contains a lot of the binary functions for processing these hashes.
- MD5 – Self explanatory. This contains two classes: a MD5 class with a New(text) constructor and a HMAC_MD5 class with a New(key,text) constructor
- SHA1 – Self explanatory. This contains two classes: a SHA1 class with a New(text) constructor and a HMAC_SHA1 class with a New(key,text) constructor
Jason sent a link to a great tool for testing these hashes: HashCalc. Previously, I had been testing the hashes with Paul Johnston’s javascript but HashCalc saved me a lot of time.
Tags:
( Comments Off )
Sprint and Palm published a new update for the Centro today. Release 1.07 updates the Centro’s ability to use Location based services in Google Maps.
Get the update here.
Tags:
I made the mistake of ordering a Sugar Free Vanilla Iced Coffee at McDonalds. It’s not worth the 200 calories saved. Go with the regular Vanilla flavoring.
Tags:
July 14, 2008 ( Comments Off )
My goodness. I wasted a good portion of the week trying to get a C# COM/dll to work with Domino 8.
To summarize my problem… A COM dll that was working in R6.5 stopped working when we upgraded the server to R8. The dll was having issues finding the namgr.exe.config file that it used on the R6.5 install.
Solution: You won’t believe this… I spent a week recompiling the dll with different hard-coded values and different debug statements trying to figure out why it could not find that namgr.exe.config file. Luckily, I discovered a C# property that displays the expected configuration file path:
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
A debug line showed that for some reason, Domino 8 expects a COM’s configuration path to be (programfile).config instead of (programfile).exe.config (e.g. namgr.config vs namgr.exe.config). I didn’t know Domino had any control over how .NET behaved but I have no other explanation for what happened.
Oh well… what seemed like a really easy fix took almost a week to discover.
Tags: