OpenSlice

OpenSliceOpen Slice is an application framework for Lotus Notes applications. It is not an application itself, but rather the bottom layer of any application – the first slice of your application sandwich if you will. Open Slice is designed to provide most of the basic elements that any Notes application requires. This allows developers to skip the basic stuff, and get right to the “meat” of the application.

While there may be some new things, many things within Open Slice will be familiar, particularly to developers who have built up their own repositories of code over the years. So then the question should be asked – what does Open Slice give me that I don’t already have? The answer to this is that Open Slice provides a single consistent approach to all of these common elements, and an easy mechanism for updating these elements across multiple applications. It helps to eliminate variations in coding techniques between different developers, and most importantly it will save you time. Finally, because it is open source, it allows you to see the code and continue to build and use your own code libraries right along side the Open slice framework.

In addition to the basic framework, over time Open Slice will continue to evolve with additional application objects (MS Word reporting, Organisation Hierarchy Processing), and complete applications (document library, discussion database) based on the Open Slice foundation.


Must-Have tools and templates

IBM ships a couple of default templates with every release of Lotus Notes Domino. There are loads of templates you can download and use free of charge from OpenNTF. And you can find much more when surfing the internet.

I’m not only talking about open source and free of charge tools and templates for every-day-work.

Let me know about your “must-have” gadget or your favorite kewl tool; … post a link to an awesome template; … write your success story; … how do you use standard templates? 😉


From the 7.0.1 Fix List

You can use LotusScript to automatically specify a different printer other than the default printer, and reset a printer to be the default for all software applications. However, if you do this, Lotus Notes fails to pick up the Windows Registry printer setting change. All other software applications correctly pick up the changed setting.

SPR# DJOE587EW3 – With this fix, Notes reponds correctly after changing the default printer using LotusScript. *YEEHA*

