Please Leave

If you do not like my country, please leave.
If you do not like the way our women dress, please leave.
If you do not like our separation of politics and religion, please leave.
If you support violent responses to criticism of Islam, please leave.
If you support terrorism in any way, shape or form, please leave.
If you cannot accept satirical cartoons in our newspapers, please leave.
If you do not support democracy or the freedom of speech, please leave my country.


How to open a Notes Database in Ten Years

Assume you have a database from an employee in ODS 43 format. The employee quit the company and you put his mail file on a DVD.
Whoooosh … 10 years later you are asked to find a special document in this database. At this time you’re running Notes 12.5 with ODS 99. I know, Lotus Notes will always be downward compatible …

What I want to say is, that all archive systems offer an option to have a copy of all or of all selected documents on a cd or DVD and you can hand out this storage to anyone, regardless if he or she has the associated appication installed on his computer.

The data is written on the storage together with a runtime version of the application the data is created with.

Will we ever have this feature in Notes ? Anyone at IBM reading this and like to leave a comment ?


Notes Client On USB Key – The Starter

As I posted earlier this week, I was about to write a small starter application that would do all the necessary changes to the notes.ini when you have a notes installation on an usb key. Well here it is: nstart.exe
When you plug in your usb key to a different computer, you cannot be sure to have the same drive letter for your usb device than before.
In this case your Notes won’t start and you have to tweak the notes.ini manually.
Copy nstart.exe to the notes root directory. When you double click nstart.exe, the tool will set all occurencies of drives ( for example e:\ ) to your current drives letter and then start notes.exe.
The code is still very beta; it should have more error handling, I know. But I decided to release the code in this very early state. The code works for me but maybe not for you. So please give me a feedback when you find the code useful. Even if you think this stuff is crap, please let me know. And if you find errors ( and I’m sure you will ) just leave a comment.


// nstart.cpp
/////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "nstart.h"
#include "CPathSplit.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
#define NOTES_INI "notes.ini"
#define NOTES_PRG "notes.exe"
#define BACKSLASH ":\\"

CWinApp theApp;
CFile* fin = NULL;
CFile* fout = NULL;
CFileException ex;
CString Drives ="CDEFGHIJKLMNOPQRSTUVWXYZcdefghijklmnopqrstuvwxyz";
char AppPath[MAX_PATH];
int i, n, j;

using namespace std;

/////////////////////////////////////////////////////////////////////////////
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;

if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
cerr < < _T("Fatal Error: MFC initialization failed") << endl; nRetCode = 1; } else try { GetModuleFileName(AfxGetApp()->m_hInstance,AppPath,MAX_PATH);
CString l_oStrPath = AppPath;
CPathSplit l_oPathSplit(l_oStrPath);

CString l_oStrFileExt;
CString l_oStrPathCustom;
l_oStrFileExt = NOTES_INI;
l_oStrPathCustom = l_oPathSplit.GetPath(ePATHEL_DIRECTORY, & l_oStrFileExt);

CString BS(_T(BACKSLASH));
CString strPath(AppPath);
CString ThisDrive (strPath.Left(1) + BS);

fin = new CFile( l_oStrPathCustom, CFile::modeRead | CFile::shareDenyNone);
ULONGLONG dwLength = fin->GetLength();
char pbuf[99999] = {dwLength}; // read NOTES.INI
UINT nBytesRead = fin->Read( pbuf,dwLength );
fin->Close();

CString buffer(pbuf);

// replace drive letters with current drive
for (i=0; i < Drives.GetLength() ; i++) { CString DriveLetter (_T(Drives.GetAt(i) + BS)); j = buffer.Replace(_T(DriveLetter), _T(ThisDrive)); } // write notes.ini fout = new CFile( l_oStrPathCustom ,CFile::modeWrite | CFile::shareDenyWrite); fout->Write(_T(buffer),dwLength);
fout->Flush();
fout->Close();

// start the client
l_oStrFileExt = NOTES_PRG;
l_oStrPathCustom = l_oPathSplit.GetPath(ePATHEL_DIRECTORY, & l_oStrFileExt);
ShellExecute(0, "open", l_oStrPathCustom, 0, 0, 1);
}

catch (CFileException* pEx)
{
// if an error occurs, just make a message box
pEx->ReportError();
pEx->Delete();
nRetCode = 1;
}
catch (...)
{
nRetCode = 1;
}

return nRetCode;
}

Download Source


Notes Client on USB key

IBM announced Project “Wanda” at Lotusphere2006.

Project Wanda : for roaming users you can carry for entire Notes experience on a usb key that can plug into any computer regardless of if it has notes installed.

This is a great idea. I’m not at Lotusphere; so I’m not able to ask for further details. ( anyone out there who has details and would share his knowledge ? )
I guess, that they will use U3 technologie to accomplish this.

But why wait for Wanda ?
For all of you, who haven’t already have a Notes Client “installation” on an USB-key, here is what I did:

I just copied my local Notes folder to the key and tweaked the notes.ini. That was easy, wasn’t it ?

Ok, there are a few limitations:

  • The stick must have at least 350 MB of free space
  • Depending on the drive letter you have to tweak the notes.ini manually once again
  • You cannot start a Notes Database by double-clicking ( registry entries are missing).

As a workaround whilst waiting for Wanda, I will write a “starter” asap, so all you have to do is plug in the key and double click the nstart.exe. The nstart.exe will change the notes.ini for you.


Blog, blog, blogging from Lotusphere

Sitting in good ol’ Germany, I’m eager to read the “Bloggregator” ( by Richard Schwartz )
Yesterday there was a real information overflow due to a huge amount of blog entries. Today it seems to me that soft drinks flavoured with Yak pee, coffee and other energy drinks do not work any longer for the hardcore bloggers.
You can count the number of new entries by 10 fingers. What’s up ? 😉

