Monday, March 22, 2010

FYI : Understanding the IBM Lotus Notes 8.5.x client directory structure

 Worth a repost for those who have not seen it.

http://www-10.lotus.com/ldd/dominowiki.nsf/dx/Understanding_the_IBM_Lotus_Notes_8.5.x_client_directory_structure

This article explains the changes that were introduced in the IBM® Lotus® Notes® 8.5 File System installation and describes them with respect to the installation, setup/launch/run, and uninstall phases in the client's life cycle. Also included are answers to some FAQs on the client file system.

 Thanks to Stuart for sending through this info.

Thursday, February 25, 2010

My take on Dec's open source post.

I was going to post a comment to Declan's post about the yellow bubble open source developers and reflect on my experience. However, seeing as how my post for 2010 are below par, here is my first post for 2010!

Brians' comment struck very close to home in relation to my experience. It was only when I either worked for a company in a non technology sector or when I worked (almost) for myself, that I could freely contribute code, applications and snippets that I thought might be useful.

I'm glad that I did, as I feel as though I've returned something back to a community that had helped me along the way. I even tried, rather woefully I might add, to contribute to Peters .Scrum project, until it became very obvious that free time and energy are at a premium at this stage of my life, when other commitments like family, kids and a new job demand more. I see similar pressures effecting a number of the key members of the yellow open source bubble.

I guess that the sole focus of cutting code has given way to other pursuits and the new blood is not following in the footsteps troden by those before them.

Why is that ?

Well, for a start, there are more technologies to choose from to invest your free time. iPhone, Flex, Air, Silverlight, LAMP to name a few. One argument for proprietary software is that the developers are paid to build the software, where as open source developers will choose technology to invest their time in based on what is interesting and what is likely to be profitable, either financially, or in standing within a peer group that they wish to belong too. The argument goes, that majority of open source developers will follow the trend of what is popular and when the next shiny trend comes along, their contributions will follow, leaving behind older projects to go stale with little to no progress.

I guess that this isn't a yellow bubble only thing, but effects open source in general where the code continuation is pretty much down to the good will and enthusiasm of a few.

Of course having your contributions, reused without credit does little to motivate. The expectation from far flung locales that you will provide free and unlimited support to help their business simple because you have donated your time, intelect and energy in the hope of helping those who are keen to help themselves, rather than those that wish to be spoon fed - does little to encourage continued goodwill.

With all that in mind, would I contribute to open source again ?

Yes.

When will that be ?

Dunno.

Thursday, December 17, 2009

IBM Lotus back with with a vengeance...

In case you haven’t noticed, IBM Lotus not only didn’t go away, it’s here with a vengeance. LotusLive.com claims 18 million users, the 8.5 release of Notes/Domino is a winner in storage savings, Lotus Connections beats other social software platforms on many dimensions, and Sametime’s pushing the envelope on real-time collaboration at a global scale.

Zdnet.com

Wednesday, December 09, 2009

Cirrus Australia #6 in CRN Fast Top 50

Cirrus Australia has just been awarded sixth place in CRN’s inaugural Fast50, a competition which ranks Australia’s top fifty IT resellers in terms of net sales revenue growth from financial years 2007-2008 to 2008-2009. The award capped off  Cirrus Australias best year on record – a year in which revenue grew by 156%, our Sydney office was significantly expanded and we achieved IBM Premier Business Partner status.

I've been meaning to blog about the culture that is at the heart if Cirrus Australia, but I've been so busy enjoying my job that I've neglected the blog a little. However, Darren articulates it better.

Darren also attributes Cirrus Australia’s success to the focus on quality of life for staff, customers and stakeholders that is fostered in the company.

“The whole idea of using quality of life to measure outcomes has been absolutely fantastic. This is our mission statement and rather than merely paying lip service to it, it really forms the base culture of the organisation. I have a company full of incredibly bright people who are motivated to improve the quality of life for their customers. The team specialises in IBM software implementation and providing a solution that works for their customers is what drives them. When this culture pervades the organisation, you end up with staff on top of their game. What we have is a very motivated and technically proficient offering,

You can read more about the Cirrus Australia approach here.
http://www.cirrusaustralia.com.au/wps/wcm/connect/cirrus/site/about/latestnewsitems#fast50

and the Fast50 article on CRN
http://www.crn.com.au/News/161995,fast50-top-10-unveiled.aspx

Friday, November 13, 2009

Lotus Notes is shaking that 'legacy' tag

It looks like Lotus Notes is shaking that 'legacy' tag.


