Welcome to MSDN Blogs Sign in | Join | Help

ThinkWeek RTW

Released to the internal web (RTW) anyway J

Much of my delay in blogging has been because I’ve been busy with trying to keep that “work life balance” and something had to give. J In a couple previous posts, I un-characteristically wrote in a style that was a bit more than “just the facts, Jack”. And while I didn’t receive any feedback on my sprinkling in some human attributes in the writings, I have decided to get back to what you may want to know about Microsoft (via my teams’ charter). Unless inquiring minds really want to know more about me (Follow me on Twitter? – Not). While I have led an interesting life and have many stories to tell (just ask anyone ;-) I find it hard to believe anyone would want to follow me for anything other than nefarious reasons.

The ThinkWeek site is an Intranet (internal) site and cannot be found on the public Internet. This is due in part, to the Intellectual Property (IP) contained on this site.

What is ThinkWeek?

 

ThinkWeek is a long-standing tradition at Microsoft, initiated by Bill Gates. It is an open and voluntary forum that enables any Microsoft employee to share his or her thoughts and ideas in the form of a well-researched and thoughtfully written paper, typically ranging from 5-15 pages that will be circulated among leaders in the company.

 

ThinkWeek offers Microsoft employees the opportunity to communicate their ideas and to network with other employees in the company.  It is grounded in the premise that sharing diverse ideas and great thinking are key elements of maintaining our competitive advantage and thought leadership around the world.  Participation in ThinkWeek enables any employee to become part of the rich legacy of great thinking at Microsoft as it builds a culture of well-articulated thought.

 

While ThinkWeek participation is rewarding, it can also be a demanding endeavor and it is considered work that goes above and beyond an employee’s work commitments.  What motivates each participant will vary depending on the individual, and also the work load and the product release cycles in their division.

How does ThinkWeek work?

 

I thought the following would be interesting to add to the post for a couple reasons;

 

1.     There was enough debate and minimally, curiosity, over how a traditionally, Bill Gates centric functionality would/could/should carry-over in a post BillG world.

2.     As Bill may have been considered the hub in a hub and spoke model, it clearly shows how the participants (i.e., Advisors, Co-Chairs, and Reviewers) were and are, the “spokes” of the program/model.

3.     For those that are either new to Microsoft or external to Microsoft, this program and its structure give you insight into Microsoft knowledge sharing and Innovation outlets.

 

The following is taken from our sites F.A.Q. section, so for those readers that work at Microsoft, please feel free to peruse the content for other such information.

 

“Any Microsoft employee can contribute a ThinkWeek paper. Authors begin the process by enlisting an advisor to help them refine their idea by reviewing it and providing feedback.  An advisor should be carefully selected by the author, as the advisor can also help with the research and learning that are part of creating a ThinkWeek paper, and help make introductions across the company to socialize the idea prior to determining whether it should be written as a formal ThinkWeek paper.

 

Once the idea itself has been socialized and feedback obtained, the author can then produce a thoughtfully crafted, fully researched paper.  The advisor must be willing to sign off on the paper in the contribution tool as being appropriate for ThinkWeek.  Once a paper is accepted, it is routed to the most appropriate Co-Chairs, consisting of Technical Fellows, Distinguished Engineers, Senior Technologists, and other executives from across the company.  The papers are then reviewed by small committees of readers, mostly made up of midlevel managers who are subject matter experts, headed by a Co-Chair.  At this time, the paper is also published to the ThinkWeek Web site and is available to all employees for review, comment and rating.  Employees create the Community rating of ThinkWeek papers.  On the other hand, Co-Chairs and Assigned Reviewers create the Co-Chair rating.”


Now that BillG has chosen to focus on the Foundation, why are we still doing ThinkWeek?

 

“While Bill did initiate this process at Microsoft, ThinkWeek has proven to be a vital part of Microsoft’s product and corporate planning discussions, with a long list of successful ventures tracing their genesis to papers contributed and ideas generated each year.  Building on this rich tradition, the redesigned ThinkWeek program cultivates the native engineering and business creativity of our employees, and broadens opportunities for all contributors within the company.“ 


What is the role of Ray Ozzie and Craig Mundie in ThinkWeek?

 

“Ray and Craig were involved in architecting the next generation of ThinkWeek, and will undoubtedly be involved in reviewing papers.  In fact, we have used the “Spotlight” section of the new ThinkWeek Web site to solicit papers specifically addressing next generation applications at the request of Craig because he is interested in the diverse perspectives and ideas Microsoft employees have on this subject.”

