Visual Studio as an Application Platform

Josh Holmes blogged about Microsoft as a platform company rather than an application company.  He referred to VSTO as making Office a platform for other companies to develop applications.  He further mentioned Facebook’s recent success as a platform for others to extend.

I heartily agree with everything that Josh is saying.  I think I heard the same argument a few years back.  Jerry Pournelle has said for years that while OS/2 was the better OS technically, IBM wanted to sell the SDK, while Microsoft was slipping Windows SDK CDs in every Comdex attendee’s bag.

I especially endorse Josh’s argument that Firefox is a better platform than Internet Explorer.  It doesn’t have to be that way, but it is, for now.  Firefox has some flaws in its add-in model.  I keep expecting Microsoft to release a managed API like VSTO or the MPF for IE.

Software development is constantly in flux.  Should we build web apps, Windows Forms apps, Click Once smart clients, WPF or Silverlight apps?  For my eight years as a software developer, I have built applications that leverage the power of the desktop computer.  I like desktop apps.  I use web apps, like gmail, del.icio.us and Google Reader, but I prefer a rich desktop application UX.

Perhaps I’m becoming a curmudgeon, but AJAX doesn’t excite me.  It’s still just JavaScript, and it’s still slow.  I’m not foolish, I realize that the trend will continue to be leveraging the web as a platform, as more previously desktop only applications move into the browser, and I don’t think this is a bad thing.

What I know is that no web app can completely duplicate the rich UX of a desktop application, no matter how many smart people argue otherwise.  I use OWA frequently, but it is not a replacement for Outlook.  In fact, I think Outlook is the best example of leveraging Office as an application platform.  The most recent release of VSTO made creating Outlook plugins significantly easier.

If I were still creating line of business applications as a consultant, I would be adding an Outlook dashboard to every client’s system.  Check out TeamLook for an example of what I’m describing.  I keep expecting Microsoft to purchase Personify Design and make Juan independently wealthy.

As I examine my own computer usage I have identified one other desktop application that I believe will not be moved entirely to the web.  That application is Visual Studio.  I use it daily, and I cannot imagine an equivalent experience in a browser.  That is why I have been so stoked about VSX since I first heard about it.

I’m not sure the message has traveled throughout the developer community, but the new Visual Studio 2008 Shell turns Visual Studio into a platform for new application development.  It takes some explaining, but think of Visual Studio as a framework for building an application.  VS handles the main screen, and most of the plumbing, and you as the application developer focus on adding business value.

I’m not saying that the Visual Studio Isolated Shell is the right solution for every smart client application, but if the problem domain fits the Visual Studio tool and command metaphor, then it is worth your time to investigate.  I’ll be speaking about exactly this topic on November 10 at the Memphis Day of .NET.  I’ll also be blogging on Cave Markings about the progress I have made in exploiting the VSX tools for application development.  Stay tuned, the future is bright!

++Alan

What’s Up at Windows Live?

I don’t write blog posts from my desktop PC (or anywhere else, honestly) very often.  I wanted to make a post about some progress I made with the VSX, but I noticed I had an old beta of Windows Live Writer installed on this box.

I downloaded what appeared to be the installer for Live Writer here.  Upon download completion, I began the install only to be prompted to set my default home page and my default search provider to MSN and Live search respectively.  While I don’t like an installation routine trying to change unrelated settings, I will credit the Live team for at least prompting me.  I won’t install anything from Yahoo after they changed my home page and search provider without asking.

Moving on, I encountered a screen asking if I wanted to install additional software with all the boxes checked, of course.  I unselected the additional packages, and looked for a “next” button without success.  I tried cancel, but that wanted to exit the whole install.

I stared at the same dialog while it apparently checked to see if I had Messenger, Writer and Sign-in Assistant already installed.  I don’t why it took so long to check, it obviously new they were installed because they weren’t listed in the additional products section. 

This “Checking for installed products” went on for far too long.  Eventually the installation began, with an update to Messenger that I did not ask for, nor particularly want.  Why does Microsoft continue to insist that they have the right to install un-requested updates on my machine.  At least with the Microsoft Update site I can decline updates.

In the end I have the new version of Windows Live Writer that I wanted.  It “only” took 41 minutes to install!  What is up with that?  Who thought this would provide a good UX (user experience)?  WTF?!?!?

Grrrrr,

++Alan

[Update] It appears that I took issue with the install experience the last time I updated my Live Writer install.

Speaking at Memphis Day of .Net 2007

I’m excited to be speaking at Memphis Day of .Net 2007 next weekend.  I’m a former student at Memphis State… er, I mean University of Memphis, where the event is taking place.  This will be a bit of a homecoming.

I’ll be talking about VSX, and getting into more detail than I have previously.  I’ve been digging deep into the Visual Studio 2008 SDK as work ramps up on VFP Studio.  Now that I have a better understanding, I’ll be able to show how to create and access services in the shell.  Here’s the session description:

VSX: Xtreme Xtensibility with the Visual Studio 2008 Shell and the Managed Package Framework

During this session we will look at ways to extend Visual Studio 2008 using the VS 2008 SDK. We will build extensions using the Managed Package Framework that access the same APIs that the Visual Studio team uses. We will explore the opportunities for distributing tools as packages to users without Visual Studio installed. Finally, we will examine the new possibilities for developing commercial software on top of the Visual Studio platform leveraging the Visual Studio 2008 Shell Isolated Mode.

