Visual Studio 2010 Launches Today

Posted by Matt | Filed under , ,

Microsoft is releasing the newest version of it’s development environment today.  This new version is slated to include many new features, not only for managed code, but also for unmanaged C++ code.

The launch is comprised of a 2-day event.  The first day has keynotes and talks about Visual Studio 2010.  Day 2 is the official launch for Silverlight 4.

Channel 9 has it’s own launch center set up to cover the 2-day event.

Microsoft has announced the availability (to download or purchase) Visual Studio 2010.

Windows Error Reporting

Posted by Matt | Filed under , , ,

Microsoft has created their own error reporting system that’s built into Windows XP and Vista.  These operating systems will automatically collect crash data for any application that crashes and upload it to their servers.  There the data is collected, sorted, and distributed to the companies creating the offending software.  I’ve been using the system with my software for quite some time now, so I figured I’m collect my thoughts on the system for people thinking about using it.

From your software’s point of view, there’s nothing you really need to do to get it working.  When your software crashes, Windows will automatically catch the error, as long as you’re not catching it yourself.  It’s helpful though if you properly version your binaries (EXE and all DLLs).  This makes reading the logs later on easier.

In order to see your software crash logs, you need to have a code signing certificate.  This is required to create your companies account with winqual, and this costs some money.  I’d prefer if we were able to use the system without needing this requirement.

Once logged in, you’ll notice that the winqual system does more than just error reporting, but that will be outside the scope of this article. 

In order to view reports, you’ll need to inform the system about your product.  Winqual has a small downloadable application that will inspect your binaries and create a file mapping XML file for your product.  Once you upload the XML file to winqual, the system will start collecting data for your product.

The system allows you to see a couple of different reports:  all crashes by version and hottest crashes by version.  These are the most common ones you’ll use.  It’s nice that it breaks the reports down by product and version.  You’re able to see a list of crashes, sorted by occurrences and counted.  You can see a date break-down for each crash of when the crash occurred.  For many of the crashes, you’re then able to download the crash data for debugging.

What’s missing though is the ability to search for crashes by date.  Given a date, you cannot see what crashes occurred.  This would be useful if you knew that a crash occurred on a certain day, then it would be easier to track down.

As it is now, the system is great for fixing your most common crashes.  However, the system is not good for finding and fixing particular crashes.  There’s no way to link a crash to a customer.  Microsoft says this is intentional.  However, in the end, as a support tool, it fails.

Also, it often takes a week to a week-and-a-half to get updated with crash data.  So you’ll be waiting a while for a particular crash to appear.

On the good side, when you do look at a particular crash and download the crash data, you’re able to easily load the data in Visual Studio 2008 and see the crash as if it occurred locally.  Nice touch.  The initial data does not contain heap data, but you can later instruct the system collect heap data on subsequent crashes.  So produce debugging information for your release binaries and keep archive them.

If you’re planning on certifying your product, the use of winqual error reporting is a requirement.  We were disappointed with this because we had our own error reporting system that we feel better serves support issues.  We got our report data immediately, and we are able to search the data any way we see fit.  Because we certified our product, we had to abandon our better system for Microsoft’s.

Useful Links

Windows 7 Release Candidate Released

Posted by Matt | Filed under ,

Microsoft released Windows 7 Release Candidate 1 to MSDN and TechNet subscribers yesterday.  This should have most of the new functionality we’ve been waiting for (including the new task bar and jump menus).  If you’re an MSDN subscriber, you can download it here.  If you’re not, you’ll need to wait until May 5 at which point, it will be available at the Microsoft Downloads site.

More information can be found at Channel 9.

Related, Windows 7 logo certification is now in it’s Alpha stage.  If you’re looking to get your application certified for Windows 7, take a look at the logo program requirements.  They look very similar to Vista’s.  Later this year, Microsoft will be releasing their logo toolkit which can be used to pre-test your applications.  More information can be found at Microsoft’s main Windows 7 Logo Program website.

Internet Explorer 8 Breaks Visual Studio 2008

Posted by Matt | Filed under , , ,

Be careful, some of the dialogs in Visual Studio 2008 break if you install Internet Explorer 8.  Here’s one example.

In an ATL project, in the Class View, right click on an interface and select “Add Property”.  The following error appears now.

Internet Explorer Script Error
Line: 731
Char: 5
Error: Object doesn't support this property or method
Code: 0
URL: file:///C:/Program%20Files/Microsoft%20Visual%20Studio%209.0/VC/VCWizards/CodeWiz/ATL/Property/HTML/1033/default.htm

The property creation dialog that follows does not work anymore.  Here’s what the dialog looks like now.  Notice the Internet Explorer information bar at the top.

image

I have submitted the issue to Microsoft.  The Connect bug report can be read here.

Silverlight 3.0 for Business Apps?

Posted by Matt | Filed under , , , ,

Silverlight 2.0 brought the ease of .NET programming to web browser based applications.  No more do you need to fidget with javascript.  Instead, you’re able to develop your application using C#.  I loved this when it was released.  Most of the demos for Silverlight 2 that were created were very graphical and multimedia based.  It seemed that Microsoft wanted to really showcase how slick you can make your Silverlight applications.  That’s great for marketing and gimmicky types of applications, what what about business application developers?  What they really need is enhanced tools and frameworks for their “n-tier” systems.  How can we work with data easily?  How can we make network communication more efficient?

Silverlight 3.0 is going to help with this. 

In this video, Brad Abrams demonstrates some of the new features in Silverlight 3.0 that will help the business application developers get more out of their applications.  It’s a good watch.

