August 30, 2007

September G33K

* UPDATE *
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 QuickrTemplates.com. 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:

javaCompilerTarget=1.5

Got this tip from Mikkel Heisterberg on lekkimworld.com.



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()) {
System.out.println(doc.getItemValueString("action"));
}
doc = view.getNextDocument(doc);

}

} catch(Exception e) {
e.printStackTrace();

}
}
}


- 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++) {
System.out.println(v.elementAt(i));
}


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

Technorati tags:
, , ,


July 27, 2007

About mail.box

Sometimes it is desirable to put mail messages directly into the mail box on the server. If the server has one mail box it is called mail.box. But as you might know it is possible to create several mail boxes to increase performance if lots of mail are running through the system. Be cautious here though, 18 mail boxes is not a good alternative but 2, 3 or 4 might really help. Anyway, when telling the server to create several mail boxes the database mail.box will disappear and instead new mail boxes will be created called mail1.box, mail2.box and so on.

Now, if your application wants to create a mail in mail.box based on some form you probably would like to hard code the name of the database, that is mail.box. But what if the server has several mail boxes? No worries, don't change a thing. You still type mail.box and the server/router will put the mail in the mail box which is mostly available at the time.

It might be good to know that this is not supported officially though.

Here's where you change how many mail boxes to use. The command "Tell Router Update Config" should make the changes take effect immediately or you could just wait 5 minutes.



And here's a code strip as an example of how to put mail directly in mail.box.

Dim session As New NotesSession
Dim workspace As New NotesUIWorkspace
Dim db As NotesDatabase
Dim serverName As String
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim rtitemA As NotesRichTextItem
Dim rtitemB As NotesRichTextItem

Set db = session.CurrentDatabase
Set uidoc = workspace.CurrentDocument

serverName = db.Server
Dim mailBoxDb As New NotesDatabase(serverName, "mail.box")
Dim mailDoc As NotesDocument
Set doc = uidoc.Document

Set mailDoc = New NotesDocument(mailBoxDb)
Call mailDoc.AppendItemValue("Form", "Memo")
Call mailDoc.AppendItemValue("From", uidoc.FieldGetText("From"))
Call mailDoc.AppendItemValue("SendFrom", uidoc.FieldGetText("From"))
Call mailDoc.AppendItemValue("Principal", uidoc.FieldGetText("Principal"))
Call mailDoc.AppendItemValue("SendTo", uidoc.FieldGetText("SendTo"))
Call mailDoc.AppendItemValue("Recipients", uidoc.FieldGetText("SendTo"))
Call mailDoc.AppendItemValue("ReplyTo", uidoc.FieldGetText("ReplyTo"))'
Call mailDoc.AppendItemValue("Subject", uidoc.FieldGetText("Subject"))

Set rtitemA = New notesrichtextitem(mailDoc, "Body")
Set rtitemB = doc.GetFirstItem("messageBody")

Call rtitemA.AddNewline(1)
Call rtItemA.AppendRTItem(rtitemB)

Call mailDoc.Save(True, False)



Technorati tags:
, ,


July 09, 2007

Good reading today

Web developer links:

And some other useful and interesting stuff:
Technorati tags:
, ,


July 01, 2007

Ekakans office in SL is getting its first shapes

I have started to build an office for Ekakan in Second Life and well... you have to start somewhere ;-)
Here's what it looks like at this very moment. I/we have great plans, ideas and thoughts for this. Although Ekakan doesn't yet have it's own place in SL, it will soon be for real and I'll let you know when that happens.

The idea is to be visible, to show the company and its competence in yet another medium. Maybe to be able to talk to the consultants the avatar way, read curriculum vitaes (resumes) and hire consultants. There are also plans to offer different types of tips and tricks and to be able to assist in different ways. The place to go to when you need to kill twenty minutes or help with techie questions and issues.