New applications are typically installed in web-based configurations thanks to "a massive bias towards" online applications and services. For example, a major roll-out of web-based email and collaboration built on IBM's Lotus iNotes is underway, while back-end administrative systems and even Bankwest's teller system are installed as server-side applications with web-based front ends.
"Over the years, there has been a very conscious effort to avoid legacy systems," Clasquin explains.

Read the full article.

Zdnet CIO Profile : Bank West

Wednesday, October 07, 2009

Interesting Announcements in the IBM Lotus World

There has been a flurry of announcements on Ed Brills blog recently. They are all around changes in the Lotus world for the impending release of Lotus Notes and Domino 8.5.1.

Here is a short summary
  • 8.5.1 will be available Monday 12th October
  • Domino Designer Client will now be FREE
  • Client Access Licence (CAL) has been simplified basically an Enterprise CAL and a Messaging CAL

We also wanted to address the changing nature of client access. For too long, we have asked you as customers to decide whether a particular user is a "Notes user" or a "browser user" or a "mobile user".  We thought it might just make more sense, given the trend towards ubiquitous access, if an end-user became a "Domino user", with the choice of tools and interfaces as needed.
  • An additional feature is the inclusion of the Lotus Mobile Connect client license in the Lotus Domino Enterprise Client Access License.
And it looks like there is more in 8.5.1...

That concludes my three-part introduction to Notes/Domino 8.5.1 -- and I haven't even talked about the technology yet, from the iPhone support in Traveler to the new Eclipse Lotuscript Editor to the Notes UI improvements to the further enhancements in DAOS.

Stay tuned..

Monday, September 07, 2009

Yes, I'm still here.