ThinkWeek

·         The new program was redesigned based on feedback from Microsoft employees worldwide and includes a wider circulation of papers that are shared and socialized among an influential group of decision makers, managers, and company leaders who have interest in specific topics.

·         We launched the new ThinkWeek site on time, on 7/6/09. Thanks to the team for all their hard work! (Dev’s - you can take those sleeping bags out of the office [for a while anyway J]).

·         Apologies to my family for missing my nieces wedding on 7/4 due to the release. Part of that work-life” balance” ;-) Best wishes Maria!

·         The new site has been well received and we have received several great papers already.

o    Our first paper submission was in the category of Diversity and I love the title “Girl Geeks: Thriving as an Engineer in Microsoft Work Culture”.

·         The paper currently has ~1,948 views and a community rating of 4/5 stars.

·         I echo the comments of Rico Mariani, in that I too have had a number of female co-workers and managers and I believe this diverse exposure has contributed to my personal and professional growth.

·         I was surprised at the statistics on the limited number of female Engineers in our industry. I guess I’ll keep working on my daughters to follow in my foot-steps. I personally can’t imagine choosing a different profession but I support any profession they are passionate about.

·         We did the bulk of the development in Silverlight 3 and we utilized many of the RIA features to build the site.

·         Schedule

o    Call to action - Ok, Microsoft employees - Submit those papers *by 9/17/09*!

o    Sept. – Oct: Co-Chairs manage review of papers

1.     Co-Chair (Technical Fellows, Distinguished Engineers, Senior Technologists, and other executives) who will select reviewers (subject matter experts). These reviewers will read, comment, and rate the papers. The Co-Chair will do a final audit of the review feedback and ratings and then publish the formal feedback for the paper.  In addition, the entire employee community at Microsoft can read, review, and rate the paper online.

