Microsoft of the Future is Now

Last weekend my friends from Three Red Cubes Inc. and I were at NBTC. A detailing of the event itself deserves a post, but this post is based on a conversation I had with the CEO of a pretty cool and successful Toronto-based start-up developing software as services using Java-based web-frameworks.

As most of my conversations do, the question came to, “Why do you, as a start-up, use .Net?”

In most people’s perspective, Microsoft’s technologies are confined to being used in the cubicles of high-rise corporate buildings. Images of Windows 98 and XP flash through their minds when you say Microsoft. If you identify yourself as a .Net developer, they look confused, wondering why you don’t look like a nerd or surprised that you are having a conversation, in-person. They probably think you should look a lot like this guy.

Not an image start-ups should associate with. Not one bit.

The new face of Microsoft is not represented by their past image, but it’s not determining the future. The future of Microsoft is being determined right now.

Embracing Open-Source

A few hours before I started writing this, it was announced that ASP.Net MVC 4 and several related technologies are being made available as open-source projects, accepting contributions from the community. That’s massive because ASP.Net MVC is Microsoft’s flagship web-framework of the future. If this is the attitude towards ASP.Net MVC, I can’t wait to see what’s in store.

This is not the first time of course, there has been many more initiatives from Microsoft which are all enumerated at Microsoft Openness. As this push continues, I believe we will see CodePlex and Nuget take centre stage. These are two amazing platforms where open-source is very alive.

Now, there are a lot of conspiracy theories around the reasons behind Microsoft’s push towards open-source. For me, as long as I have personally seen initiatives such as Web Not War in action and as long as the community is being nurtured, I’m good.

Unifying Experiences

Having heard it from Eric Gales at NBTC, I can say that Microsoft’s realization that all technology should be unified is comforting.

Technology-wise, everything is being brought under one umbrella, which is great! Specially as a young developer, I can learn everything I wish to on the .Net web-stack and then transfer these skills to say, game development. And this is not just theory, I am a web-developer by birth but with the guys at Three Red Cubes I’ve worked on more than one game. It’s made possibly by how well the entire collection of frameworks and tools are integrated. They say Visual Studio spoils you, it’s true.

For consumers, learning to use Word or Excel means having learnt to use Office365 or SkyDrive because they all provide an unified experience. This is the case for Windows Phone, XBox and the up-coming Windows 8. They all speak the same user-experience language so we’re always at home.

Engaging Students

From my experience as a student, there is no other company that I know of that puts in so much effort to reach students. Microsoft has teams of amazing people dedicated to running programs for us students. The Dreamspark program is just one of many programs that make software worth thousands of dollars available to us students.

This is to Microsoft’s advantage of course. Students are going to continue on to become developers, consumers and influence the course of ¬†technology and businesses.

Inspiring the Future

Part of building a future is tackling the problems of the present. Imagine Cup is yet another way for Microsoft to encourage students to use their technologies. This time, to change the world and to solve problems experienced by thousands if not millions over the world. Big words? Not at all, this has been the culture of Imagine Cup, see for yourself.

To arrive at anything remotely close to its vision, a world interconnected via technology and the cloud, Microsoft has to work tremendously hard. Maybe five years is a tall order but with all that it is doing, Windows 8, Windows Azure, and .Net technologies, powering forward to a super sleek future is only but a matter of time.

As a start-up, the image we associate with is open-minded, community-involving, forward-thinking and technologically savvy. And this is the kind of future that seems to be in the making for Microsoft. Being as smart as we are, Three Red Cubes jumped on board pretty early. This can only end well.


Multiple Datepickers

Using ASP.NET MVC with Javascript is like a breeze and really quite useful too. I needed to have several date fields in a form for the project I am currently working on. I found jQuery UI to be a great and very pretty solution and thought I might share.

First I got the jQuery UI and placed it in the Content folder of the MVC project. I had put my script in a file called datepicker.js also in the Content folder. They can be anywhere else too, depending on that the following paths will have to be changed. Furthermore the jQuery JavaScript library will also be needed. It’s already there in the MVC project’s Scripts and jQuery UI’s js folder.

Referring to them all:

<link type="text/css" href="<%= Url.Content("~/Content/jqueryUI/css/smoothness/jquery-ui-1.7.2.custom.css") %>" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="<%= Url.Content("~/Script/jquery-1.3.2.min.js") %>"></script>
<script type="text/javascript" src="<%= Url.Content("~/Content/jqueryUI/js/jquery-ui-1.7.2.custom.min.js") %>"></script>
<script src="<%= Url.Content("~/Content/datepicker.js") %>" type="text/javascript"></script>

I placed a wildcard in the datepicker function to pick up any element with date in its id:

$(function() {
$("*[id*=date]").datepicker();
});

Now in the form that contains the date fields:

            <p>
                <label for="DateStarted">Date Started:</label>
                <%= Html.TextBox("DateStarted", String.Format("{0:d}", Model.DateStarted), new { @id = "date1" })%>
                <%= Html.ValidationMessage("DateStarted", "*") %>
            </p>
            <p>
                <label for="TerminationDate">Termination Date:</label>
                <%= Html.TextBox("TerminationDate", String.Format("{0:d}", Model.TerminationDate), new { @id = "date2" })%>
                <%= Html.ValidationMessage("TerminationDate", "*") %>
            </p>

I added the id attribute to each text box that was meant as a date field. It’s important to specify date1 and date2 (in lines 3 and 8) or other unique names containing date because the wildcard would cause any name with date in it to register as elements for the datepicker to be applied on.

Hope it will be useful for someone, it surely was for me.