Yesterday, I made a quick trip up to the IBM Watson Research Facility. I participated in an all day Executive Briefing with a customer as we convinced them that IBM was the right choice for collaboration technologies. But enough about me. This is about Watson.
Wondering What Is Watson? Maybe this video will help.
While I had done briefings in other IBM/Lotus locations, this was my first trip to Watson. As geeky as I am, I was excited to make this trip and see where all the magic of IBM Research happens. One of the things that caught my attention is the 7000+ patents, awarded to IBM in the last 2 years, shown on the walls as you walk into the briefing center. Very impressive.
I was hoping to run into some of the folks that I've met using our internal Facebook/Twitter system (aka Lotus Connections), but it didn't happen. I also didn't get a chance to play Jeopardy against Watson, but that's ok, because judging from the video above, I would've lost anyway. Can't wait to make my next trip up.
Back some moons ago, I used to be part of IBM's services/consulting organization. Global Business Services (GBS) is the global consulting organizatoin within IBM. I started using Enterprise 2.0 software (mainly Lotus Connections) as a consultant for IBM.
It was (and still is) the best way to find knowledge and people when you need them. One of the things that got me hooked was all the integration points that were available. For example, I could access data directly from mail client, instant messaging client, word processor, etc. It didn't matter where I was, the data was always available to me, and in context.
Last week, GBS launched a new version of their Practitioner Portal, which integrates all aspects of social directly into their portal. That way, consultants who are already familiar with the existing portal, now have real-time access to intellectual capital created by IBMers worldwide. This is a great way to encourage adoption, in my opinion. Here's a video GBS put together to advertise their new portal.
(The video reminds me of Chuck for some reason). Enjoy
This Wednesday IBM is hosting a free webcast for those of you still in the verge of the business value of Enterprise 2.0. Jeff Schick, VP of Social Software for IBM will take you through some compelling use cases with significant business results. A live question and answer period will follow the presentation.
Register by clicking on the link below:
Harness a Changing Workforce and Drive Growth with Social Software
As a bonus for all those that register and attend, there's a SPECIAL OFFER where you will receive a discount coupon for these recent books from IBM Press:
Last week I posted about a new plug-in I created for Sametime, the Lotus Connections Notifications Plug-In. The plug-in is basically a feed reader of all the things that your colleagues are working on inside Lotus Connections, but it's a lot easier to use for the big majority of users. And because it brings Lotus Connections to the desktop, it drives adoption.
One of the comments left on my blog asked some technical details on which APIs I used to create the plug-in. I briefly mentioned that I used the Notifications API, but I wanted to expand on that. Thus, warning, the following is very geeky!
When I first started, I looked at the sample plug-ins included with the Sametime SDK, specifically the com.ibm.collaboration.realtime.sample.snippets sample. If you want to learn more about how alerts work, I recommend taking a peek at the sample code provided in that simple plug-in.
I think that the best way to explain this is go through the flow of the plug-in and mention the classes being used:
First, the plug-in is activated during startup because one of its classes implements org.eclipse.ui.IStartup
At that point, the plug-in's Activator gets loaded and a job is created. This job is a custom class that extends org.eclipse.core.runtime.jobs.Job and overrides the run(IProgressMonitor monitor) method. This method runs in a separate thread and is scheduled to run every 60 seconds.
Once the job is triggered, we make a query to Lotus Connections to retrieve this feed: https://connections.acme.com/news/atom/stories/public. This feed returns the same content shown in the Discover tab of the Lotus Connections Homepage.
For each story retrieved, we check to see if it's from one of the user's colleagues. (you can retrieve the user's colleagues by querying https://connections.acme.com/profiles/atom/connections.do?connectionType=colleague&userid=....
If a story is from one of our colleagues, we create a notification using the Sametime Notifications API. To do this, we create an instance of com.ibm.collaboration.realtime.messages.AlertUserMessage. Once instantiated, we set some options, and then call the post() method.
Once the alert has been posted, the framework checks what type of alert it is. In plugin-xml, I've defined that this alert should be 'drawn' by a custom class I created called NewsUpdateWindow.
NewsUpdateWindow is extends com.ibm.rcp.realtime.alerts.ui.DefaultAlertWndow and overrides the buildContents(Composite parent) method.
In this method, we follow the basic RCP UI guidelines to build the UI of the alert.
For my particular alert, I chose to use Sametime's embedded browser: com.ibm.collaboration.realtime.browser.Browser. The reason is that the atom feed returns an HTML version of the news feed. Therefore, the alert looks like what you would see if you were reading the stories directly in Lotus Connections via a regular browser ( and I don't need to do any extra parsing ).
At this point, the alert is shown to the user, the job ends and we wait until the job is triggered again, 60 seconds later.
I've included the source code as part of the plug-in. Thus, as soon as the plug-in becomes available you'll be able to see the nitty gritty of how this plug-in works.
I hope this information is valuable to you. Please let me know if there's anything else you would like to know.
For the last month or so, I've been consumed working on a side project. You see, every once in a while, IBM hosts an internal coding competition which takes place during 24 hours; it's called HackDay. On the last HackDay, one of the best developers for Lotus Connections, Vincent Burckhardt, created a desktop application for Lotus Connections. The application would show an alert periodically showing the activity that your colleagues are doing in Lotus Connections. The alerts would include status updates, uploaded files, recommended blog entries, etc.
There were 2 things that I heard from IBMers that they wanted improve: 1) decrease the memory requirements and 2) enable alert replay (for those cases where you step away). Therefore, I decided to port the application into an Eclipse plugin for Lotus Sametime/Lotus Notes.
Thanks to the Lotus Expeditor framework (which is based on Eclipse), it was actually really simple to get the basis of the application going. Because Lotus Sametime already has a Notifications API and Framework, I decided to build the plugin for that (though it would work on instances of Notes that have Sametime embedded). Once I had the first iteration of the plugin ready, I released it as a private alpha build inside IBM. I had around 12 alpha testers which tested on various platforms/configurations.
I also asked in Twitter for alpha testers to make sure this plugin would work outside of IBM. All of the alpha testers gave me some good feedback, and 8 iterations later we are here today. In all, I've spent about 60 hours creating this plugin (spread over a month).
One issue that I ran into was leveraging Expeditor's Accounts API. I wanted to use that API, but I kept getting NullPointerExceptions when processing an account update. I think the documentation could be improved a bit in this area.
You can view a demo of my plugin here:
Based on the video, are there any additional features you would like to see?
Instructions on how to install the plugin will be available soon as I'm waiting for it to be published in the Lotus Catalog. Stay tuned!