-
In my last posting on the MSDN Briefing I outlined, that I migrated a sample that uses ASP.NET Membership API and Roles API for authenticating and authorizing users. Unfortunately the ASP.NET Membership and Roles API database as we know it does not work with SQL Azure as it uses some features not supported on SQL Azure.
Microsoft fortunately released updated scripts that you can use for creating a Membership and Roles API database that works with SQL Azure and with classic SQL Server:
http://code.msdn.microsoft.com/KB2006191
-
On January 26th I presented at our MSDN-Briefing on Cloud Computing and Windows Azure. During the session I introduced our (and my) point-of-view on Cloud Computing. Within the demos I migrated my good old MicroBlog sample I created for a presentation at the technical university of Vienna last year to run on Windows Azure.
Downloads: presentation here, demo here
Codefest.at posting incl. links to recordings (German, only)
Here are the little challenges I had for the migration outlined (please note, that this is just a simple sample – for bigger apps you definitely will run in some more issues – Rainer Stropek and I will talk about these in our Session at BigDays 2010 in March):
- MicroBlog was a Web Site project – Azure requires Web Application Projects. So I had to convert the project. For doing so, follow these steps:
- Create a new Web Application Project in the same solution as you have your Web Site Project.
- Copy all Contents from the Web Site Project to the Web Application Project.
- Right-click the web application project and select “Convert to Web Application Project” from the context menu.
- Fix remaining compile errors or other errors (namespace changes etc.)
- The ASP.NET Membership API and Roles API scripts and aspnet_regsql both do not work on SQL Azure because they’re using features not supported by SQL Azure. Fortunately Microsoft released a fixed set of scripts and a tool called aspnet_regsqlazure to solve this problem and make Membership API and Roles API available for SQL Azure:
- http://code.msdn.microsoft.com/KB2006191
The remaining parts of the application worked pretty well, of course I extended it during the briefing to use Blob- and Table-Storage. But more on that hopefully in later posts.
-
Today I am ill and lying in the bed with a medium temperature… but honestly, I can’t lie in bed the whole day doing nothing, even when being ill… so I tried something…
First of all, I haven’t invented this article, I just modified it to match a Windows 7 installation running in a Hyper-V R2 environment. The original information is coming from here, here and here.
To use Bitlocker in a Windows 7-Guest on a Hyper-V environment follow these steps:
- Create a new virtual floppy disk.
- Create a new guest VM with the settings you need.
- Install Windows 7 Ultimate on that guest VM. Other than described in the previous articles here, usage of diskpart is not necessary. Just perform an ordinary install as you would do on a physical or any other VM where you don’t need to use Bitlocker.
- Now the trick comes – you need to update the group policy to allow Bitlocker running on a machine without a TPM-chip installed, as Hyper-V. For this purpose follow the steps below:
- Open a Command Prompt as Administrator
- Type gpedit.msc and hit ENTER to start the Group Policy Editor.
- Navigate to “Computer Configuration” - “Administrative Templates” - “Windows Components” - “Bitlocker Drive Encryption” - “Operating System Drives”
- Double-Click “Require additional authentication at startup”
- In here, configure as shown below: Enable the policy and check the “Allow Bitlocker without compatible TPM” option:
- Switch back to the command prompt and type the following command:
cscript c:\Windows\System32\manage-bde.wsf -on C: -rp -sk A:
- Now closely look at the output of the command prompt window. It asks you to restart your machine for validating Bitlocker encryption. Make sure that your previously created and formatted virtual floppy disk remains attached in the VM-settings. Otherwise you can’t boot the machine as the key is stored on this virtual floppy.
- Reboot your machine.
- After the reboot, Bitlocker encryption will start automatically.
Of course you might ask, why I tried this out!?
Well, it happens sometimes that when preparing a presentation or working on a tricky problem for a customer, it’s better doing this at home where I can work quietly and therefore much more productive than in our Microsoft office where every n minutes someone passes by and asks questions or starts a discussion.
At home I am working on my power workstations which are much faster and more powerful than any notebook. The problem - while working at home, I often need full access to the corporate network. This is possible, only, if you have a machine joined to our Microsoft domain and – since the release of Windows 7 – that has Bitlocker installed. And honestly, I don’t want to join my private machine into the corp.-network, so my idea was running a VM on my Hyper-V server at home, that is joined to the corp.-domain
I had a similar idea for another reason – as you know we’re in a team where we’re working a lot with pre-release and beta-software. As pre-release software is typically not performance-optimized and carries a lot of debug-symbols etc. with it, it’s performance requirements are typically higher. So it’s better running that stuff on a physical system. So what my thought is: I have a stable, released-software-only VM running on a Hyper-V in our office, as well, that is joined to the corporate network and that I can use while installing another demo-environment on my physical machine. And again, the virtual machine joined to corp-net must use Bitlocker per our policy. So, another case where Bitlocker in a VM makes sense.
-
Well, one none-technical article as an exception;)
Since last Friday right after the press-conference in New York and the official announcement during Redbull’s media evening in Kitzbühel, Robert John, Lukas Cudrigh and I are especially proud of
http://www.redbullstratos.com (full site)
http://m.redbullstratos.com (mobile site incl. iPhone support)
Robert started the conversation right after an enterprise briefing organized by the account team with Redbull media house about 6 months ago.
Together with Lukas Cudrigh, Director for digital marketing and online media initiatives in Redmond, Robert started the discussion with Redbull Mediahouse on the stratos web presence using Silverlight, IIS 7.0 smooth streaming and ASP.NET ... and a number of other digital media ideas.
The Stratos web site is hopefully just the first visible step of a number of great and innovative projects.
Although I was just a little technical help to make this project real (did some prototyping with Silverlight and also Bing maps etc. but the real implementation of the whole web presence is and was done by Terralever together with Microsoft corp. and Lukas’ team), I think
together (and especially Robert who sat in lots of nightly conference calls with Lukas to finalize the contracts and all related things in time) we can be very proud of this. It’s so great working with a company like Redbull who is really strong in “just doing cool things” (what is very untypical for Austria;)).
I hope you’ll see some of the other things we’ve started, very soon...
It’s pretty cool being part of this scientific trip;)
-
Yesterday someone during our Cloud-Computing chat at derstandard.at (see here) someone asked me why his JavaScript and HTML work in any browser but not IE incl. IE8... See the problem in his code and a solution below (you can download the solution here)…
Problem – He posted the following code below:
When launching his code, IE fails while executing the JavaScript below when trying to set the innerHMTL of the <tr ="q"/> tag. Unfortunately IE's error message isn't really helpful because it just gives us a stupid "Unknown Runtime Error" which is really annoying.
Unfortunately the IE-engine below is right with saying that what we're doing is incorrect, unfortunately it doesn't tell us the reason. So what is the reason? Whenever setting the innerHTML of an element with JavaScript DOM, IE calls an internal method called ValidateObject which validates the current HTML element DOM-tree whether is right or not. The method implements a very strong validation and this validation says, that a <tr>-tag can contain only child-nodes (more exactly td or th) but not any text or HTML. Therefore the method says, that calling innerHTML on a <tr>-element is not valid – you need to add new "elements" to a tr-element (as it can contain elements, only) by using createChildElement() and appendChild(). Scroll down to the bottom of this post to see, which code is working for both, IE and Firefox (I've tested it with IE8 and Firefox 3.5.7!!!).
HTML file:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1... t.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="test.js" mce_src="test.js"></script>
</head>
<body>
<table>
<tr id="q"><td> </td></tr>
</table>
<p><input type="hidden" id="c" value="ab cd e fg " /></p>
</body>
</html>
Javascript file (test.js)
var i = 0;
var j = 0;
var itv;
function init() {
document.getElementById("q").innerHTML = "";
itv = window.setInterval("displayText()", 200);
}
function displayText() {
var c = document.getElementById("c").value;
var q = "";
while (c.substring(i, (i + 1)) != " ") {
q = q + c.substring(i, (i + 1));
i++;
}
i++; j++;
if (j == 4) { window.clearInterval(itv); }
document.getElementById("q").innerHTML = document.getElementById("q").innerHTML + "<td>" + q + "</td>";
}
window.onload=init;
The real Cross-Browser Solution for the Problem:
Okay, as setting innerHTML on a <tr>-element doesn't work, the alternative approach would be using createElement() and appendChild(). I did exactly that and tested it in Firefox 3.5.7 and IE8… and guess what, it works:) see the correct JavaScript-code below (I didn't change anything on the HTML):
var i = 0;
var j = 0;
var itv;
function init() {
var element = document.createElement("td");
var tr = document.getElementById("q");
if (tr.childNodes.length > 0) {
// Remove all childs - we know we have just one
// so just remove the first one
tr.removeChild(tr.childNodes.item(0));
}
// !!! Following line is Wrong,
// !!! because TR can only have "child-Nodes"
// !!! in its object model and not any text or HTML
// !!! therefore --> innerHTML cannot be set!!!
//document.getElementById("q").innerHTML = "";
// Correct way works in both, Firefox and IE
var emptyTd = document.createElement("td");
// Here works because TD can include any text and HTML
emptyTd.innerHTML = "";
tr.appendChild(emptyTd);
itv = window.setInterval("displayText()", 200);
}
function displayText() {
var c = document.getElementById("c").value;
var q = "";
while (c.substring(i, (i + 1)) != " ") {
q = q + c.substring(i, (i + 1));
i++;
}
i++; j++;
if (j == 4) { window.clearInterval(itv); }
// What are you doing below, you're adding
// invalid HTML to a table row element (TR) which is supposed to have
// <td> or <th> elements, only - so don't wonder that this
// won't work
//document.getElementById("q").innerHTML =
// document.getElementById("q").innerHTML + "<td>" + q + "</td>";
var tr = document.getElementById("q");
// Append a new TD-node
var newTd = document.createElement("td");
newTd.innerHTML = q;
tr.appendChild(newTd);
}
window.onload = init;
I hope I answered the question from the chat with this posting and I hope this posting helps others as well;) have a nice day...
-
Yesterday I had the great pleasure of giving a session on Microsoft’s strategy on modeling, model driven architecture and it’s software factories idea. As last year it was great giving the session and I had much fun with it.
Note: I’ve included screen-shots of the demos I built during the session in the presentation for the sake of completeness.
Click here to download the presentation I gave.
Click here to download supporting demo projects.
What do you need for opening the demos:
Visual Studio 2008 Professional or higher
Visual Studio 2008 Service Pack 1
Visual Studio 2008 Guidance Automation Toolkit
Visual Stutio 2008 SDK
Visual Studio 2010 Beta 2 (for the UML and modeling parts)
Essentially the story summarized:
- I think we still believe in software factories, but in a much more pragmatic way than at the very beginnings. As you can see, patterns and practices is working on upcoming releases of all our simple factories for Visual Studio 2010.
- I personally believe DSLs will take off as soon as building DSLs will get much easer. It’s still a path we have to go, but it’s good to know that Microsoft follows this path consequently by improving DSL tools and Visual Studio extensibility.
- We provide and improve our ability in Visual Studio to build Domain Specific Languages and extend Visual Studio with automated tasks in a very consistent way with Visual Studio 2010 (especially ultimate).
- New is our position to UML: with Visual Studio 2010 we started fully supporting the most important UML 2.x diagram types with artifacts needed most of the time. The UML tools are built based on an engine in Visual Studio combined with DGML and the DSL-toolkit which underpins the previous two points. The only caveat is that we just support reverse engineering with the current 2010-version of the diagrams. But I am confident that more will come, especially because the team built really an extensible modeling-engine into the tool-set with VS 2010!!
If you want to read more on current activities around UML, DSLs, the DSL toolkit and the Visual Studio SDK, I’d recommend you check-out the following blogs:
http://blogs.msdn.com/camerons/archive/tags/Architecture+Edition/default.aspx
http://blogs.msdn.com/stuart_kent/archive/tags/DSL+Tools/default.aspx
http://blogs.msdn.com/jmprieur/
-
If you’ve read my previous post on Windows 7 God-Mode, there are a number of further special folder short-cuts you can use in a similar way. The complete list of GUIDs for the special folder short cuts can be found on MSDN here:
http://msdn.microsoft.com/en-us/library/ee330741(VS.85).aspx
-
Hello everybody and a happy new year. I just read a cool blog post from Georg Binder in Austria describing, how-to get to Windows 7 God Mode.
What is Windows 7 God Mode?
A special folder short cut with quick graphical access to an extended control panel with much more configuration options.
How-to get to Windows 7 God Mode?
Create a new folder (right-click and click on “New Folder”). Right-click on the folder and click on rename, copy and paste this: GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}
Thanks, Georg, for posting this… it’s funny:)
-
Sometimes live as a Microsoft-employee is really strange, especially when you find something from Microsoft (!!) that you’ve never heard about as an employee, before – in particular if the thing you’ve found is cool as well.
If you’re a mathematics freak or someone who builds statistical BI-stuff for your CxO you might want to check out Microsoft Solver Foundation: http://www.solverfoundation.com/
Sounds pretty cool, especially as I remember I built at least a matrix-calculation framework in C++ about 10 years ago for a customer for a transport-optimization-system, as well. My heart is rushing:)))
-
Finally the last few hours I’ve been working on a (German) step-by-step guide for deploying applications to Windows Azure CTP.
For Austrian customers we are offering the last available tokens to enable last possible "free access" to Windows Azure before on January 4th commercial operation starts.
Read here how to get your free token (if you are an Austrian customer, only!!!)
Check-out my step-by-step guide on codefest.at to learn, how-to deploy your first application to Azure!
Merry Christmas and a Happy new Year (the first one:))!
Mario
-
At PDC in the expo-hall they have a container as it will be used as deployment-unit in the new Microsoft-Data Centers such as the Chicago data center. Pretty cool, we’ve been looking at this one... pretty funny;)

