Monthly Archives: September 2008

Silverlight 2 – RC0 Available

Due to heavy relaxation this weekend – I never got around to post information about the new RC0 of Silverlight.
You’ll find all the details here.

Game Camp : Another great event has been completed

We’ve just finished another event with success.

With the help from our sponsors; MSDN Norway, Digiment, NITH, Treyarch and JetBrains, we were able to pull off another great event. This time around we had 2 separate tracks with speakers for everyone to choose from and great content all the way.

In addition; we got, as always, really valuable help from the Microsoft Student Community at NITH. We would like to thank everyone involved doing this event, we really appreciate it. A special thanks goes to Anders Bondehagen for pulling his network at NITH and other places to make this event happen. To show our appreciation, Anders was awarded an Xbox 360, courtesy of Digiment.

Also, we’d like to thank our speakers for their great help in making the event something to remember; Scott Bilas / Loose Cannon Studios, Eirik Moseng / Digiment, Joachim Barrum / Artplant, Torbjørn Sitre / Funcom, Trond Johansen / Artplant and Jan Kasper Martinsen / NITH.

Until next time.

The future with Microsoft and Windows

I figured I’d give it a go and give my perspective and opinion on what I think Microsoft should do to keep their stand as the marketleader for operating systems (and other software). The last couple of years, the market has shiftet a bit. Apple has been eating slowly into the marketshare, not a true threadt yet – but… This is a good thing, competition is a good thing in all aspects of the software industry. The reason for the shift, I think is complex. Vista got a really bad start with really bad publicity. Some of the bad attention Vista got was deserved, but for the most part I felt it was not fair. I for one was an early adopter and ran it on poor hardware, but didn’t have the same issues as “everyone else” – if you were to believe the media. Sure I had some issues, but as a general it felt good.

That said, there are a couple of issues still, one of the biggest I think Windows has today is its legacy support. Windows is pretty much supporting stuff back to the beginning of the Microsoft adventure of the first DOS. I can understand that legacy support has been really important for Microsoft in order to get to that market position they have today, but things are changing and people are becoming less and less loyal to the operating system and are looking beyond the OS and wants to be able to do certain tasks with the least amount of hassle. Sure, Microsoft delivers all this today with both Windows XP and Vista. People get to connect to the internet, read their mail, socialize through services such as messenger. But still, some of the trouble with the platform today that is causing speed issues and possibly instability, I think can be related to their dedicated legacy support.

The Apple way
Apple and its users has a very different relationship alltogether. Legacy support is pretty much not something Apple need to care about. If one would translate the support into Microsoft terms, the support would be something like this; “we’re supporting Windows Vista and Windows Vista SP1”. Mac OS 10.5 and 10.4 is pretty much what you need to consider when creating software on the Mac platform. They should consider themselves lucky. In addition, Apple has 100% control over the hardwareplatform. Of course, the computers have USB ports and Firewire ports, the hardware you’re plugging in needs drivers and there is a chance Apple didn’t provide them as part of the OS. This is were the Windows users are truly spoiled; the OS comes with drivers for 10 year old hardware.  

Clean slate
So, how could Microsoft go about starting with a clean slate; no windows – something completely new. I think by far the most important product Microsoft has released this year is their Hypervisor. With this as the underlying platform one could easily scrap Windows all together, build a new operating that resides on top of the Hypervisor and provide legacy support for legacy applications by hosting them in a seamless matter through the Hypervisor. Microsoft would need to make a stand and say; let’s come together and define the new platform for PCs with a minimum requirement. Scrap support for legacy hardware, design everything from the bottom up. The integration of Windows would have to be completely seamless, much like coherence is for Parallels on the Mac. You wouldn’t notice that you were running a Windows application or a “Medori” application. Best of both worlds.

In addition to the technical “mumbo-jumbo”, Microsoft should start considering getting the coolnes factor that Apple has managed to get into their products. And a completely consistent look and feel, not only for the operating system and its facilities but also in applications running on it as well.

Being a Microsoft technology entusiast and evangelist, I have a strong believe in their commitment to providing the best tools to the market. Not only for me as a developer, but also to other aspects of mine and others life.

That was my 20 cents for today.. 🙂

The future with Microsoft and Windows

I figured I’d give it a go and give my perspective and opinion on what I think Microsoft should do to keep their stand as the marketleader for operating systems (and other software). The last couple of years, the market has shiftet a bit. Apple has been eating slowly into the marketshare, not a true threadt yet – but… This is a good thing, competition is a good thing in all aspects of the software industry. The reason for the shift, I think is complex. Vista got a really bad start with really bad publicity. Some of the bad attention Vista got was deserved, but for the most part I felt it was not fair. I for one was an early adopter and ran it on poor hardware, but didn’t have the same issues as “everyone else” – if you were to believe the media. Sure I had some issues, but as a general it felt good.