Anyway, have a good time there at Lotusphere2006.


Why at least pay for what you can get free of charge ?

According to Ed Brill there are plans to have “standard out-of-the-box RSS feed support as well as blog template support” .
To be honest; why do I have to pay for new “features” I can get free of charge from the Open Source community ? I can download a well working Blog template from OpenNTF and can code a RSS feed using generic Lotus Notes capabilities.

It is ridiculous to offer more and more new features but leave the core product as is.
I’ve complained about the fact that it is not possible to change the column headers at runtime. The same complaint about tabbed tables labels.
Another one is about sections. Why can i change the twistie in views using an alternative to the standard picture but cannot use this in sections ?

Developers should rather concentrate on how to implement code for this than create functions for stuff that is already available


madicon easyMail

easymalWerbung (nicht im Sinne von SPAM) per eMail ist heute üblich und bietet eine kostengünstige Variante, Kunden oder Interessenten zeitnah mit aktuellen Informationen bzgl. neuer Produkte oder Dienstleistungen zu versorgen.

Solche Mails sollten eine individuelle Anrede aufweisen und ggf. im Text der Mail weitere, dem Empfänger der Mail zugeordnete Details enthalten. Kurz – eine solche Mail sollte personalisiert sein.

Zusätzlich sollen wichtige Textstellen optisch hervorgehoben werden können und somit auch eine (heute übliche) Zeichen- bzgl. Absatzformatierung möglich sein. Auch die Unterstützung von Dateianhängen sollte eine Selbstverständlichkeit sein.

Manfred Dillmann hat nach dem madicon RSS reader mit madicon easymail wieder einmal ein hervorragendes Programm veröffentlicht.


Team Mailbox v2.11

In jedem Unternehmen gibt es Mail-In Datenbanken wie info@acme.com oder sales@acme.com. In den meisten Fällen liegt diesen Datenbanken das Design der Standard Mailschablone zugrunde.

Diese Datenbanken werden zumeist nicht nur von einer einzigen Person genutzt, sondern von einem Team. Die Standardschablone hat aber den Nachteil, daÃ? man keine Gruppe als Datenbankeigentümer in die Vorgaben eintragen kann.

Brian Green stellt hier seine Team Mailbox v2.11 zum kostenlosen Download zur Verfügung.

[via Bruce Elgort]


Creating a database replica (stub) that contains no documents

When creating a new copy of a database with File -> Database -> New Copy, there is an option to only copy the design and no documents from the source database.
When creating a new replica of a database with File -> Replication -> New Replica, there is no option like this. The replica stub that is created will not include any documents, but it will not allow administrators to make any modifications to the database design or the Access Control List (ACL).

To create a replica of a database without any documents do the following

[via Lotus Notes Knowledgebase # 1097325]


Wink

Wink is a Tutorial and Presentation creation software, primarily aimed at creating tutorials on how to use software (like a tutor for MS-Word/Excel etc). Using Wink you can capture screenshots, add explanations boxes, buttons, titles etc and generate a highly effective tutorial for your users.

Wink is distributed as freeware for business or personal use.

[via Julian Robichaux, Jumpstart Session Sneak Peek]


Lotusphere2006, Blackberry, Web Services

A few weeks ago, I already wrote a short note about RIM’s request to connect the Blackberry to the heldesk application !!HELP!! using the new web services feature in Domino 7.
Create Ticket via web services At this time I did not know much about web services and how a Blackberry could access the services in a Domino appication. So I decided to listen to the Julian Robichaux’s podcasts about web services on Taking Notes once again. After I realized that writing a web service in LotusScript is as easy as writing an agent, I began to code a few basic services like “Create Ticket” and “GetAllTicketsBySupporter”.

So far for the “producer” part; but what about the “consumer” ??

How could I test, if the services would work ?

After a short search on Google I found Webservice Studio. .NET Webservice Studio is a tool to invoke webmethods interactively. The user can provide a WSDL endpoint. On clicking button Get the tool fetches the WSDL, generates .NET proxy from the WSDL and displays the list of methods available. The user can choose any method and provide the required input parameters. On clicking Invoke the SOAP request is sent to the server and the response is parsed to display the return value.

Axel Janssen started to code a SWING client ( now available on sourceforge ) and Mark Teichmann created a RPC client to access and consume the services. Both, Axel and Mark are members of the German Notes Forum atnotes.de. If you are a german native speaker, you can read the whole story here

After coding a handful of services; I sent the source to RIM. Here is Jon’s reply:

I was able to load the lss into a web service just fine.
The web service imported into a MDS Studio project without problems. The final stage is to test the functionality through the service from our MDS connection service. … I am suspecting that the services will be consumed by the client without problems.

Assuming this all comes together on time, it will be a great showcase of your application and our platform capabilities.

What comes next ? Well, here comes the next mail from Jon:

Ulrich, update from our team meeting.
We are going to use the Help app in at least two of our hands-on training sessions at Lotusphere on Sunday and Monday.
We have another presentation session on Wed where it may get highlighted.
We have several booths on the showcase floor that will be demoing apps, and the App may make the these booth pods as well.

If you are at Lotusphere, be sure to visit the RIM booth 😉

!!HELP!! is an OpenNTF project and Bruce Elgort has a session about OpenNTF ( BP-105) . Please visit his presentation and “Learn How OpenNTF Open Source Solutions Can Save You Time, Money and Your Hair!”

And, to answer the question in advance; No, I’ll not be at Lotusphere. 😕