2.     Some Co-chair participants include such luminaries as; Qi Lu who is the president of Online Services (e.g., Search/Bing), Anders Hejlsberg Programming Languages Technical Fellow (of C# fame), Lisa Brummel (Senior VP of Human Resources), etc… There are ~46 Co-chairs.

·         MS employees, check out the solicitations for papers if you are looking for a topic.

o    Craig Mundie: The Next Generation of Killer Applications.

3.     Btw, Craig submitted a paper on the subject as well!

o    S. Somasegar: The Future of Client Development.

4.     Btw, Soma’s blog is good resource for Microsoft developer information.

·         Some site stat’s to date

o    Most papers are submitted the day before close, so I won’t call out the number of papers received.

o    We have already received ~15,000 unique visitors. Pretty good considering the total number of Microsoft “FTE’s”.

o    We have ~1,445 subscribers to the ThinkWeek Community news letter.

o    Total Page Views/Hits: ~676,028

I am looking forward to reviewing papers during the ThinkWeek ‘week’ (10/19-10/23).

Good luck to authors on achieving the ‘Best of ThinkWeek 2009’ paper recognition in November.
Posted by JackG | 0 Comments

Technical Strategy Group (TSG)

Following on a previous post, I thought I would talk a bit more on my teams charter, contributions to Microsoft, and some of my areas of responsibility.

TSG Team Charter

The Technical Strategy Group (TSG) works to capture and influence Business, eXperience and Technology direction and opportunities for the company. TSG is managed from the Office of the Chief Software Architect (CSA – That’s Ray Ozzie). The TSG programs ensure long-range customer scenarios and trends are well understood with documented supporting technology requirements and via circulated, well-articulated thought, where there is the highest potential for impact.

Deliverables

Charter, Mission statements, blah, blah, blah – what tangible deliverables am I responsible for, you ask? Surely, your career hasn’t drifted from core Architecture, Design, and Development?!?

As I mentioned in a previous post, I am responsible for the Engineering team within TSG.  Some of my responsibilities are in delivering our web sites in support of our CSA’s charter. Our sites are a bit more than the standard web sites, in that we do a lot of collaboration and/or joint development with teams such as MSR (Microsoft Research).

You can see some of the *cool* technology that we work with in this President Obama inauguration video. Check out the relevance, transcript sync with video frames, and the ability to jump around. While this video is built upon Flash, we use Silverlight 3 for our development J as our sites are quite rich, we take advantage of the RIA (Rich Internet Application) functionality in SL3. We had a seamless upgrade experience from SL2 to SL3, so I would highly recommend the upgrade. I would also recommend the Channel 9 videos on SL and as always check out Scott Guthrie’s blogs on the subject. I’ll come back to some of the technology later. In the mean time check out the Telerik controls we often use.

Before you ask, these sites are Intranet (internal) sites and may not be found on the public Internet. This is due in part, to the Intellectual Property (IP) contained on these sites.

One of the sites/applications we author is the new ThinkWeek site launched on 7/6/09. More on this site and the program in a blog coming soon to a theater near you.

Another site/application we have been supporting is the Quest program that has been helping our technical leaders think through our long-term technical vision. You might have heard recently that the Quest program is concluding and making way for a new way to look at long-range planning at the division level and cross company.  Well, all that’s true, quests were successful and we are now refining what we do to a new level given that we are executing better than we were in those days and we’re structured differently now.  If you would like to see something that was of the ilk of the Quests, check out this totally cool vision video (think CSI: or Minority Report) from the Office labs team on the future of technology and associated user experience. What can I say, but I want it now! And when will that transporter be delivered J Innovation! Innovation! Innovation!  

We have some cool controls we prototyped for the ultimate experience and as I like to do we will utilize these controls on our other sites. I’ll blog more on our site(s) features and technology latter. Stay tuned.

Posted by JackG | 0 Comments

Grassroots Innovation @ Microsoft

I will be blogging more on the subject of Innovation @ Microsoft as well as how our Technical Strategy Group supports innovation within (and external partnerships) Microsoft.

This post follows my previous article on the subject of the long standing Microsoft tradition called “ThinkWeek”.  The program has evolved over the years, due in part, to scale out beyond Bill Gates as the primary audience.

Here is a brief (1:48 min.) video from Bill Gates on Thinkweek/Grassroots innovation.

From You Tube - “Microsoft Chairman Bill Gates discusses grassroots innovation at Microsoft and how "Think Week" has evolved over the years to become paperless, allowing employees to submit ideas online for review by the top 50 technical leaders in the company. Microsoft CEO Summit, Redmond, Wash. May 14, 2008.”

Here is a brief (1:28 min.) video from Ray Ozzie on Thinkweek “2.0”, posted on 6/5/09.

© 2009, TechPulse360.com

Posted by JackG | 0 Comments

Microsoft - The Economy, ThinkWeek, Innovation,...

In my last post I mentioned my new role in the Microsoft Technical Strategy group and the promise of more on the subject. So here is some late breaking news, hot of the press, on one of our programs – ThinkWeek.

Context - Economic Realities

We are all effected (some more than others) by the current World economic conditions and Microsoft is no exception. The news is full of comparisons to the economic crisis in the early 80’s. This current economic down turn brings back some painful personal memories. I graduated from Dowling High School in West Des Moines, Iowa (Home of the best Steak, Corn and Wrestlers in the World) in 1981. Damn, I’m getting old, but like fine wine … After graduation, I soon lost my Father who was a tremendous influence in my life and shaped my core values - Honesty, Integrity, Work hard and be a man of your word to a name a few. I married at the age of 20 in 1983 and I became a father myself (hard to imagine). The stress of trying to provide for a new family during one of America’s most difficult economic down turns since the depression was a tremendous burden.  Iowa was so depressed that I couldn’t find a minimum wage job, even at the typically hiring establishments like McDonald’s. And believe me, when I tell you, that eating government cheese, peanut butter and a meal about every other day (those years of Wrestling paid off when dealing with hunger) makes a job at McDonald’s seem like a glorious thing when you could have had a double cheeseburger with fries *and* be employed. What a treat that would have been.

I typically keep my personal life separate from my professional life, but I wanted to share some personal experiences as they are reflective of these difficult times. As you may have read, Microsoft recently went through a second wave of cut backs in response to the economy. Our team survived, but we lost some very good people as well as some of our program offerings. My thoughts and prayers continue to go out to many of those I know who are experiencing the difficulties I lived through in the early 80’s. Hang in there. This too shall pass.

Context - What is ThinkWeek?

As borrowed from my peer, Tricia Mayer, our much more articulate and capable Director of Marketing and Communications.

 ThinkWeek is a long-standing tradition at Microsoft, initiated by Bill Gates. Over the years, ideas generated through ThinkWeek papers have inspired direction and great thinking. Now that Bill has moved on to a more prominent role at the Bill & Melinda Gates Foundation, the ThinkWeek process is changing.

ThinkWeek is an open and voluntary forum that enables any Microsoft employee to share their thoughts and ideas in the form of a thoughtfully written paper, circulated among influential managers and senior leaders.

ThinkWeek is grounded in the premise that sharing diverse ideas and great thinking are key elements of maintaining our competitive advantage and thought leadership around the world.

 

ThinkWeek and the Economy

Again from Tricia,

As all groups at Microsoft undergo the evaluation of cost to value benefit for programs and projects, we are also applying the same scrutiny to the ThinkWeek program and process.  Until that evaluation process is complete, the ThinkWeek09 cycle has been placed on hold.

I was made aware there was some leaking (outside of Microsoft) of this programs “hold” status, so I felt now was the time (read below) to share some information on the subject from someone (Me) who has first hand information on the subject. Note that we received a lot of feedback from employees on the ThinkWeek “hold” status.

I believe the ThinkWeek concept has been around for ~27years. It has been a long standing tradition embraced by Bill Gates and was affectionately referred to as “the BillG ThinkWeek”, in part, because Bill would take a week off to read the papers and incorporate the input into the fabric of Microsoft’s product development. I doubt Bill truly unplugged. Remind me to tell you a personal experience that has become an urban legend on Bill’s work ethic.

On a personal note, In April 2001, I submitted a paper on MSN’s .Net Migration – “Porting a Multi-tier Distributed Platform”, with a little help from my friends (shout out to Mahesh and Stephen). The paper was based on the re-architecture of our content fetching/aggregation tool I invented and originally wrote in Perl and ported to “Cool”, which was the code name for C#.  Participating in a program that allows you to reach thought leaders and influencers throughout Microsoft was (is) a privilege and an honor. Seriously! I make mention of this, along with my Microsoft ship-it awards, on my resume.

Signs of recovery

There is more positive news about the economy recovering and while certainly not the sole decision to launch the *new* ThinkWeek program, both are positive signs in my mind.

Yesterday, Ray Ozzie, announced in his Engineering Excellence forum keynote (a Microsoft campus event) that the new ThinkWeek program will launch next month!

And again,

Over the past several months, the ThinkWeek program has been redesigned based on the feedback we have heard from Microsoft employees worldwide. The next generation of the ThinkWeek program will be launching on July 6, 2009.”

In conclusion

For those Microsoft employees reading this blog, submit those thoughtful papers and please give me feedback on the new site.

For those that read about the leaked information this should clear things up.

For those that are hearing about ThinkWeek for the first time, this should give you some insight into some Microsoft culture, employee participation in shaping Microsoft, and continued support for invention, innovation, and feedback by *all* employees.

I will continue to share more on the Technical Strategy Group programs (in additional to ThinkWeek) as well as more on innovation and Microsoft culture if my readers find the subjects interesting. Do inquiring minds want to know?

Now I have to get back to work as I recently picked up a number of new work items, requirements, expectations, and a firm ThinkWeek RTW date J

"Lost" and found

Where have you been? Assuming I haven’t lost all my readers by now, due to my silence, this seems to be a reasonable question.

Does anyone out there watch “Lost”? I ended up getting hooked in the beginning and now I can’t avert my eyes.

As I wrote this blog, I felt the “Lost” series seemed to be analogous on a few dimensions ;-) The story line seems to do this Present, Past, Present (and now Future) transition. The show seems to be popular enough, so why not use the theme.

 

