October 2007 - Posts

Oslo: Practical Software Plus Services and SOA

Oslo is the code name for a set of technical investments from Microsoft that will help customers and developers in realising the full potential of SOA and software plus services. Oslo is not a single product. It is a multiprodct and multiyear effort and multiple product teams in the Servers & Tools product group (part of Microsoft Business Division) will be working on the initiative, which will be materialised in five key areas:

Server. Microsoft BizTalk Server “6” will continue to provide a core foundation for distributed and highly scalable SOA and BPM solutions, and deliver the capability to develop, manage and deploy composite applications.
 • Services. BizTalk Services “1” will offer a commercially supported release of Web-based services enabling hosted composite applications that cross organizational boundaries. This release will include advanced messaging, identity and workflow capabilities. 
 • Framework. The Microsoft .NET Framework “4” release will further enable model-driven development with Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF). 
 • Tools. New technology planned for Visual Studio “10” will make significant strides in end-to-end application life-cycle management through new tools for model-driven design of distributed applications.
 • Repository. There will also be investments in aligning the metadata repositories across the Server and Tools product sets. Microsoft System Center “5,” Visual Studio “10” and BizTalk Server “6” will utilize a repository technology for managing, versioning and deploying models.
 
Read the full press release here.

The MX Record for mehranikoo.net Now Pointing to Windows Live Mail

As I wrote in an earlier post, I had a plan for migrating from my web host's email service to Windows Live Mail. I had some spare time yesterday morning just before an internal training course so I made the migration happen.


Configuring Windows Live Custom Domains and Windows Live Mail

The process was fairly straightforward and took around 10 minutes. I signed up for the Windows Live Custom Domains service and proved the ownership of my own domain by updating the MX record in the DNS settings of my web site to point to Windows Live Mail. I had to wait for few minutes before the update was applied and made accessible to Windows Live. Then I created a new mailbox (Member Account) using my Windows Live Id (...@mehranikoo.net). At this point, the service was all up and running and my mail was being delivered to Windows Live Mail.


The MX record in my web site's admin control panel


Windows Live Custom Addresses

I also wanted to be able to use http://mail.mehranikoo.net/ for checking my email so I updated the CNAME record in the DNS settings to map mail.mehranikoo.net to go.domains.live.com and then added a new custom address to Windows Live to map the CNAME record for mail to Windows Live Mail.

As I was adding the custom address for email, I noticed that custom addresses can also be used for other services like Live Spaces, Live Search and Live Maps (SkyDrive is missing though). So I created a custom Live Search site by creating a macro for searching the content on (and related to) http://msdn2.microsoft.com/. The original address for this macro is http://search.live.com/macros/mehran/msdn but my new CNAME record (http://msdn.mehranikoo.net/) can be used to access this search site too. All CNAME records in the DNS settings point to go.domains.live.com and it is up to Windows Live service to point to the correct location.


CNAME records in my web site's admin control panel


Custom Addresses in Windows Live Custom Domains


Linking Windows Live IDs

As I mentioned earlier, I created a new Windows Live ID for my @mehranikoo.net mailbox so I had to manage the new one in addition to my @live.co.uk Live ID. If you have more than one Windows Live ID like me, instead of signing out and in, you can link your Live IDs using the Windows Live settings page. This allows you to switch between your accounts (by using a dropdown menu) without having to sign out and back in again.


Mail forwarding and sending mail from a different address

Although linking Live IDs provides an easy way of accessing multiple accounts when using Live services like Mail and SkyDrive, but I still had to switch between different accounts to check my email. So I enabled forwarding on my @mehranikoo.net account to forward the emails to my @live.co.uk account. The downside of forwarding is that you use a different address to send your email from, which can be confusing for the recipient. I resolved this by adding my @mehranikoo.net address as a new email address to my @live.co.uk account. This way, when I am sending an email from my @live.co.uk account, I can choose which address to be used as the from (and reply to) address. When someone sends an email to my @mehranikoo.net account, it is forwarded to my @live.co.uk and when I reply to it, Windows Live Mail automatically chooses the correct "from" email address if it is added as an additional email address. Sweet.

Posted by Mehran Nikoo | with no comments
Filed under: ,

Launch vs. Release To Manufacturing

We had an announcement earlier this year about the combined launch of Windows Server 2008, SQL Server 2008 and Visual Studio 2008, which is scheduled for 27th Feb 2008. It is important to know that the launch date is not necessarily the same as the release date. The launch date is when the official promotion for the product is started and the global launch tours, training and readiness events are kicked off. As the name suggests, the release date is when the product is released to manufacturing (RTM).

Combined launch: Q1 2008 (27/02/2008)
Visual Studio 2008 release: expected in Q4 2007
Windows Server 2008 release: expected in Q1 2008
SQL Server 2008 release: later in 2008

Facebook and Microsoft

Facebook and Microsoft have announced that they are going to expand their advertising partnership and Microsoft will take a $240 million equity stake in Facebook and this values the start-up company at $15bn.

Posted by Mehran Nikoo | with no comments
Filed under:

Microsoft Shared Source Licenses and the OSI Approval

Something that I missed in the news was the approval of two of Microsoft's Shared Source Licenses by the OSI (Open Source Initiative) on 12th Oct 2007:

This means that the projects developed under these shared source licenses (like some of the projects on CodePlex) are now open source and as Tim O'Reilly highlighted, "it will be a lot harder to draw a bright line between Microsoft and the open source community".

Yet another interesting area to watch.

Related link: Microsoft Open Source Portal

Posted by Mehran Nikoo | with no comments
Filed under:

MSDN Tester Center

