Sametime Awareness Simulator

I’ve been corresponding with Andy Higgins a bit about the Sametime Awareness Simulator (SAS) I wrote some years back and which is still getting surprisingly many downloads. SAS is written in Java and Andy was unable to make it run on his Oracle JVM but after debugging a bit I found out that a 32 bit JVM was required. Unfortunately Andy was still unable to make it work so he turned to wiser people than me and contacted Carl Tyler who helped him. Apparently there was an issue with the class format so to make it work he had to use an older JVM. I was able to make it work with a 32 bit version of Java 5 and Andy used the JVM supplied with the Notes client.

As SAS is written using the Eclipse runtime Carl could supply a command line to start SAS using an alternate JVM:

sas -clean -vm <path to JVM>

Andy used

sas -clean -vm N:notesjvmbinjava

(where n:notes is your notes program directory)

Hope it helps.

IBM SmartCloud – credit where credit is due

On Friday I blogged about the changes that occured on IBM SmartCloud over the weekend (SmartCloud getting an overhaul this weekend with changes that is looooong overdue) and how I was waiting for IBM to add proper Sametime support in SmartCloud meaning Sametime Proxy, Sametime webchat and Sametime app support. As it turns out these capabilities are available just not visible in the dashboard or otherwise readily obvious. So I will give IBM credit for adding it but why didn’t I know?! Anyways – props to IBM.

So the Sametime webchat is available at webchat.na.collabserv.com/stwebclient/iphone_index.jsp and of course it also means that the Sametime Proxy is available. Whether we may use it for actual, 3rd party applications, I will need to find out. There are *still* some really annoying restrictions when it comes to the Sametime entitlement for Notes users (see this tweet). Still waiting for Scott Souder to come back on that one.

Another cool thing (which is an off-spring of the Sametime Proxy support) is that the iOS app works and Sametime availability works on my iPhone and iPad. And even better is that there is a pre-set community configuration for IBM SmartCloud so it’s real easy to configure. Pretty sweet.

Notes 8.5.3 and Sametime Web API woes

For one of our products we are using the Sametime Web API which is a great way to Sametime enable applications outside the Notes client. Basically it uses the web container running within Notes Standard to provide a HTTP API for Sametime awareness. Great. We had an issue however after upgrading from Notes 8.5.2 to Notes 8.5.3 where Sametime awarenss stopped working but thanks to the design partner program and the help of Khuan Hoe Kong from IBM we’re now back in the business. As this issue may bite others I thought I would post it here.

Our problem was that we were using the “mystatus” and “getShortStatus” API calls to get awareness status that is we were using local calls like http://localhost:59449/stwebapi/mystatus/ and http://localhost:59449/stwebapi/getShortStatus. These calls returned JSON we could use to get awareness status and as previously mentioned these calls worked fine in Notes 8.5.2 but after going to Notes 8.5.3 (and hence a newer version of the embedded Sametime client) they stopped working. Apparently these calls were considered a security risk so there were blocked and needed to be unblocked in order to work. Below is the response from IBM.

For security reasons, many of the WEBApi functions are disabled by default, including the mentioned two. To enable the function, add a preference to the plugin_customization.ini in the following format:

com.ibm.collaboration.realtime.webapi.<function>Enabled=true

For example, to enable the getstatusshort, you would add this preference:

com.ibm.collaboration.realtime.webapi
   .getstatusshortEnabled=true

To enabled all the Web API functions you can use the global override:

com.ibm.collaboration.realtime.webapi/
   enableAllWebApisOverride=true

The details of this change may be found in ST8.5.1 SDK.

While the above solution works it requires the customer to configure the client and hence wont work for us. The funny thing is that while the getstatusshort method is blocked for “security reasons” the getstatus method works just fine. Only difference is that the getstatus method returns more info. Makes no sense.

My main reason for considering this a bad approach is that I get an HTTP code 200 back but the response is empty/invalid. That seems wrong. A better REST solution would be to return a 403 Forbidden with an explanation why. What would in my mind have been the correct solution. Hope that can be incorporated into a future release.