The Present

·         Beginning in December 2008 (a few months ago), I was fortunate enough to land one of the best jobs I have ever had (and hope to have/retain – scary times we live in).

·         I am now back in a managerial role as the Group Manager for the Technical Strategy Engineering team reporting to the office of the CTO. The SVP CTO, David Vaskevitch, has quite a distinguished career spanning the creation of MCS (i.e., Microsoft Consulting Services) to building many teams in SQL (e.g., MTS, COM+,..) and I believe he was also Bill Gate’s first TA. At this juncture, I have had only one meeting with David, but I was impressed on many levels. David reports through Ray Ozzie, who is the Chief Software Architect, and is someone that most people think of, as the “new” Bill Gates.

·         My new role is typically called a Product Unit Manager. I have a team of Program Managers, Developers, and Testers. More on my new role later. Remember the “Lost” analogy.

 

The Past

·         First I would like to apologize for my absence in the blogosphere but I was busy wrapping things up on the CLR team wrt Extensibility and the System.AddIn BCL.

·         I suppose I could have started from my last blog post in time, but I think I’ll back up a bit in order to give a little context and some insight into my life’s journey and how my blog reflects that journey. Zen has returned to my life J.  Side note – highly recommended reading: Zen in the martial Arts, a great concise book with pearls of wisdom I use often in my life and career.

