One thing that's interested me with the whole idea of 'Presence' is what's the etiquette for your presence status? What's the norm for talking to somebody when they're on busy/available etc?
I can't help thinking that a lot of people do not use the presence/IM system in a productive way, instead they see it as another hinderance much like Email. I.e. it gets in the way of 'real' work. You can see these people as they, by default, every day, all day, have their presence set on 'Busy'.
Busy? Too busy for what? Too busy to talk to your fellow work colleagues even though that's part of your every day working life?
It seems to me people that do this are simply not aware of the working capabilities of a presence system or in fact possibly do not understand it. What's more, if somebody I deal with every day is always and by default marked as 'Busy' I pretty much end up completely ignoring the busy marker, therefore completely negating the point of it.
So this has led me to wonder about the etiquette of presence.
I thought for a start, I'd look at how I use mine and then see if we I couldn't work back from there. Firstly, I'd like to add that I'm a very big fan of immediate communication - I have a passionate hate of Email - I find it can become a big part of my working day just managing the amount of email I get and what's more a large amount goes unanswered. A large amount that could have quite easily been dealt with in a very short IM conversation.
So, let's look at states:
1. Available
I'm here, I'm doing stuff, but I'm available to chat. It doesn't mean I have nothing to do. This is my default state unless I'm with somebody or particularly focussing on something.
If somebody IMs me, I feel I can not respond to the IM immediately and the person sending the IM will not go off on one. It's not the same as somebody talking to you and completely blanking you for instance.
I'm available on the phone too.
2. Busy
I'm here, but I'm concentrating on something. I may choose to respond to your IM, but I may not. Don't take it personally. I will get back to you, and you may want to email me instead. I could be with somebody for example. I may be available on the phone, but you may get my VM.
3. In meeting
Obvious. I'm in a meeting. Try IM'ing me, I may be able to respond as a lot of my meetings involve client demos that are not particularly relevant to me during the whole session. If I don't respond, don't take it personally. I doubt you'll be able to get me on the phone, you'll more than likely get my VM.
4. Do not disturb.
I'm under pressure to achieve something/deliver something. Do not IM me, I'll not respond. Email me and I'll get back to you - mark it as urgent if required. My team members, or people 'important' to me are set to be able to IM me when on do not disturb.
5. Away
I'm not at my desk, I'm in an unscheduled meeting (loo stop or gone for a coffee). Try IM'ing me, I'll respond when I'm back at my desk. Likely to be available on the mobile.
Two points I'd like to qualify on the above. My status often switches to inactive - I.e. Available but inactive, or busy & inactive. This is often because I'm using my laptop Mac based apps, rather than my windows session. So windows thinks I'm inactive whereas in fact I'm at my laptop just not working in Windows. An annoyance that I'm solving currently with some funkery & XML scripting.
Second point is about 'In a meeting'. The 'In a meeting' status is generally taken from your Outlook diary. Now, a problem for this is that if, like me, you need some form of Time Recording (for billable work) then I tend to use Outlook for this recording. This results in a constant state of 'In a meeting'. In addition to this, if I'm at a client's site I may be actually available but my automatic status still shows as 'In a meeting'.
The presence & IM tools are there to help you be more productive and to control how people can talk and interact with you. That's if you use the states properly. If you just blindly set them to busy or away - or even worse just don't sign in - you're not getting the ability to manage all those conversations with your work colleagues.
It's a tool, in my opinion a bit of education on its use could go a long way.
You can also apply notes to your presence by the way - sometimes useful. It will show your out of office status for example, or you can have your status set to busy and your note saying 'Please email me if you need anything'.
It's an interesting area and it's massively easy to see who buys in to the idea of presence, IM and the whole UC thing compared to people who just don't quite get it. Funny thing is I remember exactly the same conversations when email first started to get popular in the early/mid 90s. What do I need it for??? Why don't people just call me?
Personally I find IM a great way to deal with those one of quick conversations. I also accept that what's important to me right now may not be that important to the person I'm talking to so if they choose not to respond immediately I don't go off in a huff.
It's also a good social way to keep up to speed on things - especially if like me you're away from the office and your colleagues for long periods of time.
In conclusion I would suggest people think about how they manage their presence status, what message they want to send out and also how they want people to interact with them. It's a massively powerful tool, and yet one that I think is currently misunderstood.
Tuesday, 1 July 2008
Thursday, 19 June 2008
Example RegEX Strings for OCS
Ok, I've been asked to provide some example RegEx seach/replace strings to get started on phone number normalisation within OCS. I've also promised forthcoming articles on integrating with Cisco CallManager & CUPS for Remote Call Control and for Enterprise Voice.
They're coming, honest. I've been busy. Or something.
Firstly, this is a good calculator for testing your expressions - remember to set it on 'Replace' for the operation.
Anyway, some example RegEx strings for you. Firstly, remember the format is First Line Search String, Second line replacement string. Click on the display to get a better view of this s/shot.

Let's take a few and have a look.
4 Digit Extensions
This is quite a common one - a 4 digit extension that needs converting to a full E.164. You need to know your extension ranges (I.e. 8000-8099 for example, or 4100-4199 as another example).
So, let's look at the search criteria.
^(80\d{2})$
So, we're matching on 80** effectively, I.e. 80 and two other digits, that could be anything. So 8001 would match, 8101 would not.
The replacement string is +44163556$1. This will prefix +44163556 to our number giving +4416355680xx where xx are the last two digits that meet the search string detailed earlier.
Now, that's quite a simplistic one, and just works.
Let's look at a more complex one - what about numbers with spacing, say an international one like 001 292 292 2954?
Firstly, I'd like to make a point about the spaces. We've had numerous discussions with Microsoft with regards to whether you need to include the spaces in the search criteria. The initial understanding was that you do not. In fact, if you use the route helper tool (available in the Office Resource Kit) you'll see it never, ever, accounts for spaces in numbers.
From personal and corporate experience we've found this NOT to work when normalising from the AD through to the Address Book Service - you simply have to account for spaces within your RegEx expression.
To be clear - these two numbers are NOT the same:
001 292 292 2954
0012922922954
So, let's look at the search pattern for the above number scheme:
^00(\d)(\s)(\d{3})(\s)(\d{3})(\s)(\d+)
Looks quite complex?
^00(\d) )(\s) - this searches for a three digit number starting with 00. In normal wildcard terms this is searching for 00*. Ths \s is a whitespace character, so we're serching for a 3 digit string with a following space...So again in normal wildcard display '00* '.
(\d{3}))\s) - searches for any three digits with a trailing space - so '*** '
(\d{3})(\s) - same as above, searches for any three digits with a trailing space
(\d+) - any number of remaining digits
So, as you can see, the search string builds up. Use the calculator detailed above to test and evaulate them - it's not as hard as it looks!
Now, let's look at the replacement string.
+$1$3$5$7
Now, the 1, 3, 5 & 7 refer to the string classes as specified in the search string. Let's break down
(1)(2)(3)(4)(5)(6)(7)
001_292_292_2954
(1) = 1 (The RegEx expression removes the leading 00)
(2) = First space
(3) = 292
(4) = Second space
(5) = 292
(6) = Third space
(7) = 2954 (Remaining characters)
So, again, let's look at the replacement string.
+$1$3$5$7
A bit clearer now? You're building:
+12922922954
...and you now have the full E.164 number.
It takes a little perseverence with your first evaluation of the numbers however it's pretty easier when you have a good calculator to hand.
Good luck.
They're coming, honest. I've been busy. Or something.
Firstly, this is a good calculator for testing your expressions - remember to set it on 'Replace' for the operation.
Anyway, some example RegEx strings for you. Firstly, remember the format is First Line Search String, Second line replacement string. Click on the display to get a better view of this s/shot.

