Did you know… How to split windows and Create new windows? – #004

A document split into 4 sections

There are two ways to split the current window:

  • From the Menu Bar, go to Window – Split.
  • Using the mouse, grab the splitter control found directly above the document scrollbar

Document Splitter Control Location

But the split command only works horizontally.  If you need to split vertically (see Program.cs:2 in the above picture), try using the Window.NewWindow command found on the Menu Bar at Window – New Window. Then, as in the picture above, go to Window – New Vertical Tab Group.

Did you know… How to view Visible White Space – #003

ViewVisibleWhiteSpace

A simple, but very powerful, little feature, especially when you deal with white space as much as I did when I tested the editor.  The first time I saw one of our developers using it, I thought, “Yuck!”  But now I’m addicted, even when I’m not testing white space v. tabs.

From the Menu Bar, go to Edit – Advanced – View White Space

From the keyboard, press Ctrl+R, Ctrl+W (using the General Settings configuration)

Note: This command is only available when a file is open.  The visible white space state will persist across new files, reopening files, and, most importantly, Visual Studio sessions.

Technorati tags: VS2005Tip, VS2008Tip

Did you know… How to do Box / Column Selection in the editor? – #002

Box and Stream Selection Comparison

Did you know that Visual Studio offers two different selection models Stream and Box?

Stream selection is what everyone is familiar with using Shift+Arrow Key. 

Box selection allows you to manually select columns and lines at the same time.  Just hold down Shift+Alt+Arrow Key, and you’ll quickly get the feel for box selection.  Cut, Copy, Paste… it all still works, but just keep track of where you started to select the text.  Ah, it brings back testing memories…

Technorati tags: VS2005Tip, VS2008Tip

Did you know… Behold the power of incremental search – #001

Incremental Search Mouse Pointers

I didn’t know about incremental search until someone showed me.  Now I can’t live without it. 

  1. Press Ctrl+I
  2. Start typing the text you are searching for.  note: you’ll see the cursor jump to the first match, highlighting the current search string.
  3. Press Ctrl+I again to jump to the next occurrence of the search string
  4. (advanced tip) Press Ctrl+Shift+I to search backwards
  5. To stop searching, press ESC

Technorati tags: VS2005Tip, VS2008Tip

Introducing Visual Studio 2008 Tip of the Day

It’s that time again… but notice this time it is “tip of the day.”  That’s right.  For Visual Studio 2008, I’m going to attempt to post a tip every day of the work week. Yeah, tip of the day doesn’t work on weekends. =)

The motivation behind tip of the day comes from when I was a SDET (tester) on the Visual Studio environment. I switched feature areas every 6 months (very unusual) for 4.5 years. And whenever I studied the new test bed, I learned so many new features I never knew existed before. Thus one day during the Visual Studio 2005 beta, I started posting these “new features” or tips about how the editor works, how features in the IDE work, and so forth. It was just my personal challenge to see how many consecutive work days I could keep posting a new tip (92 days). And now my personal challenge is how many tips and tricks can I collect for 2008.

Well, here’s to once more with feeling…

Happy Visual Studio’ing!

Lessons Learned Going Open Source with the Power Toys – A Power Toy Story

On our one-year anniversary of our power toys release, I gave a Microsoft Engineering Excellence Talk on the lessons we learned the hard way “going open,” to motivate other teams to explore all the way they can embrace their communities, including sharing source code.  (yes, a broken leg didn’t slow me down at all.)

A Power Toy Story

Our charter is to develop after-market solutions for Visual Studio 2005 that either provide additional functionality or address adoption pain-points.  We based our selection criteria off of the top most-voted customer suggestions.  But why stop there? 

We have conversations around bug reports on Connect, how do I question on the Forums, and even have conversations around the specs we share.  But what could we learn about conversations at the source code level? 

Going open for the first time

We discovered with our 3 projects on the CodePlex Beta that releasing power toys was the easy part.  What we didn’t know was how to run a successful open source project.  For example, “how do you cost the code reviews from potential community contributions?”  and “where do community contributions come from?” 

Where we rocked

With 3 Program Managers, 2 Developers and 1 Tester (Software Design Engineer in Test), we delivered 10 power toy solutions, 2 of which were in the top 40 most-voted customer suggestions for Visual Studio 2005.  We used Scrum, allowing us to do multiple releases each month at various development phases. Additionally, we created the Pack Installer, allowing users to pick and choose which power toys they want to download.  Lastly, each team member has a blog, where we’ve shared what we’ve learned over the past year.

Personally, I’m a huge believer that you learn more from analyzing your failures, so I’ll share with you some very painful lessons that I learned the hard way, so you don’t have to.

Where I failed

The number one thing I would have done differently if I were to do it all over again is to create a single Power Toys for Visual Studio CodePlex project and fit as many power toys in there as possible.  I was too focused on building a successful open source project around the individual power toys, instead of thinking “how can I build the community around a power toy collection?” 

I focused solely on providing solutions, rather than collaborating with the community on incubation-style projects.   Success could have looked like a customer saying, “hey, that power toy was my idea!”