But it works now so I will go back under my rock.

Microsoft’s chat service, Lync, going mobile as well

Just on the heels of the Lotus Sametime for iOS / Android release comes the release of Microsoft Lync for iPad and iPhone that is a chat client for Microsofts on-premises and cloud based chat solution. It will be interesting to see if Microsoft too is using push-notifications for out-of-app chat notification to save on battery. One of the nice things about the announcement is to see how Microsoft chose to have their mobile solution work with their cloud based offering right away – something Lotus has failed to do with Sametime on LotusLive (still looking for an announcement as to when LotusLive will support the iOS apps). More on the apps at winsupersite.com.

Stommunity – now released as open source on OpenNTF.org

As you might recall we at IntraVision some time back quit running Lotus Sametime on-premises and switched to LotusLive. This wasn’t without issues and I also blogged about the apparent lack of public groups in my “Using LotusLive for Sametime – 2 months in” post a couple of months ago. After experiencing this issue I talked to Erik Vos from RealConnections in the Netherlands at NLLUG. Erik was also having the same problem for his SaaS customers so we worked together to develop a proof-of-concept Notes sidebar plugin called Stommunity to work around the issue. The name Stommunity plays on the words Sametime (ST) and (LotusLive) Community.

So what does the plugin do?

The plugin synchronizes your LotusLive communities with your Lotus Sametime client and creates private groups based on the LotusLive communities you are a member of (and that you select for synchronization). This mimics the missing public group feature of LotusLive Sametime. The below screenshot shows a Sametime client with 4 communities synchronized from LotusLive.

So how does the plugin work?

The plugin sits as a sidebar plugin in your Lotus Notes client and monitors your Sametime client for when it logs into LotusLive Sametime. Once a login is detected it reads the communities the active user is a member of using the LotusLive REST API and shows a list of the communities. The user may then select the communities to synchronize with Sametime. The below screenshot shows the Stommunity plugin waiting for the user to log into Sametime.

Once logged in the communities is read from LotusLive. In the below screenshot you can see that the user is a member of a couple of communities but only one is synchronized with Sametime.

After selecting an additional community and clicking Apply the community is synchronized to Sametime and a private group is created. The below screenshot shows the Sametime client after synchronizing the BlueExtend community with the Sametime client.

So why only a proof-of-concept and not a ready-to-roll plugin?

While developing the plugin we discussed the license implications of a plugin like this. When you sign up for LotusLive Engage you receive a Sametime Entry license which means you may not use the Sametime API which again means that a plugin like this cannot work (from a licensing standpoint). That alone made the project a dead-end and after working a bit with IBM on this it became clear that changing the licensing agreement wasn’t in the books. Due to this we are releasing the plugin as a proof-of-concept with open source on OpenNTF hoping that it may inspire someone.

Looking at the plugin as it is now I see a lot of potential. Of course the selection of communities needs to be pushed into the preferences but as a LotusLive customer it would be really cool to have. I imagine an auto-sync option being added as well as an option to just sync all and change (or remove) the prefix I automatically add now (“LL Community:”). Think of having a policy option to automatically make certain, company wide, communities be synchronized to all users (or a set of users). Maybe even controlled from within LotusLive. Now that would be cool and bridge the gap between the products. One could even argue that a plugin like this should be a standard component that should come bundled with LotusLive Notes.

Anyways – I hope it may inspire the LotusLive teams.

The Stommunity plugin may be found on OpenNTF.org and the code may be downloaded from the SVN repository. See below for links to each.

Links and resources

March Lotus Technical Information and Education (LTIE) community meeting