[via Lotus Notes Knowledgebase document # 1194457]


The IT Crowd

The IT crowd

Watch Jen ( she knows nothing about IT ) , Moss and Roy ( standard nerds ) in their daily effort to provide “IT Services”. 😉
Unfortunatly this real great stuff is only available for UK audience ( anyone knows why ? ) according to the Channel 4 website. Unofficial releases of the TV show ought to be available in P2P networks, as far as I’ve been told about …


Notes on a USB Key – Chapter 2

wendyI changed the code for my project “Wendy” once again. In the former version of nstart.exe, the file had to be copied to the Notes executable directory.

This is no longer necessary now; you can copy nstart.exe to i.e the “root” directory of your USB key, regardless of where your Notes Client is installed. nstart.exe locates the notes.ini and notes.exe, makes the necessary changes and starts the client.

This is NOT project “WANDA”, IBM announced at Lotusphere2006. It is my solution on how to put a Notes client “installation” on a USB key. But I’m eager to see what IBM’s solution will look like.

Does anyone have some information about project “WANDA” ?

/////////////////////////////////////////////////////////////////////////////
//  nstart.cpp
/////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "nstart.h"
#include "SADirRead.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 ":\\"

CString Drives ="CDEFGHIJKLMNOPQRSTUVWXYZcdefghijklmnopqrstuvwxyz";
CFile* fin =	NULL;
CFile* fout =	NULL;
CWinApp			theApp;
CSADirRead		FSearch;
CFileException	ex;
CString			THE_NOTES_INI;
CString			THE_NOTES_EXE;
char			AppPath[MAX_PATH];
char			pbuf[99999];
int				i, j, m, n;
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 BS(_T(BACKSLASH));
		CString strPath(AppPath);
		CString ThisDrive (strPath.Left(1) + BS);

		FSearch.ClearDirs();
		FSearch.GetDirs(ThisDrive, true);
		FSearch.ClearFiles();
		FSearch.GetFiles(NOTES_INI);

		CSADirRead::SAFileVector &IniFile = FSearch.Files();

		for (CSADirRead::SAFileVector::const_iterator m = IniFile.begin();
			m!=IniFile.end(); m++) {

			THE_NOTES_INI = ("%s\n", (*m).m_sName);
		}

		fin =	new CFile( THE_NOTES_INI,
				CFile::modeRead | CFile::shareDenyNone);

		// read NOTES.INI
		ULONGLONG dwLength = fin->GetLength();
		ULONGLONG 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( THE_NOTES_INI ,
				CFile::modeWrite | CFile::shareDenyWrite);

		fout->Write(_T(buffer),dwLength);
		fout->Flush();
		fout->Close();

		// search Notes executable
		FSearch.ClearDirs();
		FSearch.GetDirs(ThisDrive, true);
		FSearch.ClearFiles();
		FSearch.GetFiles(NOTES_PRG);

		CSADirRead::SAFileVector &ExeFile = FSearch.Files();

		for (CSADirRead::SAFileVector::const_iterator n = ExeFile.begin();
			n!=ExeFile.end(); n++) {

			THE_NOTES_EXE = ("%s\n", (*n).m_sName);
		}

		// start the client
		ShellExecute(0, "open", THE_NOTES_EXE, 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;
}

Action Check

This is a small utility designed to tell you which actions are not compiled. If, for some reason, an action is not compiled the tool will identify the title of the action and the position in the action bar.
More information about the background of this utility can be found here.

[via Craig Schumann]


Why does Notes …

not recognise that there is a new drive available ? I plug in my USB key whilst the Notes Client is running. I want to save data from within Notes on the thumb … the save dialogue pops up and … nada, niente, nix, nothing .. no way to access my attached USB key.

After restarting the client, I can access the drive. This is annoying. Why does Notes not behave like any other Windows based application ? Could someone at IBM fix this issue, please ?


Deep Purple / Alice Cooper

Im Rahmen ihrer Tournee machten die beiden Dinosaurier des Rock am 10.02.2006 auch in Dortmund Station. Ich hatte meine Karten schon Monate vorher bestellt und bin dann gestern mit meiner Frau zum Konzert gefahren.

Ich war ein wenig skeptisch wegen der Zusammenstellung. Alice Cooper und Deep Purple als gleichberechtigte Gruppen in einem Konzert ? Ob das gutgeht ?? Es ging gut, soviel sei vorab verraten 😉

Alice CooperPünktlich um 19:30 ging das Licht in der grossen Westfalenhalle aus und im gleichen Moment knallten einem die ersten Riffs von “Dirty Diamonds” um die Ohren.

Eric Singer ( der Drummer von Kiss ) trommelte, was das Zeug hielt. Es war recht beeindruckend, wie dieser Mann mit dem Drumset umging. Einfach Klasse. eric singer
Alice Cooper spulte routiniert seine mitlerweile über 30 Jahre alte Show ab. Das Lineup wird vervollständigt durch die beiden Gitarristen Ryan Roxie und Damon Johnson sowie Bassist Chuck Garric.

“Billon Dollar Babies”, “No more, Mr. Nice Guy” und “School’s out” waren natürlich fester Bestandteil der Show, ebenso wie die Enthauptung des Protagonisten.

Warum Herr Cooper beim Titel “Eighteen” mit einer Krücke herumfuchtelte, erschliesst sich mir nicht. Evtl liegt es an seinem fortgeschrittenen Alter.

Eine Neuerung im Programm war wohl der Part, in dem eine als Paris Hilton verkleidete Actrice ( Cooper Töchterchen Calico Cooper )zunächst ein paar Paparazzi verprügelte, Mr. Cooper ihrem kleinen Köter aber im Gegenzug den Kopf abriss. Er kann es einfach nicht lassen 😉

“Poison” brachte den Saal dann richtig in Schwung. Leider war es das dann auch schon. Ein weiterer Titel folgte, dann war nach gut 1:20 h Schluss mit “Feed my Frankenstein”.

30 Minuten Umbaupause; Teppich wird ausgelegt; ein Roadie staubsaugt den Teppich; Amps und Instrumente werden aufgebaut; Beeinduckend, was beim Soundcheck allein aus den Sidefills und den Monitorboxen herauskommt. Im direkten Vergleich sieht das Drumset von Ian Paice eher wie ein Kinderschlagzeug aus. Aber Herr Paice wird besser beurteilen können als ich, was er so braucht.

Deep PurpleDeep Purple gehört inzwischen zu den ältesten Bands im Rockgeschäft, aber sicher nicht zum “alten Eisen”. Seit 1968 mischt die Gruppe als “Deep Purple” im Rock-Business mit. Von den Gründungsmitgliedern ist allerdings nur noch Drummer Ian Paice dabei.

Nach einem kurzen Videoeinspieler, der zeigte, wie die Band aus einer Gitarrenkiste kletterte, schlenderten sie in der aktuellen Besetzung Ian Gillan (Gesang), Ian Paice (Schlagzeug), Roger Glover (Bass), Steve Morse (Gitarre) und Don Airey (Keyboard) auf die Bühne und eröffneten den Abend recht viel versprechend mit “Pictures Of Home” von dem 1972er Album “Machine Head”.

Roger GloverGlover hatte sich in der Mode alternder Biker eine Bandana um den Kopf gebunden, Paice – der inzwischen aussieht wie Elton Johns dicklicher Bruder mit Zopf – gefiel sich in einem ärmellosen T-Shirt von Nike, während Gillan in weissem Hemd mit dunkler Hose und barfuss ( jetzt versteht man auch den Teppich und das Staubsaugen ) die Rolle des Conferenciers übernahm und Morse die hellblaue Jeansmontur uneitler Hardrock-Gitarristen bevorzugte.

Wie nicht anders erwartet gab es Songs vom neuen Album “Rapture of the deep”.

Die Soloeinlage von Steve Morse, in der er seine E-Gitarre wie eine Kirchenorgel (!) erkingen liess wurde vom Publkum nicht so recht verstanden und nach 5 Minuten durch Pfiffe beendet. Ich hätte dem Spiel des Herrn Morse gerne noch weiter zugehört. Wann hört man schon einmal Bach auf der E-Gitarre ??.

Don Airey lieferte ein ebenfalls grandioses Solo ab; ich weiss nicht, wie viele Stilrichtungen er in seinem knapp 4 minütigem virtuosen Keyboardspiel untergebracht hat. Und worin kann ein Keyboardsolo sonst enden als in “Perfect Strangers” ?

“Highway Star”, “Black Night”; es ging Schlag auf Schlag. Vermisst habe ich eigentlich nur ‘Child In Time’, das Ian Gillan allerdings schon seit 15 Jahren nicht mehr live vorträgt.

Der Hit aller Luftgitarrenhelden, “Smoke on the Water”, beendete schliesslich ein grandioses Konzert, zu dem viele “Herren” mit schütterem Haar und einer dicken Wölbung oberhalb der Gürtellinie auch aus dem benachbarten Ausland angereist waren.

Es war ein gelungener Abend …


Sizer v3.3

Sizer is a freeware utility that allows you to resize any window to an exact, predefined size. This is extremely useful when designing web pages, as it allows you to see how the page will look when viewed at a smaller size. The utility is also handy when compiling screen-shots for documentation, using Sizer allows you to easily maintain the same window size across screen grabs.

Rocky Oliver mentioned it a while ago, and I’m using this great tool for a couple of years. It is my #1 freeware tool. You can download Sizer from here


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.