I've change employers - what! you didn't notice. I'm not surprised. The more observant of you might have noticed the small update to the disclaimer and update to my linkedin profile. Since joining Cirrus Australia I've not had much time to spend on keeping up with all things yellow and planetlotus. The last two months have been a blur, a very busy and very good blur. I've had plenty of commentary and ideas that I want to post about, it's just that finding the time is a challenge right now (so don't pull my link just yet Yancy).

You can read more about Cirrus Australia, Australia's newest IBM premier business partner, on our recently updated website.

www.cirrusaustralia.com.au

Friday, June 12, 2009

Simply Amazing - if Apple did a medical kiosk...

It's not often that you see an application that simply blows you away. This video has been receiving well deserved praise in the yellow-verse during the last week. If you are not a member, of said yellow-verse, you might have missed it. Frankly, its well worth watching regardless of which is your preferred platform/language/religon/taste in beer yada, yada.



Nathan Freeman and Chris Blatnick have been presenting and actively evangalising 'impactful' interfaces. This new one, blows away what has been in their presentations thus far (which has been pretty good anyway). 'Bones' sets the bar well and truly high. The whole project, not just the UI, is pretty astounding. Peter Presnell has a good write up which is worth a read.

Nathan and the team at Lotus911 have worked out some of the trickier details in crafting the interface, kiosk mode and composite applications, but have been smart in choosing Lotus Notes & Domino for the ancillary parts of the project around security, encryption and network failure. They've also been smart in choosing the hardware specifically for the target environment.

Dare I say a smart choice for a smart planet.

The take-away for Lotus Notes developers, who don't develop kiosk applications all that often, is that with composite applications you can craft any user interface you or your users desire.

It may not be easy, but at least now we know it's possible.

Well done Lotus911, Nathan and the Team.

Monday, May 25, 2009

Paper : Introducing Scrum into Government

Here is an award winning industry paper by Adrian Royce, from the Australian Software Engineering Conference (ASWEC 2009), via Rowans blog.

Here are some extracts;

This paper outlines the steps the author took in introducing the Scrum agile process into the Dept of Housing and what lessons were learnt.


Housing has now been running the ‘Scrum’ agile project delivery process for over 2 years. During that time all software projects have been delivered on or ahead of agreed time frames. ICT staff, engaged in the Scrum process, became motivated about delivering value to the client. ICT staff morale increased which led to staff retention. Feedback from business units across the department indicates that the usage of Scrum is a success.

The agile process called “Scrum” was selected over the
alternatives because it:
  • Emphasized communication and collaboration, functioning software, and the flexibility to adapt to emerging business realities[1];
  • Was not just relevant for developers but the entireproject team; and
  • Embraced agile philosophies such as the Agile Manifesto[2].
I particularly like the summary, which highlights an often missed attribute of Scrum.

The use of Scrum was a success at the Department of Housing. However even as a lightweight methodology, it requires much discipline.


Whilst Scrum is an Agile method, Agile doesn't mean that there is a lack of discipline. In fact the contrary is true, in that Scrum and XP have a great deal of discipline. This is how higher quality software is produced. What is different from traditional 'waterfall' development is that redundant and wasteful practice has been removed.

If you are interested in such things, or how Scrum and Prince 2 integrated for this department, then go read the paper.

Tuesday, May 19, 2009

Ubuntu 9.04, Nvidia and GeForce4 MX440

If nothing above applies, move along - nothing to see. This is one for the google search.

If you are trying to get Ubuntu and a GeForce4 MX 440 with AGP8X working at a decent resolution then the following may help. The information is a little scattered, so here it is in one place.

1. Download the latest version of the Nvidia driver NVIDIA-Linux-x86-96.43.11-pkg1.run

2. Install (instructions at the link)

If the screen fails to come up, or displays an error about choosing a different resolution and refresh rate then boot in safe mode, no user interface.

3. Modify your /etc/X11/xorg.conf like below (backup the default version first!) - you might need to brush up on your vi commands

Restart.

You should see more resolution options when you open the Nvidia settings. You can then set your resolution.

4. To make the resolution stick, update the file /home/.username/.config/monitors.xml with your preferred resolution.

Links for futher information

https://bugs.launchpad.net/ubuntu/+source/nvidia-settings/+bug/362704/comments/6
http://ubuntuguide.org/wiki/Ubuntu:Jaunty#Install_Latest_Nvidia.2FATI_drivers

Other Notes

1. Every time that you upgrade, you might need to re-install the Nvidia driver.
2. If you have a more modern card you might not need to do this.


Files

xorg.conf

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings: version 1.0 (buildmeister@builder63) Mon Feb 23 15:44:13 PST 2009

Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "Module"
Load "dbe"
Load "extmod"
Load "type1"
Load "freetype"
Load "glx"
EndSection

Section "ServerFlags"
Option "Xinerama" "0"
EndSection

Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
EndSection

Section "Monitor"
# HorizSync source: xconfig, VertRefresh source: xconfig
Identifier "Monitor0"
VendorName "Unknown"
ModelName "CRT-0"
HorizSync 30.0 - 81.0
VertRefresh 60.0
Option "DPMS"
EndSection

Section "Device"
Identifier "Videocard0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce4 MX 440 with AGP8X"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
Option "metamodes" "1152x864_60 +0+0; 1280x1024_60 +0+0; 1024x768 +0+0; 800x600 +0+0; 640x480 +0+0; 800x600_60 +0+0"
SubSection "Display"
Depth 24
Modes "1600x1200" "1280x1024" "1024x768" "800x600" "640x480"
EndSubSection
EndSection

monitors.xml

<monitors version="1">
<configuration>
<clone>no</clone>
<output name="default">
<vendor>???</vendor>
<product>0x0000</product>
<serial>0x00000000</serial>
<width>1152</width>
<height>864</height>
<rate>60</rate>
<x>0</x>
<y>0</y>
<rotation>normal</rotation>
<reflect_x>no</reflect_x>
<reflect_y>no</reflect_y>
</output>
</configuration>
</monitors>

Thursday, May 14, 2009

My quick tips for UI design and another example

Here are some quick tips that I keep in mind for user interface design, bearing in mind that I'm not a graphic designer (so don't be too harsh on me!). I also found another user interface sample in the project archives.

Style

Here are my six style rules (they are not so much rules as guidelines really) that I use when creating or making over a web or Lotus Notes user interface.

1. Rule of thirds

Most of my websites and notes apps are divided up into thirds, three columns or variants thereof. It's a well know composition technique that has been around a while.

http://desktoppub.about.com/cs/pagelayout/qt/rule_of_thirds.htm

2. Complementary Colours

There are a set of colours that work best together, so when I'm deciding on which colours I usually choose from a pallette of complementary colours. If you're not up on you primary colours and matching blends then do what I do and use the following websites to get a pallette to work with.

http://www.easyrgb.com/index.php?X=HARM
http://www.colourlovers.com/

3. Restrict the numbers of colours

That's right. just because there are 12 colours that work well together, doesn't mean that you should use them all. Between 3 - 5 colours are a good combination that tends to be less distracting. That doesn't include a violator.

4. Consistent Fonts

