Vive La Difference! Differences are good - most of the time.

We are constantly being made aware of the glorious diversity that is written into the structure of the universe we inhabit, and we are helped to see that if it were otherwise, things would go awry.
— Desmond Tutu

These days, kids are taught from an early age to celebrate their differences. Which is as it should be, differences and diversity are what makes us human. But differences are not always a good thing. 

In programming, differences are extremely important, but they are often overlooked. A common cause of bugs is the assumption that two versions of a piece of code are the same, when actually they are different. That can lead to (say) two different users who are supposedly working on the same version of an app, where one sees a particular bug or behavior and the other doesn't. Or, a user reports a problem, and you can't reproduce it because you're not looking at quite the same version of the app as they are.

Differences cropping up in apps can happen for many reasons, especially in a Notes environment where replication and design refresh settings can be applied at a per-design element level. Mostly though, problems resulting from unexpected differences between versions occur because of poor version management (see CIAO! and Build Manager). We'll talk some more about that in a minute, but for now let's talk about how  you can track down these elusive differences that might be causing you to tear your hair out.

Tools to help track down differences in source code are almost as old as programming itself. The grandaddy of the differencing tools of course is diff, a utility that was built into the Unix operating system from the very early days. Diff might seem a bit agricultural these days, but I can assure you that, back in the day, it helped track down many a pesky bug. (I know, I was there.)

When it comes to Lotus Notes (or IBM Notes, if you prefer), diff and other text-based differencing tools won't cut the mustard. This is, of course, because Notes apps are not neatly packaged up into a gaggle of text files. Formula code, LotusScript, UI component attributes, the differences between apps could be all over the place. Of course, you could export all the design elements as DXL and then use a text based tool to find the differences, but a change in some attribute buried deep in the XML code is going to be really hard to visualize in the context of your app.

All of which is why we built Teamstudio Delta. Delta is a differencing tool built for Notes apps. It recognizes differences in all the various types of design element, and presents them to you in context. Just as important, it includes smart filters that hide differences that just happen naturally in Notes ($Signature anybody?).

Now, if all this sounds a little esoteric, take a look at this example below. To the uninitiated, you might think that these two versions of the mail template, which are both named "mail9.ntf" would be identical. But within a few seconds, Delta can show you that they are, in fact, different, and actually pinpoint the differences in the code.

So, by all means, let's celebrate our personal differences. But when it comes to building and especially maintaining Notes apps, it helps to have a tool like Delta around to understand exactly what they are!

If you have questions, or would like to learn more about Delta and how it can help track down elusive bugs, click below to contact us!