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:
More Posts Next page »