Keep the fonts consistent. That is, try to keep the different types of fonts to maybe one or two types and ensure that they are both a serif or both san-serif. Ty not to mix the types. There are instances where mixing and matching can work, but typically that seems to be websites of traditional printed materials like newspapers that have a long history of serif fonts.

5. Alignment

Nothing stands out more that something that isn't lined up. Alignment that is inconsistent looks sloppy, unordered and distracting to the user. I believe that most user scan the screen and alignment helps to scan the information quickly.

http://www.design-lib.com/alignment-in-graphic-design-gd.php

6. White space

Pay attention to the space around your UI elements, do they looked like a can of sardines or could you park a bus between them. Playing around with your whitespace proportions can make all the difference, try it until the spacing feels right - then stop.

Whitespace is often used to create a balanced, harmonious layout

http://www.alistapart.com/articles/whitespace
http://interfacematters.com/2009/03/cheap-ui-trick-add-whitespace-with.html

Function

Here are my five functional guidelines.

1. Hide the irrelevant and clutter

If the user isn't suppose to click on that button, then hide it. If that information on the screen is not important at this stage of the workflow, then hide that too. Have you ever sold a house and removed all the clutter, cleaned the surfaces and made it look like a show home ? Do the same to your UI.

2. Consistent behavior

I don't like to surprise the users, if they click on one export button and it asks for a filename and fills in a default, the any other export buttons should do the same. In essence when they perform an action they should have the same experience.


3. Simplify the choices

Don't give the users 5 different ways to do something, that's four extra ways that they have to remember and recall. Sure, provide some level of personalisation in the way the user can interact, but the fewer the underlying choices the better.

4. Remove Mild Annoyances

Things that are midly annoying in development and user testing, will be hell for users that have to use the application daily and for long periods of time - so spend some time fixing up those minor annoyances.

5. Proactive help

Set defaults. For example, if you are writing an export routine, set a default filename, set the default fields and options. Show context sensitive examples to give the user somewhere to start. It might mean a bit more coding, but just think of the amount of time that a user would waste repeating the same thing, over and over.

Sample from the archive

As promised, here is a user interface make over from the archives, that included some (but not all) of my guidelines.

Form. Note rule of thirds, colours, alignment and whitespace.

Tuesday, May 12, 2009

UI : what's the value of eye candy ?

Would you like to add some eye candy to your applications or website ? Need to justify to the boss some budget for a graphic designer ? or maybe even that Photoshop 101 course ?

Have a look at this article on a list apart, which explains why eye candy is more than just decoration.

According to a 2002 study, the “appeal of the overall visual design of a site, including layout, typography, font size, and color schemes,” is the number one factor we use to evaluate a website’s credibility.

That's right, if your website design dates back to the 1990's then perhaps you should think about adding a bit more eye candy or giving it a makeover.

The article also points out that, apparently, attractive things work better.

Okay, so maybe perceptions are important to product design. But what about “real” usability concerns such as lower task completion times or fewer difficulties? Do attractive products actually work better? This idea was tested in a study conducted in 1995 (and then again in 1997). Donald Norman describes it in detail in his book Emotional Design.

So there you have it, eye candy does have value.

Friday, May 08, 2009

Scrum Intro Presentation

From ScrumMaster.com.au website is a great introduction to Scrum. The presentation covers the the roles, the flow, the theory and artefacts.

Thursday, May 07, 2009

UI Pattern : Linking Data

Here is a UI sample from my latest web application, for those of you who are interested in such things.

The Problem.

To date, in the audits that I've built the users have been required to enter de-identified patient data in two cycles. The data from one cycle to the next has no relationship. That is, the GP (Users) could audit and enter the same or different patients data between the two cycles. It made the interface very simple. The user clicks on a button to create a new form and we simply count down the number of required records for each cycle. The user can't change or see the data once it's been submitted - a very simple user story and simple interface to match.

For the current audit, the scope changed slightly. As part of this new audit the users would be required to audit the same patient in cycle 2 that was audited in cycle1. This is so that we could provide a care plan over the period of the audit.

This new requirement raised a few questions that I needed to resolve;

1. How can the user identify the third patient they submitted in cycle 1.
2. How could the user enter data and ensure that it was linked to the correct patient.
3. How could I ensure that the duplicate data (like gender and patient code is retained)

Fundamentally, I couldn't rely on the user entering the correct data in a form. I needed to lead the user through this association in the simplest possible way.

I started out thinking of a pick list on the form so that when the user selects a value, which could be a combination of data, it populates the fields.

I wasn't happy with that approach, it just felt too clumsy and not at all simple and elegant. I went through various iterations (on paper) before deciding on the final solution.

