January 23, 2007

General Opening Session from Lotusphere 2007 in Second Life

In Second Life it is possible to watch the general opening session in the IBM Theatre. It's pretty cool. Many people are gathered in front of the big screen to see what Mike Rhodin and all the others are saying.



Technorati tags:
, ,


January 22, 2007

Torture is...

being at home in the snow and cold when your colleagues contact you in the middle of the general opening session all excited. Damn you Emil... and thank you for the photos ;-)

Appearantely Neil Armstrong is the secret guest this year. IBM was showing there presence in Second Life as well during the general session and I guess that Maureen will tell us some news... At least that's the impression one get's when looking at her latest blog post.

Right now I am following the opening general session in two ways, through Lotusphere Live and Flickr. Here's a photo of the general opening session taken by Emil Wessberg, Mandator.



More about Lotusphere 2007 can be found here:



Technorati tags:
, ,


January 15, 2007

More on Second Life

It's addictive!
Thomas put a picture on Notessidan from last night where we're standing next to a bench on an IBM island talking about Notes and other stuff. Later on Alan showed us the Sear's building. Take a look below ->



In Second Life it is possible to buy Linden dollars for real money. Once you've done that it's possible to build your own buildings and other stuff. I have not done that yet but maybe that's the next step to make it even more funny. For example if you're interested in poker there are dozens of islands where you can play poker. I have not tried it myself yet but I'm sure it could be pretty advanced and useful and if you make Linden dollars you can make real dollars out of it.

So far I have spent my time in SL just trying to figure everything out. I have had conversations with people I don't know, people I know of but don't know and a few people I know well. Two days ago me and a good friend of mine, Erik, spent some time there and found a dance floor. In real life I really suck, in second life I rock ;-)
Have a look ->



Technorati tags:
, ,


January 12, 2007

Second Life - a virtual world

I read a posting on Alan Lepofsky's blog about Second Life. Shortly after that another posting on Notessidan by Thomas Adrian. Both of them seem to enjoy it and I have heard many others saying the same thing. It feels like this topic is about to explode with currently 2.5 million residents and counting.

I actually entered the virtual world second life myself two or three month's ago and had quite fun. I started changing my appearance, tried driving a go-cart, flew around and chatted with a lot of nice people. It is really funny to be there. But you need a computer with som power as in grapics and RAM. Mine can't quite handle it and it takes away some of the fun with it.

I was just in one of IBM's islands, following Thomas' tip. Unfortunately there was almost no one there. Probably because most residents in these islands are from US and they are either working or sleeping when I'm there. I'll keep trying!

Anyway my name in Second Life is Nicolas Paravane and here is a picture of me in the air next to IBM Theatre:



In the mid of november I attended the IBM Software Day in Kista, Sweden. One of many speakers was Torbjörn Johansson. He is swedish but works in New York (I think) close to the management team with strategic issues. He is currently working as the technical assistant for Irving Wladawsky-Berger who is manager for technical strategy and innovation at IBM. It was very interesting listening to him and one of many things he talked about was second life. IBM is as you know very active in this world. He compared second life today with what Internet was in 1994. That says quite a lot about how at least IBM sees the importance of this area.

Maybe I'll see you there!

Technorati tags:
, ,


January 10, 2007

Simple AJAX/SOAP application

I wrote a simple application that builds an xml-structure, packages it as a SOAP-message and sends it to a web service in another domain. The web service in the other domain handles the response and sends back a SOAP-message that is received, parsed and printed to output. The web service in the other domain in this example is made and hosted by someone else. The client-side code all resides within a Lotus Notes Form.
I apologize for the bad formatting of the code below which makes it more difficult to read. I have to blame the blog tool for this. It's all XML and Javascript.

Here is the example xml-code packaged as a SOAP-message to send to the remote web service:

<soap:envelope xsi="'http://www.w3.org/2001/XMLSchema-instance'" xsd="'http://www.w3.org/2001/XMLSchema'" soap="'http://schemas.xmlsoap.org/soap/envelope/'">
<soap:body>
<loginnfo xmlns="'http://remotehost/'">
<signatur>login</signatur>
<password>password</password>
<regnr>1234</regnr>
</loginnfo>
</soap:body>
</soap:envelope>

Here is the the SOAP-message received from the remote server:

<soap:envelope xsi="http://www.w3.org/2001/XMLSchema-instance" xsd="http://www.w3.org/2001/XMLSchema" soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:body>
<responsetag xmlns="remote_server">
<responsetagresult>This is the response from the web service</responsetagresult>
</responsetag>
</soap:body>
</soap:envelope>


AJAX-code used to send and receive the SOAP-messages:

var xmlhttp
var url;

/* Create xml http request object */
function createXMLHTTPRequest() {
try {
xmlhttp = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
xmlhttp = false;
}
}
}
if (!xmlhttp)
alert("Error initializing XMLHttpRequest!");
}