·         As I decided to try this blogging thing years ago, I was looking for a theme, a subject, something with continuity. I first started with “Smart Client”, then everything .Net. I wrote about Tools, Extensibility, Add-in’s, Versioning, etc..

o   OK, so I have finally realized what my blog is really about. Drum roll please -  And it is…. This is where a “Lost” episode would end. Keeping you in suspense. Oh, and there would be some hard pounding beat of music as well  – dunt, dunt, da.

·         Maybe it’s with maturity, experience, time, age (arg, age)  that  I finally realized as of this writing that my blog is about my career and life’s journey. I guess in some respects it is a journal or diary of sorts. I often wondered why anyone would care what I’m doing or have done, but I think there is value in sharing ones experiences so that others may (?) benefit. I’m still not sure about that Twitter or Facebook thing though. But I didn’t get blogging in the beginning either. Sure, I understand the Social Networking value, but honestly, who would care what I’m doing right now. <tweet> I’m on a plane coming back from London after visiting MS Research in Cambridge (cool stuff) and I’m writing a blog post </tweet>.

·         As evidenced by my time as an Architect on the CLR team (i.e., .Net framework, Common Language Runtime, BCL – Base Class Libraries) I was pretty focused on the difficult Computer Science problems of; Extensibility, Versioning, Isolation, reliability, Security, etc.. And thus my blog posts reflected this period and passion for helping customers (i.e., primarily ISV/VAR/SI) who wrestle with these issues. It was a very challenging set of subject areas that I pursued, beginning when I was the Group Development Manager for the Visual Studio for Office/Applications group.

·         So what brought me to the CLR team? Inquiring minds want to know. And that’s how that whole “Lost” thing works – Pieces parts you need to tie together. When I decided I was ready to leave the VSTO/A product unit I began looking around the company for challenging opportunities. In one my interviews with the SQL team, I spoke with a wise (now retired) man who asked what I believe in. Aside from my religious beliefs, I said “I always ask myself, what can I do to make our customers lives easier and what can I do to have the greatest impact for Microsoft.” Of which he replied, “so what are you doing about that?” Damn, those wise people (Zen). They get right to it, don’t they. Bring me a problem *and* a solution. As I discussed my recent work on trying to resolve these hard CS problems I mentioned I felt compelled to drive them to some level of conclusion for our customers but it was clear that the solution and current VSTA implementation needed to be available to a customer base beyond the VSTO/A products. He agreed 100% and said this was one of the biggest .Net issues and concerns for SQL (relative to .Net). He then told me I had an obligation to Microsoft and our customers to drive this effort. He told me I needed to speak with David Treadwell, the then VP of the CLR, in order to transfer this charter to their team. Right, I’ll just phone up a VP! Well, to make a long story short, that’s what I did. David was very approachable and along with moving over the charter, I also moved from a managerial role on VSTO/A to an Architect role in the Program Management discipline on the CLR team. To be clear, it took more than a phone call J

 

Recent Past

One of the benefits of working for Microsoft is the breadth of opportunities available within the company. To be clear, internal hiring/recruiting is pretty much treated the same as external hiring. That is, you might think your experience within the company would stand on its own, but you still have to apply for the job, go through several interviews for each job, just as though you were new to the company. After all, you’re new to the new team. I think it’s important to know this, as I often get questions about what it’s like working for Microsoft (everyone says I should write a book). To give you as sense of what it’s like, I can tell you that I had somewhere in the neighborhood of ~40 interviews for various jobs during my last/recent search. And around 9 interviews for my current job. These interviews ranged the gambit of the old, “What is your greatest strength” to “write me a doubly linked list at the whiteboard”

Ok, I’m sorry, but I have to go off on a tangent here - For crying out loud, aside from writing a linked list in school, who has ever had to write one since graduating? If you can’t explain the importance of data structures then there is a reasonable concern. But, I have forgotten more than most will learn in their careers. No, I’m not any smarter, I am just seasoned, mature, experienced.  Ok, ok, I’ve been around a long time ;-) </rant>.

But I digress.

Where was I?

Right. I was searching for a job when I decided to leave the CLR team.

A season ending episode.

 

Time Sequence (Season recap)

Ok, so “Lost” periodically brings together the time line, so let’s do that before we lose our sanity.

1.       Jack moves from the Development Manager of the MSN platform team to VSTO/A.

2.       Jack was Group Dev. Manager of VSTO/A when he decided to start blogging.

3.       Aside from the VSTO/A products, he discovered the need for .Net versioning, Isolation, etc..

4.       He drives moving the VSTA extensibility technology/charter to the CLR team and moves over to the CLR team as an Architect working with ISV’s on the Add-In model.

