Friday, November 26, 2010

Lync (and OCS) presence–the hard way!

So assuming that the easy way ( - the easy way is to use UCMA 3.0, see the ‘Microsoft UCMA 3.0\SDK\Core\Sample Applications\QuickStarts\PublishPresence’ sample in the SDK) is not for you for some reason – such as your implementing your own application using a 3rd party SIP stack on a non-windows platform and you don’t want to build a simple web service that does the heavy lifting for you on a windows box..
To get started you should read the dry but informative protocol spec, [MS-PRES]. And you should also review presence basics (that article is OCS, so doesn’t include the new Lync bits like location and pictures, but it’s a good overview). You will also find the Enhanced Presence Schema download handy – this consists of all the schema mentioned in the protocol specs so you can use a tool to create strongly typed objects in your language of choice as well as a help file (for windows) which is a little more digestible than [MS-PRES].

Wednesday, November 24, 2010

Lync Server depends on J# – are you serious? its 2010 you know!

So I just noticed that Lync Server has J# as a pre-req – this fills me with yucky feelings, Am I the only one who feels uncomfortable with a pre-req that doesn’t support the OS we are required to install to and is due to expire support long before the product itself?
I quote a few nuggets of nastiness:
From the redist download page :
    • Supported Operating Systems:Windows Server 2003, Enterprise x64 Edition;Windows Server 2003, Standard x64 Edition;Windows Vista Business 64-bit edition;Windows Vista Enterprise 64-bit edition;Windows Vista Home Basic 64-bit edition;Windows Vista Home Premium 64-bit edition;Windows Vista Ultimate 64-bit edition;Windows XP Professional x64 Edition
From the J# Developer center homepage :“Product Announcement - January 10, 2007: … Visual J# 2.0 Redistributable Second Edition is targeted for release in the second quarter of 2007, with support continuing through to 2017 (5 years mainstream and 5 years extended support) on EN-US locales.”

Monday, November 22, 2010

Do UC what I See?

One of the most exciting things I saw in the Lync launch last week which really got me excited was the ProtoSphere virtual world offering from Proton Media

This is a virtual reality world application that has been in use in the life sciences industry for collaborating on scientific models for quite a while. Just recently they integrated with Microsoft Lync (for outbound audio dialing) and the potential here is amazing.
My long term vision for UC is where remote workers (which I have been for most of my career, and it seems every major corporation is trending towards) are afforded the same level of interaction and collaboration as their office bound counterparts. Within the physical space, Telepresence rooms like the Polycom OTX provide a truly immersive collaboration experience for participants in the rooms, but despite interoperability with Lync – the experience for the remote participants is still a second class citizen, and far from immersive.
The next logical step of all this is to combine immersive Telpresence in the real world with a remote virtual experience – eventually of course everyone will work from home and the physical spaces will go away.
Another embodiment is for the remote worker outside fixed meetings- Microsoft Research has this – see Scott Hanselmans ‘virtual persona trolley’ / Social Proxy :
Get Microsoft Silverlight

Now replace the flat screen with this spherical monitor:
Global Imagination globe screen
Now create the ultimate mobile device like this MIT creation for a true real meets virtual device.

Wednesday, November 17, 2010

Lync developer resources – UPDATED 12/7/2010

Well, today finally arrived, the day we have all been waiting for. Lync and all its bits are now generally available on MSDN and MS downloads for all to get their hands on.
As the OCS developer site is still lagging a little I thought I would post the list of and a quick summary of the API set:

The API’s

Microsoft Unified Communications Managed API 3.0 Software Development Kit – This is the main deal, if you do any real Lync development you need this. The managed API is a significant improvement on the previous 2.0 release for OCS 2007 R2 with levels of abstraction and simplification for contact list management as well as supporting all the new Lync Server goodies such as conference lobby’s. I cant wait to get busy with this in the coming months.
Unified Communications Managed API 3.0 Runtime – Just the runtime to be installed as a pre-req to your UCMA 3.0 application.
Microsoft Lync Server 2010 SDK – For building MSPL scripts and managed sip filters that run inside the Lync server roles (front end or edge usually). Hasn’t changed a lot since OCS or even LCS
Microsoft Lync 2010 SDK [UPDATE – Released 12/1/2010]– The most talked about developer resource that lets you create your own Lync client or just embed bits of it into your own app with a quick drag and drop. Interestingly under the covers its really just a wrapper on the COM API. The COM API is not really documented or available in this version.
Lync Server 2010 Resource Kit Tools [UPDATE – Released 11/18/2010] – Has some useful tools for developers, especially if your doing anything voice related.