Let's take a few and have a look.
4 Digit Extensions
This is quite a common one - a 4 digit extension that needs converting to a full E.164. You need to know your extension ranges (I.e. 8000-8099 for example, or 4100-4199 as another example).
So, let's look at the search criteria.
^(80\d{2})$
So, we're matching on 80** effectively, I.e. 80 and two other digits, that could be anything. So 8001 would match, 8101 would not.
The replacement string is +44163556$1. This will prefix +44163556 to our number giving +4416355680xx where xx are the last two digits that meet the search string detailed earlier.
Now, that's quite a simplistic one, and just works.
Let's look at a more complex one - what about numbers with spacing, say an international one like 001 292 292 2954?
Firstly, I'd like to make a point about the spaces. We've had numerous discussions with Microsoft with regards to whether you need to include the spaces in the search criteria. The initial understanding was that you do not. In fact, if you use the route helper tool (available in the Office Resource Kit) you'll see it never, ever, accounts for spaces in numbers.
From personal and corporate experience we've found this NOT to work when normalising from the AD through to the Address Book Service - you simply have to account for spaces within your RegEx expression.
To be clear - these two numbers are NOT the same:
001 292 292 2954
0012922922954
So, let's look at the search pattern for the above number scheme:
^00(\d)(\s)(\d{3})(\s)(\d{3})(\s)(\d+)
Looks quite complex?
^00(\d) )(\s) - this searches for a three digit number starting with 00. In normal wildcard terms this is searching for 00*. Ths \s is a whitespace character, so we're serching for a 3 digit string with a following space...So again in normal wildcard display '00* '.
(\d{3}))\s) - searches for any three digits with a trailing space - so '*** '
(\d{3})(\s) - same as above, searches for any three digits with a trailing space
(\d+) - any number of remaining digits
So, as you can see, the search string builds up. Use the calculator detailed above to test and evaulate them - it's not as hard as it looks!
Now, let's look at the replacement string.
+$1$3$5$7
Now, the 1, 3, 5 & 7 refer to the string classes as specified in the search string. Let's break down
(1)(2)(3)(4)(5)(6)(7)
001_292_292_2954
(1) = 1 (The RegEx expression removes the leading 00)
(2) = First space
(3) = 292
(4) = Second space
(5) = 292
(6) = Third space
(7) = 2954 (Remaining characters)
So, again, let's look at the replacement string.
+$1$3$5$7
A bit clearer now? You're building:
+12922922954
...and you now have the full E.164 number.
It takes a little perseverence with your first evaluation of the numbers however it's pretty easier when you have a good calculator to hand.
Good luck.
Thursday, 12 June 2008
Office Communication Server & Telephone Numbers
One area of voice integration with OCS that I get asked about is that of number normalisation - even though typically the questioner does not actually realise that's what they're asking. The normal question I get is
'Why doesn't my Communicator client have any numbers for anybody?'