/* LoadXMLDoc function sets and loads parameters and functions for AJAX calls to the remote server using the POST request method. LOADXMLDoc is called by the send button in the form. */
function loadXMLDoc() {
// Create XML HTTP Request
createXMLHTTPRequest();

// Build the url using field values
buildURL();

// Build xml-structure
var xml = createXMLData();

// Set function to wait for response
xmlhttp.onreadystatechange=xmlhttpChange;

// Open connection with POST
xmlhttp.open('POST', url, true);

// Set request headers for message to send. Depends on the web service
xmlhttp.setRequestHeader('Man', 'POST remoteAddress HTTP/1.1');
xmlhttp.setRequestHeader('Content-Type', 'text/xml');
xmlhttp.setRequestHeader('Content-Length', xml.length);
xmlhttp.setRequestHeader('SOAPAction', 'dependsOnTheWebService');

// Send request using POST
xmlhttp.send(xml);
}

/* Build the URL to the remote server */
function buildURL() {
// Get field values
var sAddress = document.getElementById('sendAddress').value;

url = sAddress;
}

/* xmlhttpChange function listens for a response from the remote server. The response can be either text or xml. If xml is received as below the tags are being parsed and presented as needed. */
function xmlhttpChange() {
// if xmlhttp shows 'loaded'
if (xmlhttp.readyState==4) {
// if 'OK'
if (xmlhttp.status==200) {
// Code block for receving text via HTTP, looking at it and printing to output.
/*
var response = xmlhttp.responseText;
document.getElementById('updateWithResponse').innerHTML = response;
*/
// Code block for receiving XML code via HTTP, grabbing it and printing to output.
var response = xmlhttp.responseXML;
var x = response.getElementsByTagName('responsetagresult');

for (var i=0; i<x.length; i++) {
var result = x[i].childNodes[0].nodeValue;
if (i==0) {
document.getElementById('updateWithResponse').innerHTML = "<b>- - - - - Svar från <span style='color: #FF0000'>" + document.getElementById('host').value + "</span> - - - - - -</b><br><br>";
document.getElementById('updateWithResponse').innerHTML = document.getElementById('updateWithResponse').innerHTML + "responsetagresult: " + result + "<br>";
}
else {
document.getElementById('updateWithResponse').innerHTML = document.getElementById('updateWithResponse').innerHTML + "responsetagresult: " + result + "<br>";
}
}
document.getElementById('updateWithResponse').innerHTML = document.getElementById('updateWithResponse').innerHTML + "<br>";
}
else if (xmlhttp.status==404) alert("URL doesn't exist!")
else alert("Problem connecting to server. Status is "+xmlhttp.status)
}
}

function createXMLData() {
var xmlStructure = document.getElementById('XMLExampleSendCode').value;
return xmlStructure;
}

Currently this doesn't work with Firefox due to some security aspects. That has to do with the fact that it is done over separate domains. I don't know if it is considered as a bug but I do hope so. The error message returned from Firefox is "Uncaught exception: Permission denied to call method XMLHttpRequest.open". However using IE6 works fine.

Learn more at W3Schools Online Web Tutorials. They offer excellent tutorials that's great as either reference material or as getting started guides. Here's the AJAX tutorial and the SOAP tutorial. I also recommend an article series published at IBM DeveloperWorks by Brett McLaughlin, auditor and editor at O'Reilly Media Inc. about AJAX called Mastering AJAX.

Technorati tags:
, , , ,


January 04, 2007

Trying NOMAD

I have heard about Nomad for some time now, ever since LotusPhere 2006 in Orlando in fact. Nomad is the feature that makes it possible to bring Lotus Notes on a USB stick where ever you go. I was wondering how this would work so now I have finally tried it and it works GREAT!

I read a blogpost on Chris Whisonant's blog where he has made a review of NOMAD that comes with the Lotus Notes & Domino 7.0.2 release.

Chris and Susan Bulloch both recommends that this is only to be used with the Single Notes client install, not the full client. I had at the time testing this only access to the full client so that's what I was using.

A short summary of steps to install NOMAD on an USB stick:

  • Extract C94QIEN.exe or C94QAEN.exe to some folder. The purpose is to unpack all files and get to the setup.exe file.
  • Open a command prompt and get into the directory of the extracted files (the location of setup.exe). I don't know about this, but if you have a CDROM ready to be installed with setup.exe you should be able to put yourself into that directory aswell.
  • Put the USB stick into the computer and note the drive letter (ex. E:)
  • Type setup /a /v"NOMAD=1 TARGETDIR=F:\ /qb+" in the command prompt
  • Use autostart.exe to run Lotus Notes
If you're using the full client package doing this (on a simple install, no roaming) you will get access to both working admin and designer clients. Then just simply create different location documents for different Domino environments. You could for example point out your ID in the location document (advanced tab) for each domino environment and have your different ID's stored on the USB stick. Suddenly domino developers and administrators are no longer bound to specific computers!

Chris suggested as optional to remove some files to release memory, which I did. Remember however that if you are doing this with the full client you need some templates to be able to run the different clients. I had problems with the administration client. Some templates needed (but probably not all) were events4.ntf, domadmin.ntf and log.ntf. The admin client uses these templates on installation to create the corresponding nsf's. So a better thing to do is to remove the templates after installation.

To use admin and designer using only the single client installation, do as Chris suggests, follow Declan Lynch's advice.

Great feature! Could this be a competitor to the roaming functionality? (since this in my opinion has had some functionality problems and probably was released to soon).


Technorati tags:
, , , ,