That said, there are a couple of issues still, one of the biggest I think Windows has today is its legacy support. Windows is pretty much supporting stuff back to the beginning of the Microsoft adventure of the first DOS. I can understand that legacy support has been really important for Microsoft in order to get to that market position they have today, but things are changing and people are becoming less and less loyal to the operating system and are looking beyond the OS and wants to be able to do certain tasks with the least amount of hassle. Sure, Microsoft delivers all this today with both Windows XP and Vista. People get to connect to the internet, read their mail, socialize through services such as messenger. But still, some of the trouble with the platform today that is causing speed issues and possibly instability, I think can be related to their dedicated legacy support.

The Apple way
Apple and its users has a very different relationship alltogether. Legacy support is pretty much not something Apple need to care about. If one would translate the support into Microsoft terms, the support would be something like this; “we’re supporting Windows Vista and Windows Vista SP1”. Mac OS 10.5 and 10.4 is pretty much what you need to consider when creating software on the Mac platform. They should consider themselves lucky. In addition, Apple has 100% control over the hardwareplatform. Of course, the computers have USB ports and Firewire ports, the hardware you’re plugging in needs drivers and there is a chance Apple didn’t provide them as part of the OS. This is were the Windows users are truly spoiled; the OS comes with drivers for 10 year old hardware.  

Clean slate
So, how could Microsoft go about starting with a clean slate; no windows – something completely new. I think by far the most important product Microsoft has released this year is their Hypervisor. With this as the underlying platform one could easily scrap Windows all together, build a new operating that resides on top of the Hypervisor and provide legacy support for legacy applications by hosting them in a seamless matter through the Hypervisor. Microsoft would need to make a stand and say; let’s come together and define the new platform for PCs with a minimum requirement. Scrap support for legacy hardware, design everything from the bottom up. The integration of Windows would have to be completely seamless, much like coherence is for Parallels on the Mac. You wouldn’t notice that you were running a Windows application or a “Medori” application. Best of both worlds.

In addition to the technical “mumbo-jumbo”, Microsoft should start considering getting the coolnes factor that Apple has managed to get into their products. And a completely consistent look and feel, not only for the operating system and its facilities but also in applications running on it as well.

Being a Microsoft technology entusiast and evangelist, I have a strong believe in their commitment to providing the best tools to the market. Not only for me as a developer, but also to other aspects of mine and others life.

That was my 20 cents for today.. 🙂

Silverlight Unit Test runner – how does it work?

Before I tidy up everything and publish the source code for the Silverlight Unit Test runner, I thought I'd let you all in on the secret behind it and how it actually works.

The runner is a plugin built for the ReSharper plugin for Visual Studio (a plugin within a plugin – cool). Whenever you open the unit test explorer or do a change and recompile your code, the ReSharper mechanism is to call all plugins and let them gather information about the compiled assemblies and decide if it is a test assembly and then gather the test classes/fixtures and methods for ReSharper. Once this information is gathered, one needs to provide rendering facilities for ReSharper to render the tests in the unit test explorer or other windows it find appropriate.

Then, when you choose to run your tests (either a selection, or all), the plugin starts its trip into some really strange hoops. First we start by copying a specialized test execution engine written in Silverlight and a testpage for it to the destination folder of the test project, typically bindebug under the test projects directory. Then the plugin instantiates Cassini and sets its root path to point to the same location as mentioned before. A windows form is then created with a browser plugin within it and the URL given is the TestPage for the test execution engine previously copied with an additional request string following it with information about what tests to run. The test execution engine hooks up a LogProvider for the test framework by Jeff Willcox and then dynamically loads the XAP for the real test project written by the user and creates a visual for this to be used as the visual root for the application. Now, the tests will run and give feedback to the LogProvider which gathers all the results into an XML. After completing running all the tests, the XML with all the results in it is added to a programatically created DIV object into the DOM of the enclosing testpage.

Back in the plugin we are "listening" to the page and look into the DOM to see if the DIV appears, once this appear we have our result. We parse this result and convert it into ReSharper results and send it back to an internal manager for the plugin. Once ReSharper asks for the result on a callback for all the methods, we ask the manager what the result is and then hand this over.

My original idea was to host a WCF service inside the plugin and let the test execution engine in Silverlight contact the WCF service with results async. This could possibly give a better user experience and give test results as the tests were run. But I guess for now, the way it is implemented works out fine.

Silverlight Unit Test runner – how does it work?

Before I tidy up everything and publish the source code for the Silverlight Unit Test runner, I thought I'd let you all in on the secret behind it and how it actually works.

The runner is a plugin built for the ReSharper plugin for Visual Studio (a plugin within a plugin – cool). Whenever you open the unit test explorer or do a change and recompile your code, the ReSharper mechanism is to call all plugins and let them gather information about the compiled assemblies and decide if it is a test assembly and then gather the test classes/fixtures and methods for ReSharper. Once this information is gathered, one needs to provide rendering facilities for ReSharper to render the tests in the unit test explorer or other windows it find appropriate.