Check out the rest of the sessions here.  It looks like a great lineup.  I hope to see you there!

++Alan

Jeff Prosise Lights up Silverlight at ETNUG

Last night at our monthly meeting of ETNUG, Jeff Prosise walked us through the basics of Silverlight and demonstrated some of the potential of this new web platform.  I had read plenty of blog posts about Silverlight, but this was the first demo from scratch that I had seen.

Jeff is a Knoxville area resident, and a model airplane buff.  He showed a Silverlight streaming video of his new model jet that he’s learning to fly.  Who knew you needed a license to fly a model airplane.  His initial demo was of a video website that he called “Foo Tube.” 😉

Jeff showed us his MyComix site and his implementation of the Game of Life, Silverlife.  He also walked us through starting a new Silverlight project in both Visual Studio 2005 and 2008.  Jeff is no fan of JavaScript, to put it mildly, and he was particularly excited to show the use of C# for code behind Silverlight events.

While I was disappointed that he didn’t get into the dynamic language runtime in detail, Jeff talked for a solid ninety content-packed minutes.  I always enjoy watching Jeff present on any topic, but he was particularly excited about the possibilities enabled by Silverlight.

Jeff’s enthusiasm definitely rubbed off on me.  I can’t wait to explore the next release of Silverlight 1.1 which Jeff said will be available “Real Soon Now.”  I am especially interested in using the DLR with Linq in a Silverlight app.

Cheers,

++Alan

Uninstall U3 from Your Thumb Drive

I have a SanDisk cruzer thumb drive and I love it… except for one thing.  Whenever it is plugged into a new PC, it autoruns and installs an application called U3 without asking.

Fortunately, Rick Borup pointed me to the U3 uninstall tool.  You have to confirm you want the tool multiple times, but when they let you download the tool, it works as advertised.

Southwest Fox Day 1

I flew into Phoenix Thursday, and lost most of the day to travel + jet lag.  I did get to hang out with Craig Boyd and Bo Durban briefly.  Bo and I made a trip to the airport to pick up Dave Bernard.  Bo rented a sweet Shelby Mustang convertible for the week, so it was a fun trip.

Friday morning I was up at 5:00 am.  Traveling west makes me feel super human. 😀  I wanted to be certain that I had everything ready for my afternoon pre-conference session on test-driven development (TDD).  My concern was that I might not have enough material to fill four hours.  As it turned out, I could have filled an extra hour or two! 

Apparently my preparation payed off for attendees.  I got lots of positive feedback on the session.  Steve Bodnar has a very flattering review here.  I really enjoyed making the audience tell me what to type.  I let them set the requirements, then reason about how best to tackle the problem using TDD.  I had blast, and I’ll probably continue to do talks on agile methodologies. 

At the speakers meeting, I was surprised to hear that I would be giving a keynote address with Craig Boyd!  I’ve never shied away from an opportunity to get in front of a crowd, but I thought that I might hear of this before the day of the event!  Craig and I spent the next hour getting our ideas together, and talking ourselves into a frenzy.  We are both totally stoked about the project we are working on.

Our project is called VFP Studio.  We are using the Visual Studio 2008 Isolated Shell to build an IDE for building Visual FoxPro projects inside Visual Studio.  We have plans to include reg-free COM for enabling click-once deployment of Visual FoxPro applications.  We are working on a VFP project type, so that we can add a new or existing VFP project to a Visual Studio solution.  We keep coming up with exciting possibilities for this project, and we will be announcing more soon.

While the other two keynote demos were definitely more mature than ours, I’m very excited that we were able to take this opportunity to announce what we are working on. By announcing the project last night, we were able to reach the most people who would use VFP Studio in one room.  Ken Levy, former Visual FoxPro PM and current community program manager on the Visual Studio Ecosystem team, was present at the keynote, and helped clarify what Craig and I were doing for curious attendees during the reception.  I can’t wait to see what we have to share at next year’s Southwest Fox conference.

My conference photo album is here.

++Alan

VSX: Iron Cool Stuff

I’ve been combing through the Visual Studio 2008 SDK looking for cool stuff to highlight at DevLink.  There’s plenty to show off in the SDK, but I’m smitten by the Iron Python Integration sample.  This is an example of total language integration. 

It’s nice to see all the ideas about VS Packages demonstrated in one place.  I learn best by taking working things apart.  This is a great resource to pick apart.  Because it is such an extensive sample, including such features as project integration, language service, the documentation is particularly helpful as a map.

Every sample in the SDK has an excellent summary in the SDK browser which points in the right direction before you even open the code and start reading comments.  Here’s an example from the IronPythonProject sample:

PythonProject.cs

Contains three classes related to the IronPython Project: the package, the project factory, and the project node.

Automation.cs

Contains a number of classes that enables automation of the IronPython project and py files in the Iron Python Project. Especially the project object enables the CodeModel

ConfigurationPropertyPages.cs

Contains a defintion for the build property page in the Project Designer.

EditorFactory.cs

Contains a definition for the editor factory that creates the editor for editting iron python code files in code/design view

These descriptions make me want to dive in and see how it all works.  Unfortunately that’s too much detail for my DevLink session. 

If you work with Visual Studio regularly, you will benefit from learning about the inner workings of the tool.  Grab a copy of the SDK and take a look.  If you are at DevLink this week, come by and I’ll try to convince you that Visual Studio Extensibility is worth your time.

++Alan

Page 6 of 18« First...45678...Last »