Lastly, I didn’t have a solid story for the Microsoft Downloads Center versus CodePlex.  In retrospect, I would have tried having the Download Center point people to the CodePlex for discoverability when searching, unless user feedback suggested having the Microsoft releases available additionally on the Download Center.

What is OSS?

At this point in the power toy story, I attended James Howison’s talk at OSCON 06. I put together a presentation to the power toy team on the lessons I learned from OSCON, and had Port 25 tape the conversation. Yes, you can actually watch a Microsoft team discuss how to do open source.

Tips going open

The decision to go open must be action-oriented.  You cannot just throw code over the wall and hope for the best.  “If you build it, they will come,”  is just a movie quote.  =)

Thus, decision is all based on motivations.  One common example is to provide additional extensibility points.  Think of reversing the traditional “platform play” (instead of the core being open and the add-ons being closed, have the core be closed and the add-ons be open) to explore all the ways you can collaborate on top of this extensibility layer.

Our power toys with the most community-code contributions were those that we partnered with community members that had a similar need.  For example, MSDN Forums moderators always want to keep track of what was going on.  So Joe spent roughly half a day on a Forums Moderator Toolkit prototype that we released on CodePlex.  And this tool had our most contributions.

Some CodePlex getting-started tips

When you go open, there are a few absolute priority-one must-haves:

  • When users download your sources, they must always just build.  Always build.  Always. 
  • Make sure to provide crystal clear build instructions.  You only get one chance to make a first impression.
  • Always provide a getting started guide on how to use the project.  Screencasts are ideal for this.

And lastly, the project driver / project owner / benevolent dictator should feel free to reject check-ins that are not in scope or go against the coding guidelines, as explored in detail in the lessons learned from OSCON.

Happy CodePlex Community Tips

  • Establish contribution guidelines early
  • Once open, always open is a fundamental rule of OSS.  Avoid internal conversations. 
  • On the same note, conversations must be conducted as close to the code as possible.  When we started, we tried to have a power toy discussion board on the MSDN Forums.  The result was two login systems and a hodge-podge of Q&A across various power toys.  When I got back from OSCON, I manually ported all the Q&A to their individual CodePlex discussion boards.  And this goes back to the, if we just had a single Power Toy codeplex project…
  • Release early, release often is yet another rule of OSS.  Whenever we get a contribution, we create a new minor release.  And now that we release at beta, instead at 1.0, helps us hold true to this release-often rule.
  • Provide ways for the community to contribute to upcoming releases by listing out the needed bug fixes or feature requests.
  • Lastly, something else I learned from James Howison’s talk is that “Ship” is a very Microsoft term, which has its own connotations, implying “supported proprietary software.”  He strongly recommended that we “release” our OSS project, and not “ship” them.

Testing an OSS project

One of the most significant contributions we’ve made is sharing our best practices for software testing.  Below is a “cliff note” version:

  • When we go open, we open everything, from specs, to design docs, to test plans, and test suites.  
  • We use OSS tools, like Nunit and WiX, which go nicely alongside the free Visual Studio Express Versions.
  • When we go open at beta, everyone on the team does a bug bash for baseline functionality. 
  • We also ensure we hit 80% code coverage with our test suites. 
  • We log all known bugs as work items on CodePlex when we go open at beta.

And lastly, our single tester on the team John, who writes all of our automated tests and the automation test infrastructure itself, is the mastermind behind this testing content. He blogs about Testing OSS @ MSFT, in his two articles:

In fact, several of his blog posts were picked up by Mary Jo Foley, as “Just how closely is Microsoft studying the open-source playbook?”  Sweet.

And now… FY08 here we come!!

Going to OSCON, even if I’m in a wheelchair

This would be a good time to recap how i am 3 for 3 getting injured whenever I leave Redmond to do something Microsoft-related

  • Go to Miss State as a returning-alumni visiting speaker:  torn shoulder blade from running through SeaTac airport trying to catch my flight.  Out of training for 3 months
  • Go to the Online Community Business Forum in Sonoma:  Shin splints and a (possible) stress fracture from hiking Mt Si 2x in a row the week before.  Being the 9 weeks on crutches
  • Go to TechEd:  Walking boot too big for me.  Knee goes out. Tendonitis (and something else I can’t pronounce) Back on crutches (week #5 of 9 weeks now)
  • Go to OSCON:  ????

I’m tempted to make a t-shirt for OSCON that says, "Going to figure out OSS@MSFT, whatever it takes," as a walk around on crutches  =)

If you read Raymond Chen’s blog, you’ll find out that he traded cars with me, since i blew out my left knee on my return from TechEd.  As I drove Raymond’s car, he got to drive my ’97 Geo Prizm w/o hubcaps that has nothing automatic (nothing).  To give you a better idea, when i sold it, the trade-in offer was 250 dollars.  (Thank you Raymond!!  I owe you!!). 

Driving Raymond's Car

Anyways, wish me luck at OSCON!  Stay tuned for the trip report.

Technorati tags: OSCON07