Then, when you choose to run your tests (either a selection, or all), the plugin starts its trip into some really strange hoops. First we start by copying a specialized test execution engine written in Silverlight and a testpage for it to the destination folder of the test project, typically bindebug under the test projects directory. Then the plugin instantiates Cassini and sets its root path to point to the same location as mentioned before. A windows form is then created with a browser plugin within it and the URL given is the TestPage for the test execution engine previously copied with an additional request string following it with information about what tests to run. The test execution engine hooks up a LogProvider for the test framework by Jeff Willcox and then dynamically loads the XAP for the real test project written by the user and creates a visual for this to be used as the visual root for the application. Now, the tests will run and give feedback to the LogProvider which gathers all the results into an XML. After completing running all the tests, the XML with all the results in it is added to a programatically created DIV object into the DOM of the enclosing testpage.

Back in the plugin we are "listening" to the page and look into the DOM to see if the DIV appears, once this appear we have our result. We parse this result and convert it into ReSharper results and send it back to an internal manager for the plugin. Once ReSharper asks for the result on a callback for all the methods, we ask the manager what the result is and then hand this over.

My original idea was to host a WCF service inside the plugin and let the test execution engine in Silverlight contact the WCF service with results async. This could possibly give a better user experience and give test results as the tests were run. But I guess for now, the way it is implemented works out fine.

Clinton Rocksmith joins the Balder team

I’d like to officially welcome Clinton Rocksmith to the Balder team. He will start creating samples and tutorials for Balder and join in on the general programming as well. Clinton has been working with Silverlight for a while now and worked on a Silverlight project for the-hub.tv in New Zealand that you can find here.

So, pay attention to the Balder project over at CodePlex, we’ve got quite a bit of content planned.

Silverlight UnitTest runner for Jetbrains ReSharper

One of the things that I really missed the second Jeff Wilcox released the UnitTest framework for Silverlight, was the ability to run it from within Visual Studio.
The last couple of weeks, I’ve been working on and off a Silverlight UnitTest runner for ReSharper 4 at work (Objectware). And today, this morning, it paid off. A version 0.1 is ready for your pleasure (read disclaimer below) to download here. I will after some tidying, release the source as an open source project.

How to install:
1. Make sure Visual Studio is not running.

2. Create a directory called SilverlightUnitTest in the ReSharper plugins directory,  typically located at C:Program FilesJetBrainsReSharperv4.0BinPluginsSilverlightUnitTest.

3. Unzip the content of the ZIP file into the directory.

4. Add the assemblies (DLL files) to the Global Assembly Cache by opening the cache in Explorer (c:WindowsAssembly) and drag and drop the files into there.

5. Open Visual Studio and go to the ReSharper menu and select Plugins and make sure the Unit Test runner is enabled.

6. Write and run tests. 

The future
There is a couple of things missing or is wrong in the current version, here is a short list of things I can think of. Please don’t hesitate to leave me a comment with features or bugs (dispite the disclaimer below, I will try to handle them. 🙂 )

1. Parts of a window that runs the tests pops up

2. It runs all the tests – need to implement a test provider for the test framework to only run the selected tests

3. Report back the stack trace and more information about tests that fail

4. Cleanup code. 🙂

Disclaimer:
myself nor Objectware will support this software in any way (hence the release to open source in the future), use it at your own risk!

Steve Ballmer is coming to MSDN Live in Oslo 30th of September

Finally, Norwegian developers get the chance to hear Steve Ballmer live on stage. On the 30th of September, Steve Ballmer will be on stage holding the keynote at the MSDN Live event in Oslo.

Who knows, maybe we get to hear his “developers developers developers…” speech.. 🙂

Unfortunately for you guys who haven’t signed up yet, there are no tickets left.

Xna 3.0 Beta available

Xna is on track and you can get your hands on the bits here.

Haven’t had the time myself to look into the details, but I suspect I will seeing we’re hosting Game Camp next week.

Here is a short list of the improvements:

Zune
Compatibility with the upcoming Zune 3.0 Firmware release. Please note that the XNA Game Studio 3.0 CTP will no longer work once you have upgraded your Zune device to the 3.0 firmware.
Improved deployment stability.
Support for Zune deployment on Windows Vista x64 Systems!
You can now use the Remote Performance Monitor for Zune games.

Xbox 360
Xbox 360 project templates (You will not be able to develop on the Xbox 360 until our final release. We felt this was important to include so that you could get projects converted over and look at the system, even if you are not able to run the games, yet).
Support for the Big Button Pad.

Framework & Visual Studio Features
Enumerate and play back media on your Windows computer or Xbox 360.
Simple sound effect support on Windows computers and Xbox 360.
Support for Rich Presence (lets friends know what’s going on in your game).
Support for Invites (ask your friends to join you in a multiplayer game) and Join Session In Progress (after you see what your friends are doing, you can join their current session with just a couple of button presses, even if that’s a different game to the one you are currently playing)
Compress your content and save space with the new content compression features!
ClickOnce packaging support for distributing your XNA Framework games on Windows.
Upgrade your project from XNA Game Studio 2.0 using the Project Upgrade Wizard!
Take screen captures of your game running on Zune through the XNA Game Studio Device Center.
Support for .NET language features like Linq
Create multiple content projects and leverage cross project synchronization in Visual Studio.
FBX importer improvements: read materials containing multiple textures, and export custom shader materials directly out of Max or Maya.