Important Development docs

Microsoft Office Protocol Documentation – Its not exactly the most stimulating read but if you need to know what’s going on under the covers, this is the place to go. It has got to qualify as the most technical detail you will find.
Microsoft Lync Server 2010 Protocol Workloads Poster – A neat visio poster of all the call flows for various scenarios.
Unified Communications Enhanced Presence Schemas for Microsoft Lync Server 2010 – Handy if your doing advance presence work.
UC "14" Developer Training Kit [UPDATE – Released 11/18/2010] – If you were not on the TAP and missed the metro training, this is essential viewing for you.

“The Bits” (Full versions are on MSDN subscriber downloads too)

Microsoft Lync Server 2010 Trial (registration required) – The 180 eval, fully functional server you can use to develop against.
Microsoft Lync 2010 Trial (32 Bit) / Microsoft Lync 2010 Trial (64 Bit) – The Lync Client itself.
Microsoft Lync 2010 Attendee - User Level Install / Microsoft Lync 2010 Attendee - Admin Level Install – Not to be confused with the Attendant - this is a trimmed down (free I assume, but I’m no licensing expert) version of the Lync client for attending conferences either anonymously or authenticated. Depending on your application, this could offer some interesting options.

Group Chat

Microsoft Lync Server 2010 Group Chat – You will need this if your doing GC development (you know who you are)
Microsoft Lync 2010 Group Chat – The GCC, I hope its better than it used to be…
Microsoft Lync Server 2010, Group Chat Admin Tool – Use this to manage rooms and users in GC
Microsoft Lync Server 2010 Group Chat SDK- Here for completeness, you know if you need it. I haven’t even looked at it yet.

Related Stuff

Exchange Web Services Managed API – Not strictly Lync, but so closely related, its here.
Outlook 2010: Auxiliary Reference – Also not strictly Lync, but also handy for building client applications.

Wednesday, November 10, 2010

Be Right Back

There are two things about me and presence… –
1.I feel _very_ strongly that it’s a cornerstone of UC (along with User Experience and a single address for a person).
2.I am the worst offender of fake presence. And really I don’t mean to…
The problem is that I want to set my status to away (or BRB) when I get up for a break / lunch whatever, but I am forgetful and I forget to reset it when I get back.
So I built an app that will set me presence to ‘Be Right Back’ when I hit the hot key (shift-caps lock or scroll lock). It then resets my presence when I return (and move the mouse or press any key).
As an aside, I thought it would be a good practice to build this as a real application and go through the now slightly less tedious Windows Platform certification process.
Its setting screen is fully integrated into the Lync UI’s main menu.
And there is not much to this app (yet) :
I’m releasing it here free for personal use, if you have a commercial use for it…. please get in touch.
Also if you have any ideas for improvements / feature requests, let me know that too.
I built this simple app using the Lync SDK – I cant wait for Lync to release next week so that I can share some code samples.
Updated 11/15/2010 : Version 1.0.2 now has a couple of bug fixes and better handling of the screen dimmer (not using the power management API as it only seemed to work on laptop screens). I also added Windows Live messenger status sync, for all states including BRB.

Friday, November 5, 2010

The mystery of the C++ redistributable

Have you ever got a cryptic error like this when you try and run an application : “Activation context generation failed for "C:\Users\administrator.UC\Desktop\DHCPUtil.exe". Dependent Assembly Microsoft.VC90.CRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.30729.4148" could not be found. Please use sxstrace.exe for detailed diagnosis” ?
What that basically says is that the Visual C++ runtime (C++ 2008 SP1 x64 to be precise) was not found on your system. Now there is a whole lot of details out there about side by side configuration and how apps are compiled and how windows searches for the runtime. But basically you just need to know what version you need and where to download the latest version right?
Another point of note is that within each family (2005, 2008, 2010 etc) there have been service packs and updates, each time there is an update Side By Side(winsxs) adds policies in your system to make sure the latest version is always used.
Latest VersionDescriptionDownload link
8.0.50727.4053Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package ATL Security Update
9.0.30729.4148Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package ATL Security Update
10.0.30319.1Microsoft Visual C++ 2010 Redistributable Package (x64)
10.0.30319.1Microsoft Visual C++ 2010 Redistributable Package (x86)

And the answer to ‘how do I know what version I have?’ – well the easiest thing is to look in ‘add/remove programs’ or ‘Programs and Features’. This will tell you which redistributables have been installed.
However If you want to know exactly what’s installed and what sxs is up to go to %windir%\winsxs\manifests\ and search for the policy file relating to the version you are having trouble with. The files are named For example