Ioan Lazarciuc's Weblog I program, therefore I exist.

28Jul/105

Debugging Silverlight Sidebar Gadgets from Visual Studio

Ever since I started working with Windows Sidebar gadgets I’ve been debugging them the same way: enabling script debugging in the IE options (for JavaScript based gadgets) and then using the “Attach to Process” command from Visual Studio.

When I created a template (posts here and here) that speeds up development of Silverlight Sidebar gadgets, I wanted to offer the smoothest development experience possible. Ironically, that in itself has been a very bumpy ride. The last hurdle I had to cross was to provide the familiar debug experience (F5).

25Apr/102

Custom Parameters in Multi-Project Templates

Visual Studio project templates offer two ways of specifying template parameter values:

  • In the .vstemplate file, using a CustomParameters section, as described here.
  • Using a template wizard in order to specify run-time values in the IWizard.RunStarted method, as described here.

The problem is that these mechanisms don’t work as one would expect in the case of multi-project templates. The parameters specified in the root template are not picked up by the child project templates. I tried to find a workaround online but could not find anything. Finally, I came up with a workaround of my own.

9Apr/1051

Update for Silverlight Sidebar Gadget Project Template

For the past few weeks I’ve been working on fixing a number of bugs signalled about the Silverlight Gadget Template I created a while ago. I’ve had to work around some strange issues and try everything I could to make the gadget development experience as pleasant as possible. I’d like to thank Kiran Bachu for his valuable support in finding bugs and testing the gadget template.

Version 1.8 of the gadget is released for the following Visual Studio/Silverlight version combinations:

23Mar/091

XNA Streaming – Part4

In the previous parts of this articles I’ve talked about the service components of the XNA Streaming system. In this part, I’m going to talk about the Communication Broker.

The role of the Communication Broker is to cover the communication with the Streaming Service. By doing so, the code required of client applications is simplified, and less duplicate code will be generated for each application using the system. the broker also caches all variable changes and periodically sends all changes accumulated to the service, thus reducing the number of calls per second required by a single client to a predictable amount.

27Feb/090

XNA Streaming – Part 3

After quite a long break, I resume the series of articles on my XNA Streaming project by describing the actual Stream Service component. This component is responsible for transmitting the broadcast information to all connected users.

The information is encoded in (<property name>, <value>) pairs. All serializable data types are supported for values. Users register with the Stream Service either as Broadcaster or as Observer. After this step, the Broadcaster uses the service to send updates for information (property-value pairs). Observers get notified by the service of the updated information via a IXNAStreamCallback callback contract, a feature of WCF services.

26Oct/080

XNA Streaming – Part 2

In part one of this article, I did an overview of the XNA Streaming project. In this part I’m going to describe the File Transfer Service.

The main responsibility of the File Transfer Service is to provide access to streamable games. The service stores the game files in a database table, together with their relative file paths. This way the file system structure can be recreated when downloading the game. The game’s name, author and a short description are also stored in another table.

21Sep/080

XNA Streaming – Part 1

Introduction

As I mentioned in my previous post, at this year's Microsoft Community Bootcamp I entered in the demo competition together with Adi. We've had some issues in the past with (cheap) broadcasting of presentations. There are plenty of professional tools out there that accomplish this goal, but that's not my point. My point is that I have not yet found a cheap (free) utility that will allow me to give a presentation to several viewers that may not be in the same room (or the screen isn't big enough for the whole audience).

Given this background, Adi proposed we create a way in which several people can see the same thing that a broadcaster transmits. Further, the "thing" that everyone sees is actually an XNA game, that could might as well be an interactive presentation in 3D.

18Sep/080

Microsoft Community Bootcamp v5

IMG_0047During 11.09.2008 and 14.09.2008 I attended the fifth annual event dedicated to Microsoft professionals from the industry and academic environment. I also attended last year and wrote a bit about the experience here. A change from last year's event was the fact that this year, the professionals invited were almost as many as MSPs (until now,  only a handful of MVPs had been invited). The location was Vatra Dornei. Possibly due to the fact that the bootcamp was held later than last year, it was much colder (and so we were "encouraged" to stay indoors or dress "heavily").

2Aug/0861

Creating a Vista Sidebar Gadget Using Microsoft Silverlight

Introduction

Some while ago I did a post on how to create a Vista Sidebar gadget using JavaScript. I also mentioned that I tried to create the gadget using XBAP or Silverlight, but due to the limitations in those technologies at that time, I decided that I had to give up on too much of the Sidebar gadget specific functionality (flyouts, cross domain data retrieval).

More than 6 months have passed since then and now I am pleased to announce that I've changed my opinion regarding Silverlight Sidebar gadgets. Due to the fact that the Silverlight technology has matured a lot (version 2.0 beta 2 is now available), Sidebar gadgets can be developed using this technology, without sacrificing any Sidebar gadget specific functionality. This is due to the fact that there is full interoperability between Silverlight and the JavaScript code. Also, cross domain calls are now allowed in Silverlight, so retrieving data is no longer an issue. Furthermore, it has been greatly enhanced due to the fact that one can consume WCF services using Silverlight.