The Solution.

Cycle 1.
The user sees the traditional (in our apps) 'Submit Case Record Online' button and as they enter the data, the system counts down the remaining case records as before. I added a summary table, so that the user can see their patient code and some additional information. This was to help them remember who that patient was and put in place the mechanism that I would use for cycle2.

Cycle 2.

I added a link, 'Submit Case Record Online', and cycle 2 creation date right next to Cycle 1 records in the summary table. When the user comes to enter data for cycle 2, they can easily see the patient information and where to click to submit the cycle 2 data for that particular patient.

I was trying to not make the user think.

I removed the blue button (above the PDF link) so that there wouldn't be any confusion. As an additional touch I made sure that the link to data that was already submitted was replaced with a completed 'tick' icon.

The link contains a code that is used in the web query open to link the cycle 2 record with the cycle 1 record, including getting the common data.


Summary.

It's a simple interface that provides a really intuitive way to link the cycle 1 data to the cycle 2 data.

Wednesday, May 06, 2009

Scius PDF library Beta 8

Beta 8 of the Scius PDF Library, that I mentioned earlier, is available for those that need the following extra features.
  • Bullet List,
  • Manual Page Break,
  • Repeating Table Headers,
  • In-line Images, and
  • Page Orientation changes on the fly.
This will be the final version. I will not be enhancing the library further.

The code base that this is used in will not be changing and therefore, there are no new features planned.

Below are some code extracts, so you can see how easy it is to use those new features.


Repeating Table Headers

RowElement headerrow = new RowElement();

CellElement headercell =

new CellElement(

"Here is a big table and some headings");

headercell.setCellspan(3);

headerrow.addCell(headercell);

headerrow.setTableHeading(true);

table.AddRow(headerrow);


Bullet Lists

// create a list item and add the bullet.

ListElement le = new ListElement(10, tableStyle);

le.setSymbolImage("examples/orgball.gif");

le.setBulletIndent(20);

le.addBullet("Here is one");

le.addBullet("Here is two");

data.add(le);


In-line Images

// create an image and set scale and alignments.

ImageElement ie = new ImageElement();

ie.addImage("examples/ls09-bloggers.jpg");

ie.setImageScalePercent(100);

ie.setImageAlignment(ImageElement.IMAGE_ALIGNMENT_MIDDLE);

data.add(ie);


Page Orientation

data.add(new PageElement(Page.ORIENTATION_LANDSCAPE));


Page Breaks

data.add(new PageBreakElement());

Monday, May 04, 2009

Agile or Not. A few links to help you decide

Need a checklist to decide if that new project should be done using Agile ?

So far the Scrum Agilitists that I've met seem to be a very pragmatic bunch, a bit like myself. They realise that Scrum isn't a silver bullet, quick fix or guarantee of sucess for every project. As part of the CSM course that I recently took, we covered when to choose Scrum and importantly when not to.

Scrum makes reference to the Cynefin Framework (developed by Dave Snowdon, the KM guru and pioneer in the application of complex adaptive theory) around leadership decision making and complexity.

You see, Scrum work best for complex projects where the scope is not well understood or agreed and the technology is far from certain - two huge areas for contention in traditional waterfall approaches. For the complex domains, 'probe, sense and respond' is prescribed by the Cynefin Framework which matches the 'apply, inspect and adapt', that Scrum uses.

Even then, if you have worked out that you have a set of suitable project, which ones are likely to have a successful outcome and are ripe to use Agile techniques. Kane Mar, a well known Scrum Trainer and Coach, has published a simple score card to get started. Agile Project Selection from a portfolio of projects, it might help to identify which projects are good candidates. Although, he notes that as you become more experienced you'll be able to identify which projects to choose without a scorecard.

Here is a bit more about the scorecard.

The Scorecard is simply a list of criteria that can be uses to assess the characteristics of a particular project. A numeric value is associated with each question, so that scores can be simply tallied up based on the total value and then used to determine if the project is suitable for “the Agile treatment.”

Lets also consider some stats.

EMA research conducted in mid-2008 determined that 80% of companies surveyed had custom software in production, a higher percentage than Enterprise Resource Planning (ERP), Customer Relationship Management (CRM), or any other application type.

They also determined that over 60% of the time, software development projects fell short of expectations which means that only 40% of budget dollars invested in software development yield business value and therefore the conclusion is that reversing this trend can yield very rapid ROI.

