Falling Dominos | Let's keep Lotus Notes development relevant

jsCrypto

I’m a sucker for encryption tools and I found a new one through del.icio.us called jsCrypto. It’s a JavaScript encryption library that claims to be at least 4x faster than any other JavaScript encryption routine out there.

A description from the jsCrypto site:

We offer a fast, small symmetric encryption library written in Javascript. Though several such libraries exist, jsCrypto offers several advantages.

  • A clean, simple interface to basic AES encryption/decryption, as well as OCB and CCM modes for authenticated encryption
  • A cryptographic random number generator that collects randomness from user mouse movements, among other sources
  • jsCrypto is at least four times faster in all browsers and about 12% smaller than the best previously existing implementation
  • In Internet Explorer, jsCrypto is 11 times faster than the fastest previous existing implementation

A call for ideas from Notes Client developers

My friend and I have been philosophizing about what to do with a specific Lotus Notes application. The application is roughly eight years old and it’s bloated. It’s literally busting at the seams with code.

I’m going to say right now… that with unlimited resources (aka time and money) this application should be rewritten. I wouldn’t even promise that I would re-do it in Lotus Notes. But that’s another story.

The application now has a long list of enhancements. One enhancement (our favorite), is a requirement to create a relational reporting system of the data. All of the data (minus the rich-text fields). Many other requirements call for interfacing with other systems at the company. Some might be Web Services but a lot of the transactions (I think) are done in TIBCO.

My friend (bless his heart) is sold on an idea. His idea is to (somehow) create a LIVE SQL Server back-end to this data. Basically, on the open and save of the data… it will all be sync’ed to a Microsoft SQL Server (DB2 is not in the company and is not an option).

I’m trying to see it his way but I really have no experience with something like this. I’ve offloaded Notes data to reporting databases before but I’ve never loaded and saved ALL of the data to/from an external system. I have so many doubts running through my mind.

Have you guys done this? How feasible is it to take an existing (a big fat one… I mean like orca fat) application and move the data to SQL Server while keeping the Notes Client interface? Is this something for DECS?

I appreciate any suggestions. I’m at a loss for trying to convince him to try a different path.

R8 – NotesDocumentCollection: New Methods

I missed the announcement on this one…

The NotesDocumentCollection in R8 now has four new fabulous methods: Merge, Contains, Intersect, Subtract.

  • Merge: Adds to a document collection any documents not already in the collection that are contained in a second collection.
  • Contains: Indicates whether or not a NotesDocumentCollection contains all of the given NotesDocuments or all of the NotesDocuments associated with the given ViewEntries.
  • Intersect: Removes from a document collection any documents not also contained in a second collection.
  • Subtract: Removes from a document collection any documents contained in a second collection.

This is the best part… each method takes a variant called inputNotes as a parameter. The parameter can be a String, NotesDocument, NotesDocumentCollection, NotesViewEntry or NotesViewEntryCollection. Talk about versatility!

These new methods allow the NotesDocumentCollection object to be a “container” tool and not just a “document access” tool. Great job Lotus!

LotusScript Versions of DBLookup and DBColumn Using Evaluate

I was looking through Jamie Magee’s slides from a 2008 ILUG presentation to review the performance tips he showed us at IamLUG2009. When reading slide #6 I found an interesting tidbit: “When only reading data from documents – @DBLookup and @DBColumn is fastest.” I assumed he meant through an Evaluate statement.
Could this be true? I always considered it a best practice to avoid the Evaluate statement. Then I found an article on ibm.com from 1998 called “Simplifying your LotusScript with the Evaluate statement.” The article is a great synopsis of the Evaluate statement and it confirmed Jamie’s opinion.

Here’s their view:

The reason the Evaluate is faster is because the @DbLookup gets values from a view index, without having to loop through and access each document. In contrast, pulling values using GetAllDocumentsByKey requires you to loop through and access each document.

