Large collection of Free Microsoft eBooks for you, including: SharePoint, Visual Studio, Windows Phone, Windows 8, Office 365, Office 2010, SQL Server 2012, Azure, and more. (More than +80 eBooks)

A great collection of free Microsoft e-books.


When Skype moved from P2P to a centralised architecture to help the NSA spy on Skype users

In the good old days when Skype was P2P, Skype users with an appropriate connection type would be promoted to ‘supernodes’, relaying connections for other Skype users locked behind NAT. Back in 2012 Microsoft had bought Skype from eBay and promptly changed from a P2P architecture to a centralised one. The move was advertised as one of security and reliability. We now know otherwise, and the NSA and Microsoft planned this architectural change to make spying on Skype users much easier as part of Project Chess. Here is what was said about the changes back in 2012:

Kortchinskys analysis, which has not yet been confirmed by Microsoft, shows that Skype is now being powered by a little more than 10,000 supernodes that are all hosted by the company. Its currently not possible for regular users to be promoted to supernode status. Whats more, the boxes are running a version of Linux using grsecurity, a collection of patches and configurations designed to make servers more resistant to attacks. In addition to hardening them to hacks, the Microsoft-hosted boxes are able to accommodate significantly more users. Supernodes under the old system typically handled about 800 end users, Kortchinsky said, whereas the newer ones host about 4,100 users and have a theoretical limit of as many as 100,000 users.

“Its pretty good for security reasons because then you don’t rely on random people running random stuff on their machine,” Kortchinsky told Ars. “You just have something that’s centralized and secure.”

via Skype replaces P2P supernodes with Linux boxes hosted by Microsoft updated | Ars Technica.

An open letter to Microsoft Bing

It is ironic that I am forced to use Google translate to use

Sadly, I’m not kidding. Let me explain…

With that bold statement aside, let me introduce the Bing team to the HTTP Header “Accept Language”:

That’s my Accept Language header above, direct from my browser settings and sent to Bing in every request I send to your website. Regardless of that rather nice hint, I’m being forced to read the website in German! This is even the case when I deliberately visit (and get sadly get redirected back to German).

So, what’s wrong about this picture? Well first you make a huge and rather rude assumption concerning my language preference and base your decision on where I am currently geographically located in the world. Then you don’t offer me any obvious way to get out of this mess.

Think about that for a second. Now go sort this shit out.

Geographical location != language preference

You can use IP-to-Geo technology as a guide to offer people an alternative (make a best guess and offer) but FFS don’t force people.

Next time I’ll write to you in Mandarin Chinese and see how you like it. Don’t get me wrong, I’m a huge Microsoft fan. You don’t have many left. Is there any need to isolate yourselves any further? At present I could not recommend to anyone. Sad.

To solve the problem you can automatically set the current thread culture in ASP.NET or alternatively do it manually. Even better, offer the languages suited to the region so that the user can choose.

Get the user’s geographical location from your wonderful IP-to-GEO crappy database. If the preferred Accept Language header does not match the geographical location then pop up a modal window that offers the user to switch to the geographical region. Add an option to remember that decision for the next visit, but don’t make it mandatory. Bonus tip. Offer these languages in those languages, and not in English.

Offer a way to change language (not region, the two aren’t the same) on every page.

It isn’t hard, you already have the query string param cc to change region. Add another for language and stick a drop down list at the bottom of the page. Skype has a good example drop down list (except for presenting me everything in German to start with).

Go slap the developer that wrote this code. If they are in the UK, double slap them. They should know better.

Present some statistics to your bosses who don’t get it.

11 million Catalan speakers in the world, mostly in Spain. 37 million Spanish speakers in the USA and 19% of them ONLY speak Spanish. The first don’t want Spanish trust down their throats, and the latter would be quite happy to have Spanish. US and UK expats. Russian expats, Polish expats. People migrate. Europe has a steady movement of people. Get used to it.

Repeat after me.

Geographical location != language preference


Sorry for the rant, but it is 2012 and Microsoft should be setting an example to the rest of us lowly developers.

Work around

There is a work around but it isn’t obvious. You can use the cc querystring parameter to set the region.