The CSM course cites the Standish CHAOS Reports to determine that 64% (I'm not sure the date of which report) of features are seldom or never used and therefore the case for deciding on features based on value.

So if the EMA and Standish data is right (some may disagree) then adopting a software development methodology that reduces waste and has an emphasis on value is going to be a wise choice in the current environment.

So it's hardly surprising then, given the numbers, that you will be hearing more about Agile (and Scrum) as this rapidly becomes the standard approach for complex projects - which includes software development.




Wednesday, April 29, 2009

Agile Contracts

I can see how Agile works for software vendors or corporates who develop software internally, but what about service companies, like IBM Business Partners, who supply software development services ? Usually client like to know what they are going to get and for how much. Fixed Price and Labour/Time and Materials contract models, with the BDUF, are prevalent method that I've come across.

So how does this work for Agile ?

Two interesting posts that contain the agile approach to the contractual obligations between customer and supplier have appeared on my RSS feed recently. They might be a useful starting point if you are pondering how to supply your services in an Agile manner and so I thought they would be worth a re-post.

Firstly, Rowan, the Scrum Trainer from my recent Certified Scrum Master training has posted the course round up, including links to further information about the Agile contract models that we covered.

Secondly, there is a very detailed description of 10 Contracts for your next Agile Software Project. Which breaks down different contract types into the following;

  • How is the contract structured?
  • How does it handle changes in scope (requirements)?
  • How does it apportion Risk and Reward between customer and supplier?
  • What model of customer relationship does it foster: competitive (my win is your loss), cooperative (win-win), indifferent (I don’t care-you lose) or dependent (heads-I-win-tails-you lose)?

Wednesday, April 08, 2009

Quote of the Day : The Lotus Notes platform -- it's very sophisticated

"The Lotus Notes platform -- it's very sophisticated," Doherty said. "That can scale pretty good, but it does involve a lot of clustering and a lot of sets of clusters. So you can continue to scale, but does get a little bit complicated. But the same could be said about Exchange and your back-end SQL clusters."

More
via Ed

Monday, March 30, 2009

Are you interested in Agile and UX together...

With 341 bloggers posting on PlanetLotus, sometimes you miss something. I'd previously missed Chris Recklings older post about Design@IBM. However, I did see his recent post about the UXDesignCast, which led me to discover the team talking about Optimized Agile Design in one session. I also found the new article An Agile Approach to User Experience and Design on the Design@IBM website.

Friday, March 27, 2009

Domino Unit Framework Q&A - Part 1

Here are some questions about using 'Domino Unit Framework' that have ended up in my inbox recently. So that everyone who uses it (all two of you) get the benefit I've posted them here and cross linked to the OpenNTF project. Excuse the poor English in the questions, they are coming from Karnataka in Banglore and English isn't the first language.

Question 1.

"So now my query is i need to get the document context of this..then only i
can test or compare or what ever it is..Can i run the tests of domino unit
frame work independently with out tieing to the Application data base."

Answer 1.

Yes, you can run the unit tests independent of the Domino Unit Framework database.

You will need to copy the Domino Unit Framework Script libraries into your application and build a place where you want to execute the tests (Agents, Action Buttons - Your choice). The results of the tests (pass/failures) are then sent to the domino unit framework database that you specify. You can send the documents to any database but you'll need to see the results.

Set OutputStream = New NotesDatabaseOutputStream(session, "", "DUFResults.nsf")

When you are migrating to production/uat, remove the script libraries and agents.

Question 2.

"Is there a way to test them independently with out tieing to application database is my Question or As per ur inputs is this only the best way to test.(copying)"

Answer 2.

Nope....

It's a bit like trying to compile a java program and not having the jar file on the path....the database is the project, therefore - like jUnit you need to allow the objects that you are testing to be in scope.

Question 3.

"I don't find any assertion for comparing two arrays of type Variant..that is Variant array or list in Domino Unit Framework.Is there any solution for that or do we need to manually write some class for that in the script library."
I was trying to test two variant arrays,its saying failed(As no case is available as such) even though both the variant arrays contains same values"

Answer 3.

Equality of Arrays, especially arrays of variants is particularly tricky - mostly because the rules of equality can vary, and there is a large combination of possible rules that may or may not be relevant in your particular instance. Is order important for equality ? or perhaps number of elements ?

Therefore, asserting equality between arrays (and arrays of variants) is not (and perhaps never will be) included in Domino Unit Framework.

My suggestions is to either write your own custom assertions as you have access to the source code, or unit test at the array element like so;

Call Test101.AssertEqual(array_a(0),array)b(0))