We have all heard about the importance of testing and we all know that testing needs to be an integral part of the solution development lifecycle but there are still many development teams who do not follow this practice. One of the major challenges that developers have to deal with is the number of tools needed for planning, creating, executing and managing the tests. We need a development tool, a web test tool, a load test tool and finally another one for recording the test results. I have to admit that there have been some occasions in the past where I have avoided (or tried to avoid) implementing a fully integrated testing framework into the solution development lifecycle.

Today, VSTS allows us to create various test types (unit, web, load, manual, etc) and keep them all in one solution. It integrates very nicely with TFS work item tracking too. If you are serious about load testing your web application, then VS2005 Team Test Load Agent is the tool you want to use (actually, I am currently in our testing labs with one of our valued enterprise customers. We are using the Visual Studio 2005 Team Test Load rigs and I am not sure how much time we had to spend on creating and running the tests if we didn't have this tool). So from the tools perspective, we are in a much better position now.

Developers on the Microsoft platform have had their own communities for sharing their knowledge for a number of years but there has not been much going on in the testing field. From today, with the launch of the MSDN Tester Center, testers can start building their community and start collaborating with each other. Although this portal is called the "Tester Center", but developers should find the content useful too as unit testing and writing automated tests is part of their day to day job. At Microsoft, there is a dedicated testing role called SDET (Software Design Engineer in Test). SDETs work closely with the SDEs (Software Design Engineers) and their job descriptions are fairly similar: to write code and then test it. These job descriptions are so close that we need to highlight their differences!

The MSDN Tester Center has a number of interesting videos that show how to test and debug various scenarios. It also has a number of blog posts related to testing so it is a good starting point for building the testing capabilities and communities. If you are interested, make sure you bookmark this site and help the MSDN team in building the community and the content.

Posted by Mehran Nikoo | with no comments
Filed under:

Nested Object Initializer

Somebody asked me whether the object initializers can be used to initialize non-primitive member types. This can save few lines of code for types like System.Diagnostics.Process that need their underlying properties (like StartInfo) to be initialized before use. You can do this by using a "nested object initializer", which is a member initializer that specifies an object initializer after the equal sign.

So instead of writing the following code segment:

Process notePadProcess = new Process();
notePadProcess.StartInfo.FileName = "notepad.exe";
notePadProcess.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
notePadProcess.Start();

You could write:

Process notePadProcess = new Process() { StartInfo = new ProcessStartInfo() { FileName = "notepad.exe", WindowStyle = ProcessWindowStyle.Maximized } };

And even better than that, you can write it this way:

Process notePadProcess = new Process() { StartInfo = { FileName = "notepad.exe", WindowStyle = ProcessWindowStyle.Maximized } };

You can only use this expression if the property (StartInfo) is initialized by the parent type. This can be done by using a field initializer, the constructor or the property getter. For example, System.Diagnostics.Process handles this in the property getter and creates a new instance of  ProcessStartInfo if StartInfo property is null. If you use such expression and the object is not initialized, it will result in a run-time exception.

Please note that you cannot use a nested object initializer if the member you want to initialize is a property with a value type (like a struct), or a read-only field with a value type.

For questions like this, the C# Language Specification 3.0 [download - Word document] is the most accurate and concise resource you can find. Something that I really like about this version of the document is that it is a unified version and covers all the features of the C# language through version 3.0.

Posted by Mehran Nikoo | with no comments
Filed under:

Slides and Source Code for "Practical WCF Revisited"

As I wrote earlier, VBUG had their annual conference earlier this week where I presented the "Practical WCF Revisited" session. The content in this presentation was related to but not the same as the one I delivered earlier this year at the VBUG London technical event. Although the previous presentation touched most of the WCF features, but it didn't drill down into any specific area as I wanted to cover the breadth of the technology. Since then, many solutions have been built based on WCF and development teams are now looking for best practices and want to know how to implement features like state management, call interception, centralised error handling, etc. So this is the first part in the "Revisited" series where I talk about a number of areas that have been the focus of customer questions/enquiries.

The slide deck and sample source code (solutions are created using VS2008 Beta 2) can be downloaded from here. Please read the "Read Me" file before using the content.

Popfly in Public Beta

Popfly has entered the public Beta phase so you no longer need an invitation to join the Popfly community. You can start using it straight away by logging in using your Windows Live ID and completing your profile before the first use.

Posted by Mehran Nikoo | with no comments
Filed under: ,

Windows Live SkyDrive Storage Increase

I just noticed that the SkyDrive storage has been doubled to 1GB. There are also some additional features like the RSS feeds for the public folders and the ability to share folders with those people who are not in your Windows Live address book. I have been waiting for this one (folder sharing) for a while.

I also noticed that Hotmail Live has been offering 5GB storage for mailboxes since 18th August 2007. Some of the new features are:

  • Auto-forwarder
  • Auto-responder (similar to Out of Office Assistant in Exchange)
  • Ability to skip the today screen :)

I have my own domain name and my web host is providing me with an email service, but within the next few weeks, I am going to use Windows Live Custom Domains to have my emails delivered to my Windows Live mailbox. Why? 

  • I get 5GB free storage for my mailbox
  • I don't have to worry about the bandwidth consumption
  • I get free spam filtering and anti-virus for my emails
  • Makes my life easier as I am using my personalised Windows Live Id (...@mehranikoo.net) for MSN Messenger, SkyDrive, Hotmail and all other Live services. For example, since I will have my friends' contact details in my Live address book, sharing SkyDrive folders will be so much easier.

There are still a number of items on my wish list for both SkyDrive and Hotmail, which I have submitted to the product teams so all I need to do now is to wait and see when those features go live... C'mon guys!

Posted by Mehran Nikoo | with no comments
Filed under: ,
More Posts Next page »