If you’re interested in plugin development and the recently published RedWiki on plugin development for Lotus Notes, Sametime and Symphony (easy url is http://bit.ly/pluginredwiki) be sure to join us for the March March Lotus Technical Information and Education (LTIE) community meeting. The conference call will be on 22 March at 10am Central Time (10am Eastern, 3pm CET).

For more info head over to the Lotus Technical Information and Education wiki on Lotus Greenhouse (look under “When we meet” at the bottom of the page).

Using LotusLive for Sametime – 2 months in

I previously wrote about how we shutdown our Sametime servers and moved to LotusLive for Sametime (“Why we shutdown our Sametime servers“). About 2 months after making the switch I thought it was a good time to sum to the experience and whether it’s a move we’re happy with.

There’s nothing to be said about performance or uptime which has been flawless. Users are happily chatting away and the worries that some had about being available for customer chat in off hours (because we are now in the same community as customers and partners) hasn’t been a problem. Whether it’s really not a problem or whether customers and partners haven’t found us to LotusLive is unclear. Only thing I’ve heard from users is that it’s a real pain no longer having public groups to help them maintain their buddylist. Previously many used public groups such as “Sales” or “Developers” to automatically maintain their buddylist but the concept of public, shared, groups are not available in LotusLive. That’s a real shame. Same goes for LotusLive meetings which has taken over from Sametime meetings without any issues at all.

All in all I haven’t heard anything from users that would make us want to go back to running our own Sametime environment.

Now from the technical side of fence I find the lack of groups really annoying. I also find the fact that file transfer isn’t allowed by policy annoying and frustrating. Using Sametime as a quick way to move a file between colleagues was really nice and having to resort to drives or e-mail is so 1990’s… As a LotusLive (Engage) customer

I’m also finding that lack of tools for automated user management (creation, modify, deletion) irritating and frustrating. I’ve heard about a LDAP sync tool or using TDI but not something I have found solid information on. The tools might be there and but they’re hardly easy to find or come by from my point of view. The result is that we have to manually make sure that users update their profile with current information which is time consuming and far from ideal.

In conclusion however…

Despite all this I still find that the move was a good one and I’m hoping that some of the above can be solved in the near future. I have a list of LotusLive questions lined up for Lotusphere 2011 so if you’re in the developer lab and know something about LotusLive I want to talk to you.

Why we shut down our Sametime servers

I have been getting shocked looks the last couple of weeks when I told customers that we shut down our Sametime servers as part of the move to our new offices. Why would we do such a thing? Well it’s not like we didn’t utilize Sametime heavily in our day to day work and it’s not like we haven’t touted the benefits of Sametime far and wide.

So why did we do this? Well it was a simple calculation of hours spent on maintaining our own environment vs. the benefits of having our own environment.

After installing Sametime 8.5.1 internally and getting it to run we realized that it didn’t make any sense for us, a 25 person company, to operate our own Sametime environment. A community server maybe but then what about meetings? (and yes we know about “Sametime classic”) It made sense from a training and test perspective but that’s about it and as we don’t mess with the production system for testing purposes we needed multiple systems. So it was actually an easy decision. So as of 3 weeks aro we drew a line in the sand and shut down all the Sametime related servers (all 5 of them).

Instead of running our own Sametime environment we’re now mixing it up by combining on-premise and in-cloud services by signing up for LotusLive Engage. We’ve registered all employees with our company account and we’re now using Sametime as part of LotusLive. As an added benefit we also get access to communities, activities and meetings as part of LotusLive and it’s great. We’re loving it.

Making the switch from on-premise to in-cloud hasn’t been without issues and questions that needed to be addressed. Some of what we’ve been discussing internally has been

  • what do we do now when there are no central groups for departments within the company?
  • what password do I use?
  • what does it mean to be part of a bigger infrastructure such as LotusLive?
  • what does it mean to be a network contact?
  • who can I contact on Sametime in LotusLive?
  • how do I control my visibility within the greater LotusLive network?

While some of these questions have easy answers some of them also highlight key weaknesses. For instance when moving from on-premise Sametime to in-cloud Sametime you loose public groups – there’s no way of adding all from Sales to my buddy list. You loose privacy controls in Sametime (who can see me online when). You loose the ability to see Sametime awareness in Lotus Notes applications as you’re known by your e-mail address in LotusLive and not your Notes qualified name.

Some of these points can be worked around and some can be addressed by training but some are more serious and needs to be addressed. The lack of awareness in Notes applications is severely limiting and frustrating – I hope something will be done about this. As to the groups thing I’m working with IBM and a Dutch business partner on addressing this using plugin technology.

Overall however we’re happy with the move and although there has been bumps along the way our server room is a lot quieter and we’re drawing fewer watts. As of now we’re one happy on-premise/in-cloud customer and we’re still chatting away in Sametime.

See it wasn’t as bad as one could have thought… 🙂

Why I’m not using the Lotus Expeditor Toolkit

Every time I get questions on developing plugins for the Lotus Notes 8 platform I mention that I really can’t comment too much on Lotus Expeditor Toolkit installation and usage questions. The reason is that I do not use the toolkit when developing for Lotus Notes. Since I get the question so much I thought I would take it to the blog as well.

The main reason I started developing for Lotus Notes without the Lotus Expeditor Toolkit was due to two reasons:

  1. Because I kept receiving new betas of the Lotus Notes client from IBM Lotus and because XPD toolkit wouldn’t work with these betas
  2. I wanted to use newer Eclipse versions than what the XPD toolkit supported

It’s not that I don’t find the toolkit valuable but for the work I do it isn’t a requirement.

I understand why you might want to use Lotus Expeditor Toolkit as it may be considered easier (if you’re not so Eclispe savy), because you have to! or because you need to switch target platform often (Notes -> Symphony -> Sametime).

Policy control over business card retrieval settings and retrieval order

Disclaimer: The following is from the release notes of Notes 8.5.2 so I don’t take credit for writing this. Lotus Notes 8.5.2 is in beta and there are no guarantees that the features described here will be in the final product that IBM ships.

You can access a person’s business card to find out more about the person and retrieve their contact information. The following products can potentially provide the data that is displayed in the business card:

  • Lotus Connections
  • Lotus Notes
  • Lotus Sametime

If you have more than two of these products installed and enabled, you might want to specify which product should serve as the primary source of the business card data or you might want to prevent one of the products from contributing to the business card altogether. This is not a required task.

To prioritize the source of the business card data, complete the following steps:

  1. Find the plugin_customization.ini file in the following directory: <Notes>/framework/rcp
  2. Open the plugin_customization.ini file in a text editor
  3. Do one of the following:
    • To prevent one of the products from being the source of the business card data, add the following property to the file:
      com.ibm.rcp.bizcard/disable.content.for.<provider_name>=true
      where <provider_name> is one of the following values:

      • Lotus Connections: profiles
      • Lotus Notes: NotesContacts
      • Lotus Sametime: com.ibm.lconn.client.bizcard.livename
    • To change the order of products from which to retrieve the business card data, add a com.ibm.rcp.bizcard/change.priority.for.<provider_name>=<priority> property for each of the supported products where is one of the following values:
      • Lotus Connections: profiles
      • Lotus Notes: NotesContacts
      • Lotus Sametime: com.ibm.lconn.client.bizcard.livename
        and <priority> is a relevant alphabetic character. Use letters that come later in the alphabet to specify higher priority products and letters that come earlier in the alphabet to specify products with a lower priority. For example, a priority of A is lower than a priority of B.

      By default, the business card is populated with data from the products in the following order:

      • Lotus Connections
      • Lotus Sametime
      • Lotus Notes

      You can change the order and have the business card retrieve data from Notes first, then Lotus Connections, then Sametime, for example:

      com.ibm.rcp.bizcard/change.priority.for.NotesContacts=G
      com.ibm.rcp.bizcard/change.priority.for.profiles=E
      com.ibm.rcp.bizcard/change.priority.for.com.ibm
           .lconn.client.bizcard.livename=C
      
  4. Save the changes to the file.
  5. Restart Notes.