Come to the IBM Sandbox and I will give you the grand tour ;-) (if I'm currently there).


View from outside


Inside the office. Photos of some of the employees on the wall which show short presentations when touched.


There's also a window to lighten up the place and coloured sofas.



Technorati tags:
,


June 30, 2007

LSL-script for a Second Life football

I have been looking into the Linden Script Language (LSL) to be able to do more cool stuff within Second Life.

Here's a small script for a football. The ball can be kicked by just walking against it. Touching it causes the ball to bounce up in the air a couple of feet. You can also talk to it by saying "kick" which causes the ball to move with a certain vector strength and direction. "High kick" makes the ball going forward up in the air.

default {
state_entry () {

llListen (0, "", "","");
// Make sure that Physical is turned on
llSetStatus (1, TRUE);
}

collision_start (integer total_number) {

// Get the vector that points from the kicker to the ball
vector diff = llGetPos() - llDetectedPos(0);

// Force the z coordinate up
diff.z = .1;


// Scale the vector to a fixed length
vector kick_vector = llVecNorm(diff)*5;

// Apply the kick vector to the ball

llApplyImpulse(kick_vector, FALSE);
}

listen (integer channel, string name, key id, string message) {
if (message == "kick") {

// Get the vector that points from the kicker to the ball
vector diff = llGetPos() - llDetectedPos(0);

// Force the z coordinate up
diff.z = .1;

// Scale the vector to a fixed length
vector kick_vector = llVecNorm(diff)*10;


// Apply the kick vector to the ball
llApplyImpulse(kick_vector, FALSE);
}
else if (message == "high kick") {
// Get the vector that points from the kicker to the ball
vector diff = llGetPos() - llDetectedPos(0);


// Set the z-coordinate high up
diff.z =500;


// Scale the vector to a fixed length
vector kick_vector = llVecNorm(diff)*25;

// Apply the kick vector to the ball

llApplyImpulse(kick_vector, FALSE);
}
}

touch_start (integer total_number) {
// Create a manual kick vector where only the z-coordinate has a value separate from zero
vector kick_vector = <0.0,0.0,0.0>;

// Apply the kick vector to the ball
llApplyImpulse(kick_vector, FALSE);
}
}


Copy/type the script into the script editor pane when creating/replacing a new script for an object. Remember you have to be in a place where scripting is allowed to modify it and see the changes in action. Second Sweden allows it and there are many more places.
























Here are a couple of reference pages to get you started:

- This article is good to get you started. I have taken some lines of code from here.
- LSL Portal
- Second Life Tutorials

Technorati tags:
, , , ,


June 14, 2007

My first iGoogle Gadget

*** UPDATE ***
I have updated and improved the Gadget some. It got better looking design and also a new view of the latest content from developerWorks, which is also default. If you added the last one, please update!
*** *** *** *** ***

I was inspired by the iGoogle Gadget that Thomas Adrian made.
You've heard of Google Maps. Now Google Gadgets are getting more popular. And as if that's not enough Google Mapplets are coming as well, which is Google Gadgets that can manipulate a map using the Google Maps API. This is cool!

This is my gadget showing the developerWorks technical library views. Default is Lotus, but you can change that to any of the other views and whether you want to see the summary and how many entries you'd like to see. I have uploaded it to the content directory, where you can get more cool gadgets for your iGoogle.



Technorati tags:
, , ,


June 13, 2007

Domino Designer in Eclipse

If you have tried Eclipse for regular Java programming you know how comfortable it is to work with. As you might know there will be a Domino Designer in Eclipse released sometime in the future and Maureen Leland has posted a couple of screenshots on the new progress on this project. Especially the Java editor is beautiful ;-)



Technorati tags:
, , ,


June 06, 2007

Summary of Lotus Nordic Meeting



Yesterday the Nordic Lotus Meeting was held in Second Life. Thomas "notessidan" Adrian hosted the meeting and although the number of attendees weren't that impressive (approximately 15?) it was in my opinion successful. It was a mix of people from different Nordic countries such as Sweden, Denmark and Norway and with different Lotus skills and experience with Second Life.

The discussions were mainly about Second Life and only brief about Lotus products at this first meeting. Notessidan showed us the stage that he had built for the location and also his Second Life office. We were all impressed and at least I got a bit excited about the possibilities that I can imagine when seing what can be done and when talking to all this people that were there.
We are building relations that seamlessly spans over countries, cultures and different humans with a variety of skillsets.