-
While Max is blogging on codefest.at about todays key note, where Steven Sinofsky came up with a Windows 7 Acer Laptop as a gift for every attendee, I thought it’s a good time for a short note.
In my very personal opinion, compared to last year’s PDC Microsoft’s overall platform story is much more consistent than last year. It’s great to see, how the symmetric platform story (on-premise & cloud) is evolving and is really getting into a strong and easy-to-understand picture.
In my opinion some of the strongest announcements during yesterday’s sessions were the following:
- Windows AppFabric – finally our project codenamed “Dublin” has a roadmap with some cool investments and ideas. Providing a common deployment, monitoring and caching-infrastructure for WCF, WF and applications is a very good step. And in 2010 we will see AppFabric being included in Windows Azure providing the same feature-set as we have it on-premise.
- Common management possibilities for on-premise and cloud-based applications hosted in Windows Azure through System Center.
- Launch of the Windows Identity Foundation (WIF) and the fact that ADFS v2 will get into RC this calendar year and into RTM early 2010.
I am especially conviced by Windows AppFabric as application-server bits built on-top of IIS. Windows AppFabric as a first deliverable for the on-premise world puts together things we know from “Dublin” (WCF and WF management and monitoring tools on-top of IIS 7) and Velocity (distributed caching framework).
And further things are planned in the road map. Especially the long-term vision Microsoft presented yesterday in terms of having a common app-server infrastructure that unifies deployment, management, monitoring, caching etc. across on-premise and cloud-based applications sounds cool. Great is the idea and the vision of bringing the concept of roles such as web roles and worker roles we know from Windows Azure into the on-premise world, as well. Therefore we then would have a fully unified model between the cloud and the on-premise world. That’s really promising…
Also the announcement, that BizTalk Server will integrate with AppFabric and leverage the monitoring and management functionality. That’s nice as then BizTalk will be able to leverage the integrated distributed caching features, the management features etc. Also with BizTalk 2009 R2, the team will add Visual Studio 2010 and .NET Framework 4.0 support – at least promised at PDC 2009;) We’ll see where this journey will go...
I really hope that Microsoft is able to get these ideas on the ground fast:) At least the first bits are available, already:
Windows AppFabric Beta 1 home page:
http://msdn.microsoft.com/en-us/windowsserver/ee695849.aspx
Windows AppFabric for the Cloud home page:
http://www.microsoft.com/windowsazure/developers/dotnetservices/
Windows Identity Framework RTW:
http://www.microsoft.com/wif
BizTalk Server Roadmap including outlook on WCF/WF support
http://www.microsoft.com/biztalk/en/us/roadmap.aspx
News on Infoworld.com about BizTalk 2009 R2
-
This morning at PDC 2009 I joined a session from Mr. Identity himself, Kim Cameron. Kim gave a very interesting update on Microsoft’s Identity strategies.
For me, THE most important announcement was the release-to-web of the Windows Identity Foundation.
http://www.microsoft.com/wif
With that, building claims-aware applications on the .NET platform for heterogeneous environments gets reality. And guess what, now at PDC 2009 they also announced what I’ve been waiting for a while now as customers are requesting that again and again:
Microsoft Dynamics CRM “5” will support claims based on WIF for on-premise, hosted and cloud-instances. - SharePoint 2010 now has officially announced, that they will have claims-support built-into the SharePoint-platform. That means, using SharePoint in heterogeneous environments will get much easier. To give you a short impression, just see the image right to this bullet-point from a session I am attending right now on claims in SharePoint 2010...
A few further announcements I found really interesting in addition to the “cases” SharePoint 2010 and CRM “5”, that were mentioned in the key note today, as well, are
Work on a REST-based authentication kit to support claims for simpler, REST-based scenarios (AJAX etc.) called OAuth Web Resource Authorization Protocol (WRAP) where Microsoft, Google and Yahoo are working together (interesting, but cool;)) - Support for Simple Web Tokens (SWT) based on OAuth WRAP.
- LiveID will become an OpenID provider during the calendar year 2010 as you can see in the image above.
- CardSpace and OpenID alignment in terms to be able to select an OpenID as an easy-to-understand information card from your digital CardSpace wallet in CY 2010.
These are pretty cool news for anyone interested or working on claims-based security...
-
Right before my session is going to start here in Berlin at 5.30 p.m. I found time to upload my demos and slides. The session is all about approaches and thoughts we implemented in a project together with Frequentis AG, a globally active ISV building solutions for public safety. These solutions span air traffic control, maritime communications, police- and fire-department control and communication etc.
All the approaches and information from the session is from a whitepaper I’ve published earlier and I’ve created together with architects from Frequentis.
I’ve published the PoC which is the demo-solution I use for the session earlier, but for TechEd I updated the PoC the whole solution to Visual Studio 2010 Beta 2.
Click here to download the Proof-of-Concept demo app (VS2010 b2).
Click here to download a PDF of my presentation.
Click here to get to the whitepaper we’ve published with Frequentis.
Important Notes for testing
If you want to test the PoC you need the following bits installed on your machine:
Visual Studio 2010 Beta 2
Microsoft CCR and DSS Runtime Toolkit
SQL Server Express Edition (DB-scripts included in the PoC download)
If you don’t have Microsoft CCR installed, then you can remove the CcrManager.cs class in the AsyncDemo.JobLibrary project in the Shared-folder of the solution. Furthermore you need to remove the references to the Microsoft.Ccr.*.dll assemblies.
Have much fun, I hope you enjoy(ed) my session:)
-
Last week, on November 5th 2009, we had our 3rd Interoperability Council in the Microsoft Innovation Center in Vienna. The council is an
independent group of technology experts that discusses current interoperability-challenges between the Microsoft platform and other platforms.
Of course a special focus of this group are local and regional standards as global standards are mostly addressed by the Microsoft corporation, itself. During the meetings we typically discuss current issues and try to identify ways (processes, approaches etc.) for solving these problems together. We are really running this in a very pragmatic way – as soon as the council identifies benefits for all parties (customers, partners, Microsoft), we try to find ways for taking on the challenges.
Results from the council of the previous months
The council was founded with his first meeting on February 10th 2009. In this first meeting we also identified a few potential challenges. For two of them we organized what we call interoperability labs, for one I’ve written an article and published it on my blog last week.
In a lab we typically setup 2-3 workshops of 1-2 days with a small sub-group of the council and experts the members of the council are brining into the game. During these labs we either really work on concrete concepts or even source code (depending on the type of
the lab) to solve a certain, strategically important challenge. The idea is really to bring together a group of bright people in a very pragmatic way and try to find ways for dealing with interop-challenges identified by the council. If we come up with concrete results then it’s a success, if not, then we know at least, which further actions we would need to take for dealing with a challenge, how big the necessary investment would be and whether driving further investigations is worthwhile or not! Fortunately with the previous labs we were successful. The results of our council are remarkable:
e-card Interop-Lab
Published Open Source Components
Published a business-article (German) on our team-blog
Published a technical article of the results on my blog
e-Government Portal-Connection-Protocol
Published Open Source Components
Whitepaper on supporting this Austrian eGovernment standard
Identity Interoperability
Article on Identity Interoperability (incl. PoC with Metro/WSIT)
If you are interested, then just read on our team-blog on the council (German, only). Now were going into the next phase and looking for further, important interop-challenges. Let’s see what happens and what the council will come up with in the next months!
Cheers
Mario