Audio recording and encoding in Silverlight

A while back, a client asked my company if we could help them with a feature for a web application they were using. They needed to make audio recordings online. Basically the application shows off users portfolios online, and offers the ability to add comments about their work.

So far, all comments and graces have been made using text. But now they wanted to move it into a somewhat more interactive solution, making it possible to record audio comments and thoughts about the users portfolio.

And obviously, being a Microsoft focused company, we came to the conclusion that this would be an easy thing to do in Silverlight. Especially since we all know that Silverlight in later releases gives us access to the users microphone and webcam. So this would be a piece of cake…or would it…?

More...

Accessing Azure Development Storage from Silverlight

I have recently worked on several projects that have been built to utilize the Microsoft cloud platform called Azure. Azure offers a lot of really interesting benefits, and especially when it comes to being elastic. You can basically throw however much data you want at it, and as long as you are willing to pay for it, it will handle it. It doesn’t matter if you throw data at it that needs to be computed, or if you throw vast amounts of data that needs to be stored. Azure will handle it for you.

On top of that, it is really easy to build for. There isn’t really a whole lot to learn before one can get up and running in the cloud. Microsoft even offers a sweet SDK that gives you access to the cloud based services locally on your machine. It offers you the ability to deploy your webroles (web applications) straight to a local “cloud” and debug it. So you don’t even need to have an Azure account to starting to work with it.

More...

Codeplex bonanza… OpenXML library hits Codeplex…

As I mentioned in my previous post, the CommandManager has been moved over to Codeplex. But I have actually created 2 Codeplex projects. I decided to also move the OpenXML code, that I blogged about previously, to Codeplex. It is available at http://agopenxml.codeplex.com/. Initially it is no more than a rewritten version of the code I blogged about, but my goal is to extend it as time goes by. Either by creating extensions of my own, or if I am lucky, by including extensions created by other users.

I am currently working on an article for http://www.openxmldeveloper.org/, which will be about implementing Excel functionality using the library. This article will result in code that will be merged with the current code and extend the Codeplex project with basic SpreadsheetML functionality. I will try to get this up on Codeplex as soon as possible, but I am currently on vacation and will go to Mix10 just after coming back to work. So, if I am lucky, it will go online just before Mix10. If not, it will go online just after…

The CommandManager that never dies…and ends up on Codeplex…

The other day, a reader called MAX pointed out to me that the CommandManager has a major flaw. It stores all commands in a static list. This keeps the garbage collection from working as it should, as the commands are always referenced. The commands in turn reference the controls that use them. So the CommandManager actually keeps any control that uses commanding from being GC:ed. So, because of this, I have changed the CommandManager code once more. This time however, I have not just added some information here and posted the new code for download. Instead, since the CommandManager seems to never die, I have put it on Codeplex making it available at http://agcommandmanager.codeplex.com.

The CommandManager never dies? …have I forgotten about Silverlight 4? No, not at all. Silverlight 4 has a bit of commanding built into it. It supports binding ICommands to Command properties on some controls, such as Buttons. This is great and will definitely limit the need for the CommandManager. The CommandManager has one thing that Silverlight 4 does not have. It supports binding ICommands to more or less any event. So if anyone needs this kind of flexibility, the CommandManager is the way to go…