I.e you right click on somebody there is no number available for you to call.
Well, there is a big reason for this, and it's an important one - one that seems to be causing an awful lot of confusion out there for one reason or another, whether it's phone numbers not appearing or not being able to actually make calls.
This big reason is that OCS only works with E.164 numbering. There's an article here on Wikipedia about it - but I'm sure if you're reading this you'll actually know what E.164 is.
This is an example of an E.164 number compared to a 'normal' number: +44 870 60 10 100 - normalised is 08706010100.
The other thing to consider is that OCS only considers a number to be an E.164 if it starts with a '+'.....
Now, I want to stress this, you may think you've come up with various funky ways to ignore the E.164 requirements by putting a plus in front of your AD numbers for example, or by doing number manipulations at the gateway etc. etc. however I cannot stress enough - just don't do it. The whole of the OCS product set is designed to work with E.164 - stick with it, and deal with the E.164 at the edge - I.e. interface to phones - in another article... I.e. I'll show you how to do it in a standardised way that makes interoperability relatively easy.
So, what am I covering in this particular piece? I want to show you how OCS interprets your telephone numbers from Active Directory and how you can get them to show within your communicator client. I'm not at this point covering voice integration for Remote Call Control or for Enterprise Voice - we'll get to that.
The first thing to get clear is that OCS does not read telephony information directly from the Active Directory with every query - this would place too large a load on the AD system in larger deployments. Instead, a seperate Address Book system is implemented. This is an intermediary between the Active Directory and the OCS system.
The Address Book Server (let's call it the ABS from now on) will read E.164 numbers from Active Directory and populate them into the OCS Address Book. Now, hands up who has E.164 numbers populated in their AD? Anyone? No? Thought not.
So, how do we get 'normal' numbers to correctly appear in our Communicator client?
We do these using a process called Normalisation - or Normalization if you can't spell.
By default, OCS has a number of in-built rules to normalise numbers between the Active Directory and the OCS ABS however these are predominantly US based formats and as such do not translate particularly well to the UK and Europe.
So let's run through the process of normalising your numbers from AD.
Office Communications Server Resource Kit
The first thing I would recommend is getting hold of the OCS Resource Kit. This can be downloaded here. Install it on the server that has your ABS on it for now. As a bit of advice, do not accept the default directory, instead put it in the root (C:\OCSResKit or similar) - a lot of the commands are command line based and having to type in 'CD \program files\office communications server 2007 resource kit\bin' or whatever it is gets old really quickly.
Enabling Specific Normalisation
The first step in normalising your phone numbers is enabling control for normalisation - I.e. turning off the in-built 'default' rules and specifying your own. To do this, you can use the 'ABSConfig.exe' tool from the resource kit. This tool is used to configure ABS within the OCS deployment an
d as such must be executed on the server housing your ABS.
Executing the utility gives you this screen. Ensure that 'Do not apply any include or exclude filters' is selected as well as 'Use normalisation rules and include the normalised number for the phone attributes'.
Select the options and then click 'Apply Changes'.
Note that you can use this tool to modify the mappings of AD attributes to their OCS equivalents - for example I configured the main work number to come from the AD 'otherTelephone' attribute during testing to ensure I didn't break anything.
Next, click on the 'Configure WMI' tab at the top of the screen. On this screen only change the 'Normalisation Rules' section - ensure that 'Apply only
company-specific normalization rules' is selected and click 'Apply Changes'.
Once you've done that you can quit out of the tool.
Normalisation File
To normalize the numbers according to your own rules you need to create text file in the OCS' Address Book directory. You will have noted this at installation – if you didn’t, type ‘Net share’ from a DOS prompt on the server that runs the ABS and you’ll see the directory listed.
You need to create a text file in that particular directory explicitly called:
Company_Phone_Number_Normalization_Rules.TXT
Note the Americanism here – it’s important that this text file is named exactly as listed.
So, what’s in the file? Well, it essentially a list of normalization rules using regular-expressions as the search and replacement parameters.
In terms of file format – these is no format other than every expression is started by a search string and finished by a replacement string.
Example format:
# Directly pass numbers that are already detailed as E.164
^(\+\d{10}\d+)$
$1
# now 4 digit extensions
# 8000-8099
^(80\d{2})$
+44163599$1
So, comments on the format. Hash is a comment. The first line is your matching RegEx - I.e. to see if the number that's read in scope of the modification. The next line is the modifier - I.e. the modification to apply to the number.
In the above example the first rule checks for numbers supposedly already in E.164 by checking to si if the number starts with a '+' and is at least 10 characters long - if it is, it is passed untranslated.
The second rule checks for numbers between 8000 and 8099. This number is then modified to:
+44163599x where x is the original extension number. Note I've modified the numbers so they're not real numbers.
Now .NET Regular Expressions (RegEx) are a bit beyond the scope of this article however they're not that difficult to learn. It's useful to have a test though - for this purpose I can thoroughly recommend this site. Make sure you change the operation to 'Replace' and you then can test your RegEx against your numbers.
There are a couple of useful sites out there on .NET RegEx including this one and this one - worth a read-up.
There’s also a routing-helper tool within the OCS Resource Kit however as is often the case with MS software I found it hid too much and also did not tell the whole truth in terms of expression output – it ignored spaces for example in the tests but these were not ignored on the actual live OCS solution.
Your number must match one of the rules in this normalisation file for it to appear in the ABS. Now, fortunately OCS dumps a file of all the numbers it cannot match into a single file - you can use this as reference for the rules that you'll need to enter.
The file is called 'Invalid_AD_Phone_Numbers.TXT' and is located in the in the Address Book shared directory. You'll see a number of entries - probably loads at first inspection - along the lines of this example:
Unmatched number: User: 'DhakinoNzwange' AD Attribute: 'mobile' Number: '6 8597683'
Unmatched number: User: 'Derek.bristow' AD Attribute: 'ipPhone' Number: '0'
The above would tell me that these numbers would not appear for these users as there's no matching rules for those formats. In the above examples though it's worth noting that chances are a 0 and the number listed are actually wrong anyway - you really need to go through this file and make rules for all of the valid numbers that are listed in this non-matching file. The idea is to get the number of non-matched numbers down to a minimum.
Regenerating the Address Book
By default the address book within OCS is calculated and populated overnight. This is great for normal operation however it makes testing your normalization rules quite difficult. Luckily, there is a way to prompt the address book generation to run immediately.
This is a two step process:
1. Force a FULL regeneration of the address book
2. Run a synchronisation
To carry out each of these steps you can do the following:
Full Regeneration
Locate the ‘ABServer.EXE’ on your OCS server. This is typically in the following path:
C:\Program Files\Microsoft Office Communications Server 2007\Server\Core
You’ll need to run this command from a DOS prompt so start your DOS prompt and CD in to the above directory – it’ll take about 5 mis-types but you’ll get there eventually.
To regenerate, type the following command:
ABServer.EXE –regenur
This can take a few minutes to run – it must complete before you kick off the re-sync. To see whether it’s complete or not open the Event Viewer and look out for a 30028 event in the ‘Office Communications Server’ log.
Run a Synchronisation
To run an immediate synchronisation, from the same directory run this command:
ABServer.EXE –syncnow
Again this can take a few minutes to run. From within the Event Viewer look out for a 21058 event to denote its completion.
After running above have another look at the 'Invalid_AD_Phone_Numbers.TXT' file - this will indicate what numbers failed to match your rules. You'll need to revisit your rules file again and re-run the syncs.
Testing Your Rules
A more direct test is to see if you can see people’s phone numbers in your MOC. One thing to be aware of – and it’s caught me out no end of times – is that changes from the Address Book are not replicated to the client immediately. Only delta changes are downloaded and even so they’re a little unpredictable times. You can however force a FULL download of the address book for testing.
To do this, firsthet close down your MOC by right-clicking on it and selecting ‘Exit’. Next, you need to locate the local copy of your address book. This is located in the following directory:
C:\Documents and Settings\Username\Local Settings\Application Data\Microsoft\Communicator\
NOTE: This directory is typically hidden so you will need to enable the viewing of hidden files within your Explorer.
The name of the file is ‘GalContacts’DB’ – delete this file and then start your Communicator again from the Start menu.
You should now be able to see the relevant numbers when you right-click on your contacts – as shown. (Of cou
rse, you can only see them if you have some form of telephony enabled, Remote Call Control or Enterprise Voice....otherwise there's no point!).
Now, as a side note, do not be temped to try and do funky things here like adding 9s for an outside line etc. It simply does not work affectively and will cause you grief.
In my following articles I'll explain how to integrate into Cisco CallManager for both Remote Call Control and Enterprise Voice - all using E.164 numbers.
Until next time, thanks for reading, and hey, be careful out there.
'Why doesn't my Communicator client have any numbers for anybody?'

I.e you right click on somebody there is no number available for you to call.
Well, there is a big reason for this, and it's an important one - one that seems to be causing an awful lot of confusion out there for one reason or another, whether it's phone numbers not appearing or not being able to actually make calls.
This big reason is that OCS only works with E.164 numbering. There's an article here on Wikipedia about it - but I'm sure if you're reading this you'll actually know what E.164 is.
This is an example of an E.164 number compared to a 'normal' number: +44 870 60 10 100 - normalised is 08706010100.
The other thing to consider is that OCS only considers a number to be an E.164 if it starts with a '+'.....
Now, I want to stress this, you may think you've come up with various funky ways to ignore the E.164 requirements by putting a plus in front of your AD numbers for example, or by doing number manipulations at the gateway etc. etc. however I cannot stress enough - just don't do it. The whole of the OCS product set is designed to work with E.164 - stick with it, and deal with the E.164 at the edge - I.e. interface to phones - in another article... I.e. I'll show you how to do it in a standardised way that makes interoperability relatively easy.
So, what am I covering in this particular piece? I want to show you how OCS interprets your telephone numbers from Active Directory and how you can get them to show within your communicator client. I'm not at this point covering voice integration for Remote Call Control or for Enterprise Voice - we'll get to that.
The first thing to get clear is that OCS does not read telephony information directly from the Active Directory with every query - this would place too large a load on the AD system in larger deployments. Instead, a seperate Address Book system is implemented. This is an intermediary between the Active Directory and the OCS system.
The Address Book Server (let's call it the ABS from now on) will read E.164 numbers from Active Directory and populate them into the OCS Address Book. Now, hands up who has E.164 numbers populated in their AD? Anyone? No? Thought not.
So, how do we get 'normal' numbers to correctly appear in our Communicator client?
We do these using a process called Normalisation - or Normalization if you can't spell.
By default, OCS has a number of in-built rules to normalise numbers between the Active Directory and the OCS ABS however these are predominantly US based formats and as such do not translate particularly well to the UK and Europe.
So let's run through the process of normalising your numbers from AD.
Office Communications Server Resource Kit
The first thing I would recommend is getting hold of the OCS Resource Kit. This can be downloaded here. Install it on the server that has your ABS on it for now. As a bit of advice, do not accept the default directory, instead put it in the root (C:\OCSResKit or similar) - a lot of the commands are command line based and having to type in 'CD \program files\office communications server 2007 resource kit\bin' or whatever it is gets old really quickly.
Enabling Specific Normalisation
The first step in normalising your phone numbers is enabling control for normalisation - I.e. turning off the in-built 'default' rules and specifying your own. To do this, you can use the 'ABSConfig.exe' tool from the resource kit. This tool is used to configure ABS within the OCS deployment an

Executing the utility gives you this screen. Ensure that 'Do not apply any include or exclude filters' is selected as well as 'Use normalisation rules and include the normalised number for the phone attributes'.
Select the options and then click 'Apply Changes'.
Note that you can use this tool to modify the mappings of AD attributes to their OCS equivalents - for example I configured the main work number to come from the AD 'otherTelephone' attribute during testing to ensure I didn't break anything.
Next, click on the 'Configure WMI' tab at the top of the screen. On this screen only change the 'Normalisation Rules' section - ensure that 'Apply only

Once you've done that you can quit out of the tool.
Normalisation File
To normalize the numbers according to your own rules you need to create text file in the OCS' Address Book directory. You will have noted this at installation – if you didn’t, type ‘Net share’ from a DOS prompt on the server that runs the ABS and you’ll see the directory listed.
You need to create a text file in that particular directory explicitly called:
Company_Phone_Number_Normalization_Rules.TXT
Note the Americanism here – it’s important that this text file is named exactly as listed.
So, what’s in the file? Well, it essentially a list of normalization rules using regular-expressions as the search and replacement parameters.
In terms of file format – these is no format other than every expression is started by a search string and finished by a replacement string.
Example format:
# Directly pass numbers that are already detailed as E.164
^(\+\d{10}\d+)$
$1
# now 4 digit extensions
# 8000-8099
^(80\d{2})$
+44163599$1
So, comments on the format. Hash is a comment. The first line is your matching RegEx - I.e. to see if the number that's read in scope of the modification. The next line is the modifier - I.e. the modification to apply to the number.
In the above example the first rule checks for numbers supposedly already in E.164 by checking to si if the number starts with a '+' and is at least 10 characters long - if it is, it is passed untranslated.
The second rule checks for numbers between 8000 and 8099. This number is then modified to:
+44163599x where x is the original extension number. Note I've modified the numbers so they're not real numbers.
Now .NET Regular Expressions (RegEx) are a bit beyond the scope of this article however they're not that difficult to learn. It's useful to have a test though - for this purpose I can thoroughly recommend this site. Make sure you change the operation to 'Replace' and you then can test your RegEx against your numbers.
There are a couple of useful sites out there on .NET RegEx including this one and this one - worth a read-up.
There’s also a routing-helper tool within the OCS Resource Kit however as is often the case with MS software I found it hid too much and also did not tell the whole truth in terms of expression output – it ignored spaces for example in the tests but these were not ignored on the actual live OCS solution.
Your number must match one of the rules in this normalisation file for it to appear in the ABS. Now, fortunately OCS dumps a file of all the numbers it cannot match into a single file - you can use this as reference for the rules that you'll need to enter.
The file is called 'Invalid_AD_Phone_Numbers.TXT' and is located in the in the Address Book shared directory. You'll see a number of entries - probably loads at first inspection - along the lines of this example:
Unmatched number: User: 'DhakinoNzwange' AD Attribute: 'mobile' Number: '6 8597683'
Unmatched number: User: 'Derek.bristow' AD Attribute: 'ipPhone' Number: '0'
The above would tell me that these numbers would not appear for these users as there's no matching rules for those formats. In the above examples though it's worth noting that chances are a 0 and the number listed are actually wrong anyway - you really need to go through this file and make rules for all of the valid numbers that are listed in this non-matching file. The idea is to get the number of non-matched numbers down to a minimum.
Regenerating the Address Book
By default the address book within OCS is calculated and populated overnight. This is great for normal operation however it makes testing your normalization rules quite difficult. Luckily, there is a way to prompt the address book generation to run immediately.
This is a two step process:
1. Force a FULL regeneration of the address book
2. Run a synchronisation
To carry out each of these steps you can do the following:
Full Regeneration
Locate the ‘ABServer.EXE’ on your OCS server. This is typically in the following path:
C:\Program Files\Microsoft Office Communications Server 2007\Server\Core
You’ll need to run this command from a DOS prompt so start your DOS prompt and CD in to the above directory – it’ll take about 5 mis-types but you’ll get there eventually.
To regenerate, type the following command:
ABServer.EXE –regenur
This can take a few minutes to run – it must complete before you kick off the re-sync. To see whether it’s complete or not open the Event Viewer and look out for a 30028 event in the ‘Office Communications Server’ log.
Run a Synchronisation
To run an immediate synchronisation, from the same directory run this command:
ABServer.EXE –syncnow
Again this can take a few minutes to run. From within the Event Viewer look out for a 21058 event to denote its completion.
After running above have another look at the 'Invalid_AD_Phone_Numbers.TXT' file - this will indicate what numbers failed to match your rules. You'll need to revisit your rules file again and re-run the syncs.
Testing Your Rules
A more direct test is to see if you can see people’s phone numbers in your MOC. One thing to be aware of – and it’s caught me out no end of times – is that changes from the Address Book are not replicated to the client immediately. Only delta changes are downloaded and even so they’re a little unpredictable times. You can however force a FULL download of the address book for testing.
To do this, firsthet close down your MOC by right-clicking on it and selecting ‘Exit’. Next, you need to locate the local copy of your address book. This is located in the following directory:
C:\Documents and Settings\Username\Local Settings\Application Data\Microsoft\Communicator\
NOTE: This directory is typically hidden so you will need to enable the viewing of hidden files within your Explorer.
The name of the file is ‘GalContacts’DB’ – delete this file and then start your Communicator again from the Start menu.
You should now be able to see the relevant numbers when you right-click on your contacts – as shown. (Of cou

Now, as a side note, do not be temped to try and do funky things here like adding 9s for an outside line etc. It simply does not work affectively and will cause you grief.
In my following articles I'll explain how to integrate into Cisco CallManager for both Remote Call Control and Enterprise Voice - all using E.164 numbers.
Until next time, thanks for reading, and hey, be careful out there.
When is broken tooth not a broken tooth
Last week while diving on the Shark/Yolanda reef I got a stabbing pain in my upper jaw - right at the back where your wisdom teeth usually are. I say usually are cos I no longer have mine.
Anyway, after poking about with my tongue and working out that if I press here I feel like I'm being electrocuted I decided that not pressing here was the order of the day. It started getting more and more problematic though and within a few days I was knocking back loads of Ibruprofen. Incidentally, on the ibruprofen story in the UK you're advised not to take more than 1800mg ish a day, maybe at a push 2400mg. After chatting to the drug man in Sharm he advised they did 800Mg tablets and I could take up to 4000Mg per day - I wasn't convinced to start but by the end of the tip I was knocking it back like nothing.
Slowly got worse to the point by Monday morning I was in an awful lot of pain - couldn't eat or apply pressure to my teeth.... So off to the dentist I trot. He poked me about a bit and suggested a jaw ex-ray as he couldn't find anything wrong with my actual teeth.
X-ray shows a hairline fracture in my upper jaw going back from the tooth in front of where my upper-left wisdom tooth used to be......
Well, today is my first day without ridiculous pain in my face and I also managed to eat some solid food. I achieved this state of nirvana by yesterday attending hospital and undergoing an operation to have my jaw pinned back together - in the process losing another tooth at the upper back.
So today, the sharp excruciating pain has gone, and I'm back to being sore. Sore I can cope with.
Funny thing was toward the end of (last) week and this weekend I thought I just had a broken tooth and was being a big girl's blouse.... It's kind of a relief that I wasn't.
Both the doc and the dentist were curious as to how I didn't know I'd done something more serious - the only thing I can think of is that as the pain came on a lot worse Saturday on ward was that the pain was being dulled by my use of Nitrox last week while diving? I.e. the pain came on pretty sharply once I'd stopped diving?
Well, you live and learn. I think I've had my fair share of hospitals now and I'd really, really like it if somebody else could give it a go from now on. Thanks very much.
I'm off to try and eat a bacon sandwich.
Here's a question - how come everytime I got to Egypt I start pining for Bacon sandwiches?
Anyway, after poking about with my tongue and working out that if I press here I feel like I'm being electrocuted I decided that not pressing here was the order of the day. It started getting more and more problematic though and within a few days I was knocking back loads of Ibruprofen. Incidentally, on the ibruprofen story in the UK you're advised not to take more than 1800mg ish a day, maybe at a push 2400mg. After chatting to the drug man in Sharm he advised they did 800Mg tablets and I could take up to 4000Mg per day - I wasn't convinced to start but by the end of the tip I was knocking it back like nothing.
Slowly got worse to the point by Monday morning I was in an awful lot of pain - couldn't eat or apply pressure to my teeth.... So off to the dentist I trot. He poked me about a bit and suggested a jaw ex-ray as he couldn't find anything wrong with my actual teeth.
X-ray shows a hairline fracture in my upper jaw going back from the tooth in front of where my upper-left wisdom tooth used to be......
Well, today is my first day without ridiculous pain in my face and I also managed to eat some solid food. I achieved this state of nirvana by yesterday attending hospital and undergoing an operation to have my jaw pinned back together - in the process losing another tooth at the upper back.
So today, the sharp excruciating pain has gone, and I'm back to being sore. Sore I can cope with.
Funny thing was toward the end of (last) week and this weekend I thought I just had a broken tooth and was being a big girl's blouse.... It's kind of a relief that I wasn't.
Both the doc and the dentist were curious as to how I didn't know I'd done something more serious - the only thing I can think of is that as the pain came on a lot worse Saturday on ward was that the pain was being dulled by my use of Nitrox last week while diving? I.e. the pain came on pretty sharply once I'd stopped diving?
Well, you live and learn. I think I've had my fair share of hospitals now and I'd really, really like it if somebody else could give it a go from now on. Thanks very much.
I'm off to try and eat a bacon sandwich.
Here's a question - how come everytime I got to Egypt I start pining for Bacon sandwiches?
Wednesday, 11 June 2008
Diving - Sharm El Sheik, Egypt

First week of June I spent another week diving out of Sharm El Sheik in Egypt - probably my 20th or so trip now specifically for diving. I thought I'd write up the experience.
Firstly, to get you in the mood, have a look at the pictures: My Gallery
Feel free to have a browse through.
So, onto the trip. The trip was booked with a company called Explorers - they specialise in dive specific trips. I was introduced to them via another diving group called DiscoverScuba.
I am digressing slightly, but Discover Scuba is run by a guy called Chris Scott - if you're looking for somebody to train you in diving I couldn't recommend him enough. So much so when my friends have asked to go diving I've directed them via Chris, rather than dealing with them myself. He's a fantastic instructor with great patience and ability to train. Highly recommended.
Anyways, Explorers arrange dive specific trips to numerous areas however in this instance I'll focus on our trip to Sharm. The whole trip, flights & bed & breakfast hotel was about £400 - this is including a single supplement for me - it's cheaper if you share a room obviously, however I'm fussy and like to have the option of not having to worry about other people in the room.
Flights
We flew out of Gatwick around 10:45am on the Sunday. I was a bit disappointed to find we were flying with Thomson - in my snobbery I'd assumed Thomson were like the Chav airline of the holiday world.... but I was pleasantly surprised. The planes were very modern 767s and were very comfortable. Maybe not as comfortable as the previous carrier Astraeus, but they were good enough. One think I will add is that you must pre-book your meals if you actually want to eat on the plane - we didn't, and we found ourselves with no food. Chavtastic.
Flight out was about 5 hours and was an easy experience.
Sharm El Sheik Airport
You've not experienced an airport like it, I'll tell you that much. Sharm's Airport is a military airport about 20 minutes out of Naama Bay (the centre of Sharm). It's ok, but a little hectic. If you want to head out of central Sharm (into Ras Mohammad for example) you'll need a visa - this is GBP8 of 15US$. An important note is that you do not have to joing the big queue that everyone else joins - go to the far desks and just ask for a visa. Saves queing. If you're staying in Sharm you don't need the visa.
Transport to the Hotel
You get a free bus transport from the airport to the hotel obviously - however still being a fussy little fecker I much prefer to get a taxi. I don't like the busses as they can't take ages to round up people and generally farting about before taking you to your hotel.
Taxis from the hotel to downtown Naama are typically around 10GBP but you have to barter hard to get them down - they rely on the fact that the tourists don't know how much the taxis are. On this trip I simply couldn't be bothered so didn't really barter meaning we paid about 20GBP for the journey.... Shockingly lazy I think.
The Hotel
We normally book into the Ocean Club this is a 2/3* hotel located about 10 minutes (or 2.50GBP) out of the centre of Naama bay in a suicide taxi. It's rooms are adequate, it's food is ok, and it has a couple of good pools - one deep for dive training/swimming and play and one shallower one where bizarrely they used to do the dive training. It was quite comical watching people train to dive with their heads sticking out of the water.
It's not a bad hotel - I've used it many a time. It's a pretty good place to stay if you're travelling by yourself as you'll find a fair number of other single travellers there, typically diving with Ocean College - this means typically you'll see the same people around the bar/pool when you're not diving.
It's also cheaper to book a whole week here even if you're staying on a boat for a few days like we typically do - it gives you somewhere to dump your kit that you wouldn't normally want to take on a liveaboard.
The Diving
On to the important bit - the diving. We used the Ocean College dive school that's located within the hotel comple

There was a good group on this trip - some I knew from other trips, some personal friends and some people fresh to the trip. The group seemed to work and was probably one of the most socially-succesful groups I've had on the trip. Probably the reason why we seemed to get drunk so readily (and go swimming at 4:30am - go figure. That was Kim's fault that was). Anyway.
Over the week we did loads of diving including the local sites such as Ras Nasrani (Ras means 'head' or 'headland'.), the Gardens (Near, Middle, Fiddle & Far), Ras Bob, Ras Ghazlani amongst others. Personally the reefs for me start to blur into each other as my particular interest are wrecks and the more technical side of diving, rather than reef recreational. Saying that I do love the diving anyway and the reefs here are probably the most spectacular in the world... Certainly my favourite anyway and I've dived a lot of places, including the little reefs off of Australia.
We also did some drift diving in the beatiful Ras Mohammad nature reserve, and an early day out into the straights of Tiran to do the outside of Jackson (and for some, both sides of Thomas all on the same dive... but that's a whole different story).
You generally had a choice of 2 or 3 dives a day and the options of using Nitrox - one thing to be clear on here though is that these boats are only recreational diving, I.e. no-stop diving in PADI speak, or non-decompression dives in everybody-else speak. They run tech boats I understand although personally I've never used their tech services having normally arranged my own boats & techie mates.
The first day is usually easy local sites typically to ensure people are good in the water - remember some people won't have been in the water for a while. This didn't really apply to my immediate group anyway as we're all relatively experienced divers with a lot of dives under our belts.
Our guides were George Wilders (who's married to Clare, another one of the instructors from OC) and Marc. Both were very good guides giving good briefings and were also able to recognise capable divers and leave them to go off and do their thing. This is a very important point - I've had massive fall outs with dive organisations that insist you pootle around after a dive guide on a site that you probably know better than them anyway. Anyway, my point being the dive guide service was excellent. Mind you, I probably would say that cos I'm pretty sure George (via Clare) knows where I live and I'm not that silly.
Obviously OC hire out kit - I've no experience of it personally however I didn't hear of any complaints.
The boats are comfortable, the crew very helpful (as is generally the case in the Red Sea) and the food fantastic.
If I had any negative comment about Ocean College, and I'm struggling to come up with any, it's their costs. They seem to have gone up significantly in the last year. Also, they quote in Euros but bill in Egyptian Pounds (LE) which with the shift in the Euro lately means you get hit twice by the conversion rates. Not good - they should sort this out and bit entirely in Euros, or better still (well for me anyway) in US dollars.
Anyway, moving on to the diving. There was a bit of a plankton boom this year resulting in a large number of sitings of Manta Rays, Whale Sharks, Hammerheads etc. I've never seen so many sharks, mantas or Whale Sharks out of Sharm before, it truly was fantastic. To see the Hammerheads and the Mantas you often have to swim out in to the blue rather than along the reefs - this can lead to a curious dive. 45 minutes of boredom and sensory deprivation followed by 5-10 minutes of sheer excitement as a Manta Ray makes another pass at you (so to speak). You always had the choice of course of following the reefs - as we did on a few occasions.
We also did some night diving - a fantastic option out of sharm and not to be missed, assuming you're OK with diving in the dark. Fortunately I remembered to bring my proper torches this time. Having a decent torch is pretty important - I use the Kowalski diving lamps, fantastic gear distributed by LightHouse Diving. You get to see some different things at night - mating Octopus (Octopi?), hunting Lion fish etc. The Lion fish are pretty funny, they see the lights and use them to hunt by - shine your torch in a direction and off they trot. As I had a pretty powerful torch with me I ended up with a whole troop of the little fellas.
Have a look at the pictures to get an idea of what was seen on this trip! The diving really was spectacular.
Dive Gear
I was diving with a 5/3mm split semi-dry (I.e. 5mm core, 3mm limbs) that's seen better days so all the seals are gone - but even so I was warm enough. Water was around 25 degrees. I'm normally a bit of a wimp with water temperature - 22 degrees or below is dry-suit weather as far as I'm concerned.
Pretty much everyone on the boat was using std. recreational setups with single 12l tanks with octopus setups - didn't see any long-hose, pony or wing setups. Bizarrely I think Vicky had the most 'technical' set up as she'd borrowed some of my gear.
Nitrox was available if you prebooked.
Non-Diving Entertainment
There's numeros places to eat in central Sharm (Naama Bay) as well as round the markets in Old Sharm. Some people find Old Sharm a little intimidating however there's nothing to worry about and it does give you a better impression of the area compared to the touristy Naama bay.
Food is generally cheap compared to the UK (Except for Little Buddha - see later) - you'll pay around 7GBP a head including a beer or two typically, rising depending on how much you drink. Food around Old Sharm is typically cheaper.
Some food recommends:
China/Thai house in Naama Bay. Tony Blair usually eats here - but don't let that put you off I don't think it'll turn you into a war mongering lieing grinning idiot just by attending. Food is good here. There's two restaurants - Thai & Chinese. What's unique is that you can order from both menus if you ask.
Camel Club Indian Curry House. Yes, Indian in Egypt. Located in the Camel Bar complex the food is fantastic - you'll need to book to get into though.
Fishermans in Old Sharm. Or the Cat Restaurant as Vicky so elegantly puts it. Fantastic food, quite cheap although they have put their prices up.
Some food don'ts:
Little Buddha. UK prices, poor service, and boring food. Nightclub bit after is a bit boring, didn't even get to use my glow-sticks.
There's good shopping for tat too in central Sharm and in Old Sharm, don't forget to barter as it's part of the fun. Unless you're like me - I think life's too short to argue about 50p. Graham however seemed to love it and would barter for ages only to pay what was agreed at the beginning anyway.
Taxis
Taxis around Sharm are pretty easy to get and cheap however never ever accept their price they offer. Always barter them down. Rememebr, there's a lot of taxis in Sharm, it's easy enough to walk away and get another one. Within Sharm a typical taxi fare is 2-3GBP (20-30LE).
They've all had new cabs by the way - gone are the crappy old Peugots they've all got sparkly new ones! They still drive like lunatics however, although they don't seem to take offence at being asked to slow down - even if you scream it.
Weather
Scorchio. All the time. Averaged around 38-42 for our whole week - when you come off the boat and you get hit by the on-land wind it's a bit of an eye opener. I always avoid the sun as I burn so easily - I tend to wear factor 50 for the whole week and still get burned.
Sharm Belly
A lot of people complain of dodgy stomachs when they come to Sharm and they typically blame the food. In 9 out of 10 cases it simply isn't the food - it's hydration. Dehydrytion can give you similar effects to mild food poisioning - weak, spending time on the loo etc. Us brits just don't drink enough water and when placed in an environment with such hot dry heat we still don't. You should really aim to drink about a litre an hour - more if you're diving. It sounds a lot, but I'd rather be going for a widdle a lot that being sat on the loo (you know what I mean, can't think of a polite way to put it). If you do get the symptoms grab something like dyralite from your hotel reception and drink as much water as you can.
Also, it's worth putting more salt on your food than you would at home.
Summary
Anyway, this was supposed to be a quick summary of our trip but it's ended up being a semi-review on Sharm and advice on how to holiday. So I'm going to shut up.
I love the place, and I will be going back soon. Hopefully this time to do some Heliox training.
Wednesday, 26 March 2008
Sleeping & Eating....Why?
Sleeping & Eating - aren't they quite possibly the biggest waste of time ever?
I'm one of those people who seems to have engineered himself into being completely unable to go to bed before 2:00am and yet is still on average up around 8:00am. I tell you what, if I could not sleep I'd be properly happy. Mind you, wouldn't make the after affects of alcohol any more enjoyable.
Same with food - what the hell is that all about? Why don't they hurry up an invent pills you can take that not only make you have a cracking night out but also nur...nurish....,er, feed you at the same time? It'd save a lot of effort wondering about what you can or can't eat.
It'd certainly make my life easier being hypoglycemic anyway. Why can I spell hypoglycemic but not nourish? Doh.
Sleep just seems such an odd thing to do? Surely we should have evolved past it by now.
Oh my, I've made my first non-technical blog.
I'm one of those people who seems to have engineered himself into being completely unable to go to bed before 2:00am and yet is still on average up around 8:00am. I tell you what, if I could not sleep I'd be properly happy. Mind you, wouldn't make the after affects of alcohol any more enjoyable.
Same with food - what the hell is that all about? Why don't they hurry up an invent pills you can take that not only make you have a cracking night out but also nur...nurish....,er, feed you at the same time? It'd save a lot of effort wondering about what you can or can't eat.
It'd certainly make my life easier being hypoglycemic anyway. Why can I spell hypoglycemic but not nourish? Doh.
Sleep just seems such an odd thing to do? Surely we should have evolved past it by now.
Oh my, I've made my first non-technical blog.
Finding an email address in Active Directory
Quick one today - how to find an assigned email address in Active Directory. You know what it's like, you try to give somebody an email address and you find it's already assigned, or somebody has sent an email to 'PostMaster@yourdomain.com' and you don't actually know who has received it etc.
Some quick ways to find it:
1. Use outlook!
From Outlook 2003/7, enter the address in the 'To' field (such as EmailAddress@yourdomain.com) and hit ctrl-K to resolve the names. If it's assigned, it should replace the address with the 'nice' name.
2. Build an LDAP query.
No, really, it's pretty easy, honest :-)
Fire up Active Directory User & Computers (Start/Run - dsa.msc).
Right-click 'Saved Queries' at the top, and select 'New Query'.
Give it a name - 'Email address search' or the like.
Give it a description - 'Erm...Dave.'
Click the 'Define Query' button
Click the 'Find' drop down and change to 'Custom Search'
Click the 'advanced' tab and enter the following ldap query:
(proxyAddresses=smtp:Target@yourdomain.com)
Click 'OK' all objects that have that email address (should be 1 hopefully) are now displayed in the right-hand pane.
You could of course just send them an email with a read-receipt on too and hope they read it!!!
Tuesday, 25 March 2008
OSX & MacFuse/NTFS-3g rage
I thought Macs (The computers, not me) were supposed to just work? They bloody don't I tell thee.
If you've read my previous blog on performance of NTFS drives on OSX well I've now got the answer. The speed problem was essentially down to the free software for getting write access to NTFS volumes. MacFUSE & NTFS-3g.
MacFUSE is a google bit of software - info can be found here.
The NTFS-3g bit is an extension that gives you write access to NTFS volumes - info on that can be found here.
Now, by reformatting the system as HPFS and retrying the performance I could see that the drive itself, and the ports, were operating pretty well at 25Mbps+ - it was just as NTFS it was pants.
So thinks I, I'll simply remove MacFUSE & NTFS-3g and find a better solution! Oh how wrong could I be.
Removing MacFUSE
Obviously, with it being a Mac, you just drop it into the trash don't you? Oh no, you have to dig out a shell script that's hidden inside a package. You run a command such as:
Now, after doing this, MacFUSE seems to disappear. But hey, guess what, the volumes are still listed as NTFS-3g and I can still write to them, but with crap performance. I need to remove the NTFS-3g driver.
After a lot of digging I've found you have to delete references to NTFS-3g from /System/Library/Filesystems. Again not very straight forward.
After a reboot, my volumes are back to being unwritable NTFS volumes! But, they read now at around the same speed-ish as native HPFS. So where from here?
Well, after doing some more google-festing I found a product by Paragon - NTFS for OSX . I was very dubious having been bucked by the previous NFUSE malarky so I backed up and thought I'd give it a go.
.....and I'm proud to report that it works like a dream. 25Mb/s average read/write speeds from a USB external NTFS formatted drive. Ended up costing 33USD (which is about what, 12p?) - a complete bargain for NTFS writey-readey happiness.
All is well again in Mac's MacWorld.
All that is bar:
- Not picking up USB devices from sleep. RAGE.
- The odd 'popping' sound from the speakers. Not ragey, just mildly annoying when you've forgotten to turn the amp off.
- An odd one - the leading edge of the Macbook is quite sharp and hurts your wrists after a while.
.......and relax.
If you've read my previous blog on performance of NTFS drives on OSX well I've now got the answer. The speed problem was essentially down to the free software for getting write access to NTFS volumes. MacFUSE & NTFS-3g.
MacFUSE is a google bit of software - info can be found here.
The NTFS-3g bit is an extension that gives you write access to NTFS volumes - info on that can be found here.
Now, by reformatting the system as HPFS and retrying the performance I could see that the drive itself, and the ports, were operating pretty well at 25Mbps+ - it was just as NTFS it was pants.
So thinks I, I'll simply remove MacFUSE & NTFS-3g and find a better solution! Oh how wrong could I be.
Removing MacFUSE
Obviously, with it being a Mac, you just drop it into the trash don't you? Oh no, you have to dig out a shell script that's hidden inside a package. You run a command such as:
sudo /System/Library/Filesystems/fusefs.fs/Support/uninstall-macfuse-core.shNice and intuitive then. Not. Incidentally, I did finally find instructions here
Now, after doing this, MacFUSE seems to disappear. But hey, guess what, the volumes are still listed as NTFS-3g and I can still write to them, but with crap performance. I need to remove the NTFS-3g driver.
After a lot of digging I've found you have to delete references to NTFS-3g from /System/Library/Filesystems. Again not very straight forward.
After a reboot, my volumes are back to being unwritable NTFS volumes! But, they read now at around the same speed-ish as native HPFS. So where from here?
Well, after doing some more google-festing I found a product by Paragon - NTFS for OSX . I was very dubious having been bucked by the previous NFUSE malarky so I backed up and thought I'd give it a go.
.....and I'm proud to report that it works like a dream. 25Mb/s average read/write speeds from a USB external NTFS formatted drive. Ended up costing 33USD (which is about what, 12p?) - a complete bargain for NTFS writey-readey happiness.
All is well again in Mac's MacWorld.
All that is bar:
- Not picking up USB devices from sleep. RAGE.
- The odd 'popping' sound from the speakers. Not ragey, just mildly annoying when you've forgotten to turn the amp off.
- An odd one - the leading edge of the Macbook is quite sharp and hurts your wrists after a while.
.......and relax.
The 4Gb Memory Map Limit
I've numerous times been asked about the '4Gb memory limit' with regards to Windows operating systems (Well, more commonly for Windows, obviously it's applicable to other OS' too on a 32 bit system)....So, I thought I'd take the time-out to answer it once that way I can just send out a link, rather than regurgitating or pointing people at Google.
So, what is the 4Gb limit? We all know what RAM is right, so I won't go into that. First, where does the limit come from? A 32 bit operating system addresses memory using 32 bits - this means that it can address 2^32 bytes of information. 2^32 is 4,294,967,296 bytes or 4Gb. This is where the hard limit of 4Gb comes from - the 32 bit address space.
In the early 90s when the first 32 bit OS' were coming about the 'big memory' capability was considered huge - 4Gb memory space when the average machine had 4Mb - well I'm sure you can see the point.
Of course now days desktop machines, server etc. with 4Gb of RAM are not that uncommon (hell my Macbook has 4Gb in it) and we're starting to hit this addressing limit.
Why can't my machine see 4Gb of RAM?
One of the most common questions I get is that of somebody who's just upgraded their 32 bit Windows XP32 to 4Gb and they cannot 'see' the 4Gb. Typically they'll see 3.25Gb or 3.5Gb. Why is this?
Well - the limit of addressing for a 32 bit OS is 4Gb.. What's often forgotten is that this 4Gb of space may actually contain other items except memory. Typically this is where hardware uses something called 'Memory Mapped I/O'. This is where a device maps itself into the main address space for performance purposes - it's significantly faster than using the traditional bus method.
This can be misleading - the system STILL can access a total of 4Gb address space but you may not have the full 4Gb available to you.
If you want to have a look at any memory mapped I/O on your machine you can do it from Device Manager. Open it and select 'Resources by Connection' on the view menu. You can then expand the 'Memory' tab and see what hardware devices are mapped into your memory space.
You'll see the address space used...Remembering that the system can ONLY address 4Gb you can see why some of your 4Gb just appears to disappear.
You'll always see for example 000A0000-000Bffff mapped - this is a long held convention mapping for memory cards.
You can if you want change this mapping by changing the 'Aperture' setting of your video card (assuming it supports it)...128Mb is a smaller 'hole' than 256Mb after all.
So, that's why you rarely get ALL of your 4Gb of RAM available when you upgrade & use a 32 bit OS. Brain hurting?
What about Terminal Services and Citrix?
Again, another common one. I often come across machines that have had more than 4Gb put in them, and often 'tuned' to allegedly 'support' this configuration...the client then complains of poorer performance than before the upgrade. To understand this, you need to understand how Windows utilizes memory.
Firstly, to be clear we're now talking about virtual memory mapping, not the physical we were previously! This is important, try and keep up.
Each application effectively has it's own 4Gb virtual memory map - this is divided into a Kernel area of 2Gb and 2Gb for the application. Now this is where you start to get scaling problems with Citrix/TS on a 32 bit server - essentially all of the shared session information has to be put into the 2Gb kernel mode area. This pretty much limits the scaling capability of a Citrix/TS server.
So, why is it that different versions of Windows 2003 server say they can address more than 4Gb of RAM? Well they can, but they use buggery to do it. Consider the options:
/3GB (4Gb Tuning)
This is a switch that can be added to the BOOT.INI file. This is astonishingly bad for Citrix/TS environments - for full details of how it works see here: http://technet2.microsoft.com/windowsserver/en/library/edc9f27d-76fb-4139-9555-20acc684c3af1033.mspx?mfr=true
In summary /3GB switches the virtual memory layout to 1Gb for the Kernel, and 3Gb for the application. This is bad because it will actually limit the scalability of your server as you'll be able to house less sessions before you run out of kernel space.
/PAE (Physical Address Extension)
This is the method often cited for allowing certain editions of Windows to support up to 64Gb (I think, could be less. I'll check). Now, this again is bad in Citrix/TS environments as it again limits your kernel space. Or rather more correctly put increases the loading in your kernel space. The reason for this is that memory above the 4Gb hard-limit is mapped into tables within the 4Gb limit. In essence the address space is increased to 24 bits (2^24 = 64Gb).
Now, the problem with this is that each time memory is mapped above the limit you require an additional Page Table Entries (PTE) are required in the kernel space - reducing your kernel space and therefore reducing the scalability of your Citrix/TS farm.
I've been to sites where they've enabled PAE for more than 4Gb RAM where removing the extra RAM and disabling the PAE resulted in a positive performance increase for the users and additional scaling for the server. Go figure.
So what's the answer?
Well the obvious one is to move to 64-bit for larger Citrix/TS implementations. I'm not sure why there's been such a slow take up of 64 bit in this arena. I know there was confusion around the Itanium set, driver compatibility rumours etc. but it just makes sense in larger environments to be running with x64.
MS are pushing this more and more now with their enterprise products - Exchange 2007 only runs operationally on x64 for example. Yes, I'm aware there's a 32 bit however that's for support/testing/evaluation and is not for live environments.
So, there you have it. I'll review this and possibly put a bit more detail in at a later date. I'm off for a lay down.
Monday, 24 March 2008
USB2? 480Mbps? My Arse.
Today I've been mostly getting the rage with the pathetic performance I get from my Leopard-powered Apple Macbook.
I have to handle a fairly large amount of data on a day to day basis - things such as VMWare images and the like. My laptop hard disk at some 320Gb is full a lot of the time.... So, I purchase a 250Gb SATA external 2.5" hard disk and cage.... But can I get it to go any faster than 5mb/s? No, I can't. And it's rubbish.
I'm pretty sure this has to be something to do with the MacBook and the fact that the USB drive is currently formatted in NTFS... but 5mb/s? Come on, reminds me back in the day spending all day trying to copy off a failed 120Mb IDE drive......
So, choices, do I re-format with HPFS+ and try it? Ok, here goes.......
.....28Mb/s!! So it's defo the NTFS partitioning. Ok, now that sucks. Because now I have an external drive that works quickly but won't work on any of my work systems directly... I'd have to share it on my Mac and then copy up to the Network.
A New Option is needed. Let me have a think.
Subscribe to:
Posts (Atom)