I can see a small problem with these meetings though that needs some improvement. Although there is an agenda it always turn out to be a slight chaos. People talk at the same time which causes some questions to be mistakenly ignored, someone starts building a big sphere or someone decides to pick up a giant aircraft from their inventory or suddenly someone starts dancing. All this causes some distraction which is completely understandable. Who wouldn't be if it took place in real life?

This is not at all wrong, it is rather amusing and funny actually but when it comes to the point when you would like to have productive and efficient meetings with results something has to be done.

Maybe some sort of guidelines needs to be written for meetings with an intended agenda on how to act to get the results wished for? What do you think?


Some snapshots from the event:


Thomas Adrian, Johan Känngård and me are dancing. Don't remember the other's names.


My first object, a Lotus Notes 8 bench. Do you want it? Contact Nicolas Paravane in SL



Yup, there was beer too...


Technorati tags:
, , ,


June 03, 2007

I love my Weber!

Yesterday I bought a new outdoor grill, a Weber One-Touch Platinum Charcoal Grill, Black. And today I'm a very happy man :-)

When doing the research for which grill I should buy, many people have been into the buy-and-throw philosphy - buy a cheap grill for like 200 SEK (approximately 30 US Dollars) in the spring, throw it when the autumn comes and then buy a new one for the next spring. I am not very fond of that. I think it's better to buy something really good that will last for many years.
And if you take care of it I think it will last, especially if it's a Weber since it won't rust standing outdoors.

Take a look at the product features and technical data here. There is a warranty for 10 years on most parts.







Technorati tags:
, ,


June 02, 2007

Nordic Lotus meeting in Second Life

On tuesday, 5th of June 2007 at 9PM GMT+01 there will be a Nordic Lotus meeting held in Second Life. It is Thomas Adrian, hosting Notessidan.se, who has taken the initiative to this independent event.
Anybody with a great interest in Lotus Notes/Domino and/or other Lotus software are welcome to exchange their thoughts and idéas and to take advantage of each other's knowledge and burning desire to share their competence and perhaps to make new contacts.

The agenda for the first meeting is:

  • Questions for people new to Second Life
  • Tip from everybody on places, activities and what can be done in SL
  • Open discussions on IBM/Lotus software
We will meet in the IBM Sandbox. Take a look at the community event on secondlife.com about this to easier find your way.

If you're new to Second Life or just want to know a little more there are several tutorials:
Please feel free to contact me when you get there if you need any help. My Second Life name is 'Nicolas Paravane' and Thomas Adrian's is 'notessidan Yao'.
See you there :-)

Technorati tags:
, , ,


May 25, 2007

Short summary of Swedish g33k date

Yesterday, May 24th 2007, the first g33k date took off at the premises of Ekakan, who acted as host, with an impressive collection of talented Notes/Domino developers and celebrities present.


It was very successful and I am quite sure everybody got something valuable out of it. Johan Känngård and Joachim Dagerot were keynote speakers and talked about different subjects, mostly in some way connected to the web. Johan Känngård has written a good summary about the event and also put his presentation and examples available for download on his blog. Joachim Dagerot has also posted a blog entry which is a follow-up on a subject that came up yesterday.

Next occassion will probably be after the summer in september or something like that. I guess it depends on who's hosting it and the interest and availability of everybody.

Here's a picture of our talented fellow N/D bloggers/developers and keynote speakers from yesterdays success.


Johan Känngård & Joachim Dagerot


Joachim Dagerot


Technorati tags:
, , ,


May 23, 2007

Flickrvision

I read on Next Generation Internet about Flickrvision. It's a really cool service accesible directly on the website which let's you watch as images are uploaded to Flickr in real time. Take a look at a subwindow below or click on the link for the site.



Technorati tags:
, ,


May 09, 2007

IBM Education Assistant for Lotus Software

Here's a tip if you need another learning resource.

IBM Education Assistant for Lotus Software provides help for Lotus Domino, Lotus Notes, Lotus Expeditor, Lotus Sametime and WebSphere Portal for different versions. The help is divided into text, video and audio.



Technorati tags:
, , , , ,