5.       Blogs a lot about the subject.

6.       Then moves to the Technical Strategy Group.

 

Hey, wait a minute! What happened to the System.AddIn stuff you left behind?

·         This whole “Lost” theme gets confusing doesn’t it? Definitely the last time I use it. Or is it? I think the “Lost” writers make it up as they go along.

·         So what happened to all the ISV and Add-In work we heard so much about? What are you actually doing now?

o   Stay tuned J

Silverlight 2 is here

Delivering on the earlier promise, here are some links to Silverlight v2.

Enjoy.

Posted by JackG | 0 Comments
Filed under: ,

Process Creation and Coordination

In some previous posts (Out of Process IPC/TCP Remoting code, .Net Remoting (AppDomains, Out of Process, Two Way, etc..)) I showed some sample code using .Net remoting over a process boundary. As a result, I received a few questions about the process creation and how to handle the process coordination (i.e., The Host/Master process waiting on the created process startup). I apologize to those who have been waiting for another sample on the subject, but I have been pretty busy as of late.

The attached sample code shows the following;

1.     How to ensure the Host Process waits on the new process creation.

a.     Previously I showed a simple *hack* where the created process sleeps for a while in order to let the process creation complete.

b.     A much cleaner and more reliable solution uses EventWaitHandle.

2.     The created Process runs until the Host Process is terminated or the Host terminates the new process.

a.     Previously I showed a simple *hack* where the created process does a Console.ReadLine() in order to halt code execution and thus cause process termination.

b.     I didn’t show an example of how the created process can shutdown in the event the Host process shuts down. This scenario covers orphaned processes.

c.     The solution: System.Diagnostics.Process.GetProcessById(HostPID).WaitForExit();

View Source for Host Process: Show Code ...

View Source for Created Process: Show Code ...

Posted by JackG | 1 Comments
Filed under: ,

Attachment(s): WaitForProcessStartup.zip

RTM of Visual Studio 2008 and .NET Framework 3.5 SP1 (Client App Deployment)

I wanted to thank all the ISV's, VAR's, and SI's I have spoken with and those who have replied to my requests for soliciting feedback on Client Application Development (e.g., Software as a Service (SaaS) and Rich Internet Applications (RIA)).

This release has a number of significant features and bug fixes.

The RTM announcement may be found here.

Here is a direct link to the Microsoft .Net Framework 3.5 SP1.

Here is a link to Scott Guthrie's blog discussing this release when it was in Beta.

I'm very happy to inform you that your feedback played a significant role in this release, which includes -

"New Breakthroughs for Developing and Deploying Client Applications

The .NET Framework 3.5 SP1 includes the new .NET Framework Client Profile -- the fastest and easiest way to deploy applications for Windows. With .NET Framework 3.5 SP1 and the .NET Framework Client Profile, developers can more easily deploy client applications thanks to an 86.5 percent reduction (197 MB to 26.5 MB) in .NET Framework size. This means that end users will be able to download and install Windows-based applications significantly faster than before. The .NET Framework Client Profile also makes it possible to extend the improved download and installation experience to existing .NET applications.

Developers now can quickly and simply deploy new and existing rich-client applications to a broader audience."

 

Silverlight 2, Beta 2 and the 2008 Olympics

Some time ago I wrote a post about the announced Silverlight 2 product.

While I received a number of favorable comments, I also received some skepticism. We have been working hard on delivering on our goals in the form of providing an amazing media experience for the 2008 Olympics. Here is a link to the NBC Olympic site where you can see the implementation of Silverlight 2, Beta2.

