August 30, 2007

September G33K

Date for september g33k has been changed to the 25th of september

In may 24th earlier this year the first g33k date took off for which the expectations were set high and which also ended up very successfully. Another g33k meeting has been planned for september 25th and you wouldn't want to miss it!!!

This time Viktor Krantz and Troy Reimer from Snapps (US) are keynote speakers and will talk about the relatively new product Quickr and other things I'm sure. Snapps is the official IBM Design Partner for Quickplace (Quickr) and has produced high-quality, free Quickplace and Quickr templates. For the interested you can find templates for Quickplace 7 here and Lotus Quickr 8 templates at Snapps are also co-producers of Collaboration University and let's not forget to mention Rob Novak's and Viktor Krantz's very popular session 'The great code giveaway' which is held every year at Lotusphere.

This is a great opportunity to meet other developers working with Lotus Notes/Domino, Java, web etc. and I assure you it will be both instructive, fun and beerish in a comfortable mixture that especially g33ks like us appreciate ;-)

The time for the meeting is set to 06:00 PM and will be held in the center of Stockholm, Sweden also this time at Ekakan's premises. Check here for more details and the latest information.

Sign up here in a comment or send a mail if you would like to join us!

Technorati tags:
, , , ,

August 29, 2007

Notes/Domino 8 preparation test are out

IBM Lotus Notes/Domino 8 certification preparation tests from CertFX are out:

Technorati tags:
, , ,

August 27, 2007

Java 5 in Notes 8

Java 5 (Tiger) is included in Notes 8. N/D 8 is backwards compatible though and defaults to earlier API. To make use of the new Java API when writing source code directly in the Notes client some adjustments are needed.

Add the following line to Notes.ini and restart notes:


Got this tip from Mikkel Heisterberg on

Technorati tags:
, , ,

August 20, 2007

"That's not a bug that's a feature"

feature, originally uploaded by dratz.

August 16, 2007

Developing Java for Domino in Eclipse

I try to develop all agents and script libraries in Java rather than lotusscript nowadays. The notes java (from the lotus.domino library) covers many of the functions that lotusscript offers and besides that you have the whole Java library itself which many times makes it more powerful than lotusscript.

The notes client is not the best Java editor though. The type ahead functionality is not there as it is for lotusscript and the lack of color coding makes the code a bit difficult to read. Once you have tried to develop Java using Eclipse you get spoiled and it really is a great thing to be able to develop java applications (like agents and script libraries) for Domino in the Eclipse client.

Here's how to do it:
- Assuming you have a functional Eclipse client, create a new project (for example 'Notes Java') and open the properties for that project.
- Click on 'Java Build Path'
- Click on tab 'Libraries' and press button 'Add External JARs'
- Find 'Notes.jar' and click on open to add the special notes java classes to the build path, which makes it possible to use them in the Eclipse client. (I have the notes 7 client installed and the path was 'C:\Program\lotus\notes\jvm\lib\ext\Notes.jar')

- Create a package in the project and under the package create a class called for example 'JavaAgent'.
- Change 'Superclass' to 'lotus.domino.AgentBase'.

- Now start writing Java code in the Eclipse client as you normally would in the notes client. Copy and paste the skeleton code that always comes with a new java agent. Here's a test agent that uses a notes view to loop through all documents and prints a field value for each document.

package com.ekakan.NotesJava.agents;
import lotus.domino.*;

public class JavaAgent extends AgentBase {

public void NotesMain() {

try {
Session session = getSession();

AgentContext agentContext = session.getAgentContext();

Database db = agentContext.getCurrentDatabase();
View view = db.getView("actions");
Document doc = view.getFirstDocument();

while (doc != null) {
if (doc.isValid()) {
doc = view.getNextDocument(doc);


} catch(Exception e) {


- To run the code, first compile it in the Eclipse client to create a class-file, i.e. 'JavaAgent.class'.
- Import the class file to a new notes agent using the 'Imported Java' option.

- Save and use in what way you would like to. Whenever a change is made to the java file in the eclipse client the class file has to be imported into the notes client again of course.
- Another option instead of importing the class file is simply to copy and paste the code from eclipse to notes.

One thing that you might come across when trying to run the agent in the notes client is an unpleasant error message on the Java console saying something like this:

java.lang.UnsupportedClassVersionError: Unsupported major.minor version 49.0

This means that the JDK used to compile with is of a newer version than the version that the application is running against. Which in this case means that your Eclipse proabably uses version 5.0 or 6.0 while Notes uses 1.4. Check on the Domino console for the JVM version running using the command 'Show JVM'.
In Eclipse, open the properties for the project and click on 'Java Compiler'. In the JDK section, set the correct compiler compliance level, in this case 1.4.

Technorati tags:
, , ,

August 14, 2007

Gmail Toolbox

Mashable has listed the Gmail toolbox with over 60 tools for your Gmail.

A must for Google lovers!

Technorati tags:
, ,

August 13, 2007

Fun on YouTube!

This is hilarious!

And this is just so finnish ;-)

Thanks to my good friends Pär and Kristian for this!

Technorati tags:
, , ,

August 06, 2007

Evaluate in Java

Something I didn't know is that the evaluate function that is used in lotusscript to take advantage of the power of formulas also can be used in Java agents or script libraries in the notes client. There is a slight difference though:

Here's how it's used in Lotusscript. An array of strings is returned:
strArray=Evaluate(|@Unique(@DbColumn("":"ReCache"; "":""; "summaries"; 1))|)

In Java you make use of the session object to get the evaluate function. A vector is returned. Note that you replace the pipes (|) with (").
Vector v=session.evaluate("@Unique(@DbColumn('':'ReCache'; '':''; 'summaries'; 1))");

To loop through the vector and use the values as strings, do something like this:
for (int i=0; i<v.size(); i++) {

Read more and see examples of the evaluate function on notessidan.

Technorati tags:
, , ,