That’s great but writing Evaluate strings for DBLookup and DBColumn calls isn’t exactly fun. So… I decided to wrap the calls in a handy class.

To call the code is pretty easy:

use "libLSViewTools"

Dim tools as New LSViewTools
dim result as variant

'** function call is DBlookup(server As String,database As String,
'** view As String,key As String,pickMe As Variant,exactMatch As Boolean) As Variant

result = tools.DBLookup("myserver","mydatabase.nsf","myview","myfield",true)
print result(0)

result = tools.DBColumn("myserver","mydatabase.nsf","myview",1)
print result(0)

The parameter “pickme” in the dblookup function is a variant because I allow a number (column) or string (field name) to be sent (just like @DBLookup).

The lss file can be downloaded here: libLSViewTools.lss

Read more ›

Pipe Dream: Custom Apps offered by LotusLive

I was daydreaming during Cavanaugh’s opening session at IamLUG. Nothing against his speech… I was just hoping for more of a William Wallace speech.

Ed: “My Yellow Sons and Daughters, I am Ed Brill”

Yellow person: “Ed Brill is seven feet tall”

Ed: “Yes, I’ve heard! And if he were here, he’d consume Microsoft with fireballs from his eyes…and bolts of lightning from his arse! I AM Ed Brill! And I see, a whole army of my people.”

Sorry… that’s where my mind was at the moment. But then I saw a slide about LotusLive and I started dreaming about the “cloud.” The LotusLive product hosts collaboration applications like Lotus Sametime, Lotus Notes, and Connections. These applications are core Lotus products but what about the real “strength” behind Lotus (for the past 10+ years)? Custom applications.

I quickly popped into my old “There’s an app for that” mindset. I thought how great it would be if Lotus allowed for custom applications to be selected and added by customers into their LotusLive environment. Like the Apple App store. The applications would obviously have to go through a vetting process like Apple Iphone applications. I can’t imagine the process would be cheap or easy.

Wouldn’t it be great if IBM presented LotusLive to a company and said “We have this great online store full of custom applications. With one click of a button you can have this IdeaJam application installed in your environment. Check out the HR tools section of the store… it has many applications to fit your needs.”

It’s a pipe dream… but that’s where my head during Kevin’s speech.

p.s. I loved IamLUG. I hope they do it again. I’ve attended one Lotusphere and it was overwhelming. IamLUG was perfect.

EDIT: Nathan Freeman posted something similar in his popular blog and folks seemed to like it.

Going Green with Lotus Notes

I am proud to admit that one of my applications won a corporate “Going Green” award.

  • We (the app) will save roughly $100,000 year (I say roughly because it is only calculated supply costs)
  • We’ve eliminated the need to print to 3,000,000+ sheets of paper a year (I’ve estimated that to be 40 trees a year)
  • They don’t give a dollar value but there is also significant monetary savings since we don’t have to transfer and store 3,000,000+ sheets of paper yearly.

I wish I could give more detail but I would probably have to talk to the PR department.

Need to automate your processes and stop using printers and faxes? There’s an app for that!

There’s an app for that