I found the web site (http://www.nbcolympics.com/video) experience to be incredible! I only wish I had the equivalent on my TV.

I hope those who were skeptical, now feel more confident in our delivery. Yep, it's still a Beta (2) but running the Olympics on our breadth of technology should give you a higher level of confidence. Enjoy.

Posted by JackG | 2 Comments
Filed under:

Configuring Visual Studio to Debug .NET Framework Source Code

Earlier I posted a link to the announcement on ScottGu's blog about the framework source availiability for debugging. I wanted to follow-up with my experience using the reference source.

I found the installation instructions on "Configuring Visual Studio to Debug .NET Framework Source Code" on Shawn Burke's blog. I assume there is some official MS site for these instructions but I didn't look very hard. If anyone knows the link please let us know. The installation worked great on my Vista laptop with VS 2008. I did notice that much of the Orcas (i.e., 3.5) BCL has yet to be published. Unfortunately this includes the Managed AddIn Framework (MAF, System.AddIn*) source. I am following up on the Orcas release and I will let you know when it gets published. Enjoy! JackG

Extensibility; Clients and Services calling each other

In this post I will be showing sample code (also found on our CodePlex site) as well as an execution sequence diagram. I will show sample code addressing some frequently asked questions; A Host calling AddIn services, AddIns calling (aka. Automation) a Host, AddIns calling AddIns, Managing AddIns (utilizing LINQ), which assemblies are loaded (Per AD and utilizing direct connect), etc…

1.     A sample Host application that supports calls from the AddIn (aka., Automation) to the Host.

a.     In the past we have shown the Host calling into the AddIn (Sample code), which happens naturally via System.AddIn activation of the AddIn. In other words, the activation of an AddIn allows the Host to call through to the AddIn.

b.     We have shown the *pipeline* allowing the AddIn to automate the Host (Sample code).

                                          i.    As a result of several requests, this is a sample solution showing an end-to-end solution that includes the Host, Pipeline, and AddIn.

c.     In the past I have shown sample code using pure remoting (i.e., No System.AddIn*) for two-way remoting / bi-directional calls (i.e., Host Automation) but now I will show the equivalent using MAF (i.e., Managed AddIn Framework).

Extensibility; Clients and Services calling each other

2.     I am including a Sequence diagram that ties to the Sample App source code showing;

a.     AddIn Discovery, Qualification, Activation, AddIn calls into the Host (aka., Host Automation), AddIns requesting and calling other AddIn services (i.e., Client/Services).

 Sequence diagram of Clients and Services calling each other

3.     Isolation - AppDomains and AddIns/Assemblies activated within each, understanding Activation optimization (i.e., Direct Connect forgoing Isolation), and unloadability (i.e., which assemblies/Types are loaded/unloadable).

4.     Using LINQ to help you manage AddIns.

5.     The benefits of having Adapters, whereby you have code running in the locality of an AppDomain. This is also an example aiding in understanding MarshalByRef (MBRO). 

a.     See List<string> GetASMInAppDomain(string AppDomainName) in HostHelper.cs for comments on the problem and the solution.

6.     New features we included in the latest features we added to the VS2008 3.5 release.

a.     Direct connect Optimization. We have received a few questions on this feature and as such I wanted to clarify the implementation. 

                                          i.    You must enable DirectConnect

1.     AddInToken.EnableDirectConnect = true;

                                         ii.    Our Activate method makes it easy to create an Add-in in a new AppDomain and as a result people are forgetting to pass in an existing AppDomain to the Activate method.

1.     HAV = tokens[i].Activate<IAuthProvider>(AppDomain.CurrentDomain);

                                        iii.    Although we do not instantiate the Adapters we still require them to be defined in the pipeline folders.  As some have pointed out, this may be counter-intuitive.  We took this approach in order to guide you toward the right design (i.e., support for isolation and version resilience) going forward.

                                        iv.    Your Host view of AddIn and AddIn view of Host types respectively, must be the same type (i.e., in the same assembly).

1.     In my sample code I list the assemblies in a selected AppDomain so you can see what is loaded.  In the direct connect scenario you should not see the Adapter assemblies loaded in the AppDomain. 

b.     [ActivatableAs] Attribute enables AddIn side, View Type hierarchies. 

                                          i.    I created an Abstract base class (ABC) as the Base for my views and I marked the ABC with our new attribute [ActivatableAs] which tells us which Base type is used for activating the Addin.  The sample code shows how you can use Interfaces and Abstract Base Classes as views.  This also shows some of the differences between versioning an Interface (which would require casting over time or Adapting) and an Abstract Base Class which allows a little more flexibility in versioning due to its ability to have default implementations. Note that the CLR does not support multiple inheritance so using Abstract Base Classes should be carefully considered.

c.     Custom Qualification

                                          i.    Example of an Addin advertising its demand for activation in the Hosts default AppDomain. The Key/Value pair is nothing more than metadata you may use to suite any need your imagination allows.

d.     FindAddIn

                                          i.    There are a number of scenarios where you may not have a clean directory structure for Add-in’s, or you may not have write access to the Add-in store, or you may not know the location of the Add-in until runtime (e.g., Click-Once deployed Add-in’s), etc..

e.      AddIns calling AddIns

                                          i.    I will show one Add-in utilizing other AddIns that were instantiated by the Host. The AddIn consumer (Client) requests the List of other AddIns (Services) from the Host. This enables the AddIn to consume other services without having to do its own discovery and activation.

                                         ii.    This sample also shows the benefits of Adapter creation helper methods (AuthProviderHostAdapter) and the MAF support for passing Lists of reference types (CollectionAdapters.ToIListContract<> and CollectionAdapters.ToIListContract<>).

1.     For more on Value and Reference type behavior, check out these posts by TQ

a.     Are Arrays OK in Contracts?

b.     Reference vs. Value: Types, Passing and Marshalling

7.     Multiple Add-ins in a single Assembly

a.     Although this isn’t a new feature, I am frequently asked about how assemblies and pipeline segments should be factored (more on this later) and confusion over Add-ins and Assemblies.

                                          i.    Check out the DefaultAuthProvider.cs as an example.

Microsoft announcement of Silverlight 2 (Devices/RIA/Client)

Yesterday, Microsoft announced a significant technology advancement in Rich Internet Application (RIA) platform development.

This announcement was significant on many levels from my perspective. 

  1. It solidifies (beyond SL 1) the ability to use .Net to develop richer (beyond video and media) web client applications. As you may know, I have had strong opinions on the previous Web development experience (Thin Client - Web Clients).
  2. It clearly shows our effort in meeting customer demands to provide a continuum and compatibility of development environments from Devices to Web and Rich/Smart Client applications. Check out Scott Guthrie's blog post with sample code
  3. Providing VS designer support and very rich Expression Studio support for the above. This will further empower designers to build rich client applications with WPF and rich media/RIA experiences with Silverlight.

Check out the Mix08 site for more details, including the keynote.

Some of the coolest things I saw were:

  • The Hard Rock Café demo of zooming in and out of media images and retaining resolution. WPF rocks!
  • The upcoming Olympics media experience was unbelievable. The demo of multiple channels on the screen, the ability to rewind real time events and PIP (Picture In Picture). Unbelievable. Sniff, sniff, I miss my ability to do PIP on my TV. Sad that with High Def, etc... I had to give up on one of the coolest features I once had.
  • Silverlights ability to adjust the streaming experience based on my ever changing connectivity bandwidth was to cool for school.

One other note. I watched the keynote live from my desktop and I couldn't help but wonder how the audience could sit their so quietly when so many cool things were being shown on real bits. We aren't talking vapor or demo-ware here. I haven't been directly involved in the SL development effort and granted I work at Microsoft so I likely bring some bias, and I guess I am more excitable than your average person about where we landed on the ability to develop applications in a very compatible way from devices to Web to Rich Client applications (and maybe I had some influence) but can someone tell me why the audience was not as engaged. I mean, PIP - come on people, that's cool stuff! In any event, as a developer/consumer I am thrilled, as a contributor I am proud, and as a user I don't expect I will leave my DVI flat panel dual monitors during the Olympics.

I would love to get your thoughts on where we hit or missed the mark. Enjoy!

You asked for it (AddIn pipeline generator)

After all, our job is to make your life easier.  I have received a *lot* of requests for a tool that can generate the Add-In pipeline segments.  Ever since we mistakenly left comments in our MSDN articles code about the pipeline source being machine generated, some of you noticed that we may have been working on a tool.  Soooooo, as a continuation of Microsoft's open and transparent developer experience (see this link for .Net framework source code, and this link to view/file bugs, receive early drops, etc..) we just released our pipeline generation tool source code to the community!!! 

The tool generates source code as opposed to a binary (like tlbimp) so that you may alter the generated code.  You may have specific naming conventions, or you would like to contribute to the tools functionality, so you can now do so via Codeplex.  Here is a link to our Managed Extensibility and Add-In Framework source.  We are also adding our sample code from our Add-in team Blog so that we a consolidated source (pun intended).

You can't say I didn't get you anything for Christmas.  Have a great new year!  JackG

Winforms, WPF and AppDomain isolation

We just posted a solution to consider for the F.A.Q. of how to enable isolatable WinForms applications.  Check out this link.  This solution may be considered relative to my previous post and subsequent comments.  Note that WPF startup performance costs may be mitigated by applying the [LoaderOptimization(MultiDomainHost)] attribute to the main method.  This tells the loader that the app expects to load multiple AppDomains with similar code and thus should share the assembly images (WPF NGen images) between AppDomains.

 

Visual Studio 2008 and .NET Framework 3.5 RTM

It's official.  We have released to manufacturing.

I am personaly very excited about the Add-in addtions to the BCL, but you can also find over 250 new features in this release (e.g., LINQ).  Check out the new release here.

More Posts Next page »
 
Page view tracker