Similarly, the very next day, IdeaBlade's Ward Bell demonstrates their own toolkit for helping business application developers create great and efficient Silverlight applications.

I think Silverlight is getting alot more interesting for business developers.

Multi-core Support and Parallel Processing

Posted by Matt | Filed under , , , , ,

I have been playing around with multi-core support and parallel processing recently because we want to add multi-core support to our application.  So I’ve been investigating some tools like Intel’s Threading Building Blocks and Microsoft’s Parallel Patterns.

The nice thing about the above frameworks is that they use structures and templates to make multi-threaded programming “look” like single-threaded programming.  They’re pretty good at easing a developer into the world of multi-threading.

For example, both have a parallel_for function which can be used in place of a traditional for loop.  The framework does the dirty work of splitting the loop iterations into separate threads (as necessary).  To the single-threaded programmer, it doesn’t have a very foreign feel to it.

The biggest difference between the two is that Intel’s solution requires the creation of classes to do the loop contents, whereas Microsoft’s solution makes use of lambda functions to put the loop contents inline with the function call.  Microsoft’s solution is less “preparation” and generally looks better to the reader.

Another difference is that Intel’s solution is not free for commercial use.  It’s free for non-commercial use, however.  Microsoft’s solution is not available yet unless you want to use the Visual Studio 2010 CTP.  I’m not prepare for that yet because I’m not willing to move compilers yet, especially this early in VS2010’s development.

So, based on the documentation from both toolkits, I’ve been trying to come with with my own threading framework.  I’ve managed to create my own ParallelFor function similar to Intel’s (I don’t like underscores in indentifiers, instead I like multi-case identifiers).  It works pretty well and it’s good enough to deal with multiple cores.

However, using a simple Fibonacci example based on this video from Channel9, my framework falls apart.  For the 20th Fibonacci number, I get the following results on a dual core processor:

  • Single threaded: 110 ms
  • My framework: 66,812 ms
  • Intel’s framework: 63 ms

I think the memory allocations are severely slowing things down.  Also, I run out of stack in larger Fibonacci numbers, like 31, which run fine under Intel’s and Microsoft’s frameworks. 

Intel’s framework is not easy to use outside of the parallel_for functions, etc.  Microsoft’s framework at least looks easier to use when dealing with pure tasks.

After all this, I just hope that Microsoft releases their Parallel Patterns framework early for Visual Studio 2008.  It looks easier to use and it should be free.

Windows Live Mesh: Day 2

Posted by Matt | Filed under , ,

Yesterday, I installed Windows Live Mesh and set up a shared folder.  Last night, I installed Live Mesh on my home computer.

Immediately after installation, a folder link appeared on my desktop.  The link is to the shared folder from my work laptop.  However, files were not downloaded until I clicked the link and told Live Mesh how that folder should be synchronized on that computer.  After that, I had free access to those files.

Today, I connected to my home PC from my work laptop (at work).  It's nice because my home PC is Windows XP Home (ie. no Windows Remote Desktop).  Using Live Mesh's remote desktop seems to work pretty good.  I think that Windows Remote Desktop is more efficient though.  I am noticing CPU usage on the local PC even when the remote desktop is minimized.

I don't have a Windows mobile phone (I am a BlackBerry guy), so I won't be able to try using that.

I think this is great technology for the right people.  I'm not sure that this is for everyone, except for those who may take work home with them.

Windows Live Mesh

Posted by Matt | Filed under , ,

I am been experimenting with Windows Live Mesh today.  Mesh is a new toy from Microsoft which encapsulates file sharing, file synchronization, and remote desktop access.  It's connected to your Microsoft Live account, so you can login from any computer to access files which you have shared.

I created a "synchronized" folder on my desktop and copied a few files into it.  In the background, Live Mesh synchronized these files onto it's server (be careful about sensitive materials).  I was then able to access these files from my Live Mesh Desktop, which is a virtual desktop not tied to any real computer.  This virtual desktop can be accessed from within Internet Explorer.

You can add any number of devices to your "Mesh".  I've got my work laptop connected and tonight I'll try connecting my home computer.  Currently, only PCs and laptops are supported, but Mac and Windows Mobile devices will be supported in the future.

image

Another interesting feature is the ability to share folders between people.  So my shared folder could be shared between all my devices, as well as my wife's laptop via her own Windows Live account.

It's currently in the "technology preview" stage, which is enough for early adopters to play with, but may not be ready for prime time.

image

Microsoft Photosynth

Posted by Matt | Filed under , , , ,

Microsoft Labs has made their Photosynth technology public.  It's still in early stages, but the results are pretty cool.

Photosynth includes a downloadable synth creator, and a synth viewer web browser plugin.  Using the software, you can take a bunch of your photographs which are of common objects and/or locations, and link them together in a sort of "virtual reality" thing.

I did have my computer lock up on me the first time I viewed the Taj Mahal synth.

I saw this same sort of technology 2 months ago on Panoramio.  I'm not sure if it's the same technology, or if it's competing.  In this site, people don't create their own viewings.  Instead, it's either handled automatically, or the staff link the photos amongst those of different photographers.

This gives me an idea to try to create a Myst type of game using this technology :).

Bring me the blue pages.

Visual Studio 2008 Service Pack 1 Released

Posted by Matt | Filed under ,

It's official.  Service Pack 1 for Visual Studio 2008 has now been released.  It includes a whole wack of bug fixes.  In addition, it includes the MFC Feature Pack which adds many new features to MFC applications.

More information can be found at the Visual C++ Team Blog.

Unfortunately, I don't think my ifstream issue has been fixed yet.