I’ve said it before and Neil Wainwright said it again (comment #3) today. Small application development was Lotus’ strength in the late 90s and early 2000’s.

After reading Neil’s comment and going back to work I stared at my workspace for a moment. With all of the tabs filled with icons… I said to myself “There’s an app for that.”

Why is the iPhone so successful? C’mon… It’s just a cell phone. The reason for the  iPhone’s success  is small, inexpensive, and easy-to-install applications that are driving iPhone sales exponentially. The iPhone’s current slogan says it all: “There’s an app for that!”

Compare that to Lotus Domino. It’s just an email system. Or… is it an environment where you can build small (you can argue size if you want), inexpensive, and easy-to-install applications?

I was looking at my workspace and thinking about all of the applications I have built over the years (at too many different jobs).

  • Do you need an underwriting system for loans? There’s an app for that.
  • Do you need a workflow application to handle 100,000 faxes a quarter? There’s an app for that.
  • Do you need a HR timesheet system? There’s an app for that.
  • Do you need a Customer Relationship Management system? There’s an app for that.
  • Do you need a sales pipeline application? There’s an app for that.
  • Do you need a reference library for your sales team? There’s an app for that.
  • Do you need 101 different call tracking applications? There’s 101 apps for that.
  • Do you need a complete extranet with a content management system? There’s an app for that.

I could go on for pages. All of these systems were built on Lotus Notes/Domino. Some of these applications were created by the departments and we’ve inherited and maintained them over the years. Some of these applications (like the underwriting apps) turned into large systems (which Lotus Notes is very capable of handling).

I’ve met countless developers who just do whatever their manager or project manager instructs them to do. Because of Domino environment, I’ve spent the last ten years in direct contact with customers automating their processes, destroying legacy paper systems, and saving money.

Can other programming environments do the same thing? Of course! It’s just that their environments are not as adept at building small, inexpensive, and easy-to-install applications as Lotus Domino.

Developers! Developers! Developers!

On two recent Ed Brill posts, I stated my claim that developers were the key to Lotus Notes’ world domination.

I might have even gone so far as recommending that Ed do the “developer dance” patented by Microsoft’s Steve Ballmer.

I believe the Notes Designer should be available to every Lotus Notes user. Restrict their access to production/dev servers… but allow end-users to tinker with their applications locally.

My company (typically) does not provide end-users with the designer client but recently (especially with the cost-cutting measures) my group has been quite busy. After listening to the business case for one person to start modifying his group’s application, I convinced my manager to let them get the designer and modify their Notes application locally. When the user is ready, I copy the items from their database and paste them into a test copy in the test environment.

So far I have been amazed with the development skills of the end user. Except for one issue (green/bold form headers) the code looks great. He followed all of the best practices and it was well-tested by the users.

Their application was old (I built it five years ago) and it needed work. Without the extra end-user development they might have looked for a different (non-Lotus Notes) solution. Allowing the end-user to tinker with their own application was a win/win for both teams.

When the Lotus Notes email client was crappy, user development and the benefits of workflow are what made Lotus Notes strong. Why not just return the designer back to the end users and watch productivity (and sales) soar?

Simple Research – Lotus Notes vs Outlook

Disclaimer: I am not a statistician and I do not claim to know anything about statistics.

For a long time I have wondered if the disturbing lack of Lotus Notes shops is just a Milwaukee issue. I finally decided to stop wondering and do a little research. I decided to use a very (un)scientific method… search Monster.com.

My searches were simple. I searched for the word “Lotus” in Milwaukee. The search found six results (jobs). Yikes! Chicago looked a bit better with 29 jobs and New York City looked great with 55 jobs.

Case solved! There are plenty of other Lotus Notes shops in other cities! I shouldn’t have FUD (Fear, Uncertainty, & Doubt) about Lotus Notes.

Then I got curious… what is the percentage of Lotus Notes jobs compared to jobs that contain the keyword “Outlook.” My results were a bit frightening.

Lotus vs Outlook
City Lotus Outlook
Milwaukee 6 56
Chicago 29 174
San Francisco 33 138
Seattle 7 142
New York 55 363
Houston 19 190
United Kingdom 77 569

barchart_lotusoutlook

To be fair… this data is terribly unreliable. For instance… doing a search for the word “sales” in Milwaukee returns 470 jobs. Many employers must not list their email system in the job description. Maybe companies that use Lotus Notes figure the software is easy enough to use so it is not listed as a job requirement.

Would I use these numbers to claim I know the market-share of Outlook vs Lotus Notes? No… I would not. Do these numbers worry me? Yes.

And then all was lost…

Two things I learned on Friday:

  1. 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.
  2. 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.

 

Essentials