Making F1 Do Something Useful in Visual Studio

Have you ever wished that hitting the F1 key in Visual Studio actually returned good search results in a quick manner? 

Personally I think the F1 key returns decent results, but there certainly are a lot out there who don’t.  I mostly work in .Net so I’m in the camp of users that F1 works well for.

The think I really don’t like though is the 30 seconds or so it takes to launch the help window.  Once you’re there navigation is pretty painful.

For the last several years I’ve all but abandoned F1 and just search Google with “msdn” and my search term.  95% of the time this returns exactly what I want in the first hit.

Wouldn’t it be nice if we could make Visual Studio do this for us?  Well, we can, and have been able to for years!

Check out OriginalGriff’s solution on Code Project.  He clearly outlines the steps and I have to say his solution is quite nice and tidy.

However, I had two very minor criticism, purely for my own tastes.  This solution opens the webpage inside of Visual Studio’s web browser inside the IDE.  This works, but I really like using my own default browser (currently Chrome).  This allows me to open up various hits in several tabs and bookmark interesting solutions.  I can’t do that in the VS browser window.

Second is it grabs the selected text and performs the search on this.  If you don’t select anything it just opens up a search for “msdn”.  The original F1 functionality use to search whatever word your text cursor was on, nothing had to be selected.  I’m lazy and I like this ability.

Last, but not least, as I was writing this blog post and stated above that 95% of the time my search term came up in the first result it hit me. OMG If I think that what I want will be my first hit, why not just return Google’s first result; the equivalent of hitting the older I’m Feeling Lucky button on Google’s home page. If you look at Griff’s solution you will see below it that I proposed an alternate solution that adds these three features.  Now, when I hit F1 or Shift+F1 I, respectively, get the Google search or the first hit directly.

Enjoy!

Windows 7 Phone, on it’s way!

We had a great time at the Inland Empire launch of the new Windows 7 Phone.  I got to present on developing for the phone along with Dustin Davis and Oscar Azmitia.  James Johnson and the Inland Empire .Net Users Group hosted the event at DeVry University.  Fun was had by all.

I recorded the sessions so I will have them up soon for all to see how we did.

Take care and happy developing!

Apple releases its MacPaint source code to the Computer History Museum

This was a fun article I just ran across at Business Week:

http://www.businessweek.com/technology/ByteOfTheApple/blog/archives/2010/07/apple_donates_macpaint_source_code_to_computer_history_museum.html

I used Mac Paint on the Mac Plus and I would definitely call it revolutionary.  Yes the Amiga, and several others, came out with competing or better products, however, for me in a new Mac world coming from the IBM PC clone world this was amazing. 

And, in contrast to one commenter who said it was a neat demo and nothing more, we used this in our desktop publishing all the time.  We could finally create and manipulate graphics and logos for newsletters, business cards, etc.  For a small business it really made us stand out.  Hardly anyone in the mid-80’s had this capability for so cheap.  It usually required a large print house with expensive machines.  Now we could put a real professional touch on customer documents.  B/W art was definitely used on probably 90% of print output at the time so having a color capable utility didn’t offer much when it came to a hard copy.  MacPaint really allowed us to push the boundaries.  With a Mac SE/30 and an Apple LaserWriter II we were producing high quality professional documents for clients for less than $7,000 in the late ’80s, which at the time was simply amazing.

I’m sure others out there could have done something similar with Amigas, PCs, etc, but for us this was a game changer. 🙂

I love seeing recaps on older history like this, for any company, not just Apple.

We’re all still kids, just with bigger toys

I just saw this article:

http://www.tomshardware.com/news/SFF-RAID-HDD,10319.html

It’s an amazing feat by Will Urbina.  He has an amazing tool shop and knowledge on how to use them.  He custom built his own Small Form Factor case that holds 8 2TB drives for a total of 14 TB raided.  Pretty amazing.

I would count this as a great version 1.0 product.  The two changes I would make for v2.0 would be:

1) Accessibility: I would mount each drive into a removable tray. Changing the drives out is going to be a bear. Having removable trays would not only make this a snap but also allow for hot swapping, a real help when dealing with RAID failures. If you can get a tray with built-in heat sinks for the drive that will lead nicely into my next recommendation.

2) Heat: The heat issue should easily be solved by putting heat-sinks on the drives (or heat-sink trays as mentioned above). Then simply seal the box, put vents on the front left side and channel the air through the front left, across the drives to the right and through the back. The drives will need more spacing to accommodate the trays and airflow but maybe you could switch to 2.5 drives. This will definitely take some engineering, especially to work around removable drive trays, but proper sealing and a good fan in the back would give a good airflow. May need to increase fan speed or add additional fans to the front intake.

 

Awesome idea.  I have a few tools in my tool shop, some of which were gifts, others bought new for projects, and others picked up on Craig’s List or garage sales.  With only a 2 car garage and 3 young kids I have no workshop. :)  But, I have the dream of slowly adding to my tools each year and someday building a sizable work shed in the back.  I would love to be one of those dads that has tools and builds things with their kids.  I always envied my friends who had this and their dad’s shop at their disposal for inspired ideas or school projects.

Ideas like this keep me hoping that this will be a reality someday.

Great job Will!

Metroid Prime Trilogy on the Wii – What a fun game!

I don’t know if you ever played any of the Metroid games on the classic Nintendo.  I did and loved them. image

I just picked up the new Metroid Prime Trilogy for the Wii.   It’s actually the first two trilogy games that came out on the Nintendo GameCube and the final chapter that came out on the Wii.  The GameCube versions were revamped to use the Wii controllers.

I have to say, this is one of the most fun games I’ve played in a long time.  I’ve played a few first person shooters on the XBOX or PS2 but the controls just haven’t been nearly as comfortable as my keyboard and mouse that I’m used to.  I still haven’t tried The Force Unleashed on the Wii but with Metroid I feel like this is the first time that they have gotten it right.  You use the nunchuck for the movement and use the Wii remote as your targeting and viewing.  Buttons on both controllers facilitate the myriad of actions you can perform.  Honestly, this setup is more natural and fun than any I have ever used on a console or computer.

The storyline game play are really a lot of fun.  If you’re a fan from the older series then seeing familiar characters and hearing the music will bring back a lot of fond memories.  Sometimes when 2D games get brought into 3D it’s done in a very kiddie or cheesy way, or sometimes just doesn’t translate well at all.  However, seeing my old 2D side-scrolling nemeses in full blown 3D moving around in live space is just awesome.  They aren’t bloated cartoony characters (like many of the Nintendo games turn out to be) but are realistic representations of what you would expect to see.  The scenery is great and the worlds are really well designed.  Between the game play, world design, storyline, attention to detail and music this is really a top-notch game you can get totally engrossed in.  I’ll start playing at 9pm and Eva finally calls me to bed at 11pm without me even realizing what time it is. 

I’m still only at the beginning of the first game.  For $50 it’s a pretty standard price for a Wii game but since there are three in the pack I really feel like I got my money’s worth.  Like I said, I’m still on the first chapter, which is really a GameCube game but it’s still pretty awesome.  I can’t wait to make it to the final third chapter that was developed for the Wii from the ground up. 

My Planned VHD Organization

In my last post I talked about wanting to move my entire computing environment over to VHDs.  Not just a development environment or test environments but everything.  This would include a general work VHD for my wife and I, a video production VHD for all my video stuff, a production development VHD, various server VHDs (mostly for use during development using Virtual PC) and whatever test VHDs I want.  I would no longer be booting into a standard operating system installation as we have been since the beginning of personal computers.

Some of you might be thinking,”Why in the world do this?”  Well, the last time I had to rebuild a computer it took approximately 2 days.  This included installing the O/S, MS Office, developer tools, all my utilities, plug-ins, and all the updates.  This is wasted time.  Plus, there are often times that I’ve loaded a tool I wanted to check out only to find out it has hosed something of my system.  Maybe it’s not something critical but it’s enough to force me to spend a few hours trying to weed out what files or settings got changed.  If I could test out tools in a exact and isolated environment just by copying my current VHD how incredible would that be?  Plus, assuming I backup my VHDs regularly, let’s say I got a really nasty virus or something that wiped out my system.  No big, I just delete that VHD and restore it from the backup.  Since we’re talking about an entire VHD it’s just a file copy, not a restore that takes hours.  Talk about system restore. :) 

So, as usual, before I start researching the details of how things work my wheels started spinning faster than a hamster running from the cat.

I heard about differencing disks and started looking into them.  Differencing disks allow you to create a “parent” VHD and a “child” VHD.  For instance, a common example is testing how your website looks with different versions of IE, which cannot be installed simultaneously.  You create a parent VHD with the operating system and whatever other software you want in the base.  You then create several child differencing VHDs that reference the parent.  Each child has a different version of IE, so one with IE 6, one with IE 7 and one with IE 8.  The child VHDs are called differencing disks because they only contain the information that is “different” than the parent.  You can also use a child differencing disk as a parent to another differencing disk, thus chaining them.

This really got my heart going.  I instantly thought of a grand hierarchy design like the following:

VHD_Original_Layout

The base Win7 VHD is the only true parent.  All the others are child differencing disks.  I could update the base Windows 7 VHD with whatever updates Microsoft would throw out and all the other VHDs would get it.  All bottom level child VHDs (video, production, test, etc) would have Office, Windows Live, etc.  It seemed like a perfect environment.

Here’s the catch.  A parent VHD cannot be changed.  If you do so, the child differencing disk will be corrupted (because the differences no longer are current) and you will loose the child VHD and all data in it.  Microsoft even recommends that you set parent VHDs to read only to protect against inadvertent changes.  Wow, that’s a real bummer.  I believe some of the enterprise level virtual vendors let you do scenarios like this across serves, thus making it easy to deploy updates and all, but that doesn’t help me.  I want to run native VHDs on my Win7 machine.  Oh well.  Scratch that.

I think technically this could be set up just for the sheer exercise, though I won’t bother to take the time to try it.

So, now that reality has stepped in how do I plan to set this up?  I’ll have a separate standard VHD per environment with no differencing disks.  A great tip from Stephen Rose during his Virtualization 101 for Developers presentation was to make copies of your base VHDs, mark them read only and put them in a backup folder.  That way if you ever want to create a new one you don’t have to start from scratch. 

So, I plan to create my base Win7 image.  I’ll put a read only copy of that into a VHD Backup folder.  I’ll then install Office, Windows Live, etc onto that image, and put a read only copy of that into the backup folder.  At this state this is my general use VHD.  I’ll make a copy of that, rename it as my video production VHD and install my video production software on that.  I’ll make a read only backup of that as well incase it gets hosed or I want to try out some fancy new video software in the future without harming my current VHD.  I’ll make another copy of my general use VHD, rename it to my production development VHD and install all my development software.  You get the idea.

When you boot off of a VHD you always have access to the base C drive (which will be a different drive letter).  So, as far as document storage there are details there I’ll have to work out.  I don’t know how security is worked out but I doubt I’ll be able to access documents in my original My Documents folder.  I’ll have to see what the best practice is out there.  I’ll probably have a generic data storage folder on the C drive that I’ll keep all of my documents in.  I only have one drive in my laptop so I can’t throw everything onto a D drive like my desktop.

Just a few tips to leave you with:

  • Backups are important!  VHDs can get quite large and so are my video files.  While most other documents are small and I can use some sort of cloud storage for my documents or versioning system for my code this won’t save me the time and hassle of losing my VHDs.  I have yet to see an online backup provider like Mozy or Carbonite that has the upload bandwidth I would require for something like this.  I’ll plan on having a couple of eSATA drives that I can back up to on a regular basis.
  • You can’t boot from a VHD on an external drive.  That’s just the way how Microsoft’s I/O mini-port driver works.  They probably did this to make sure you can’t set your laptop to boot from something that might not be there.  Plus, if your external drive got disconnected for any reason, such as a loss of power or your USB cable falling out, it might instantly corrupt your VHD.
  • If there is not enough drive space to expand your entire VHD you can’t boot from it.  For instance, let’s say you have 250GB available on your hard drive and you create VHDs that can expand to 150GB.  If over time you get to a point where you don’t have at least 150GB available to the VHD (including the current physical size of the VHD) you can’t boot into it.  Until you can get rid of some data that VHD will be effectively unbootable.  This is probably a good reason to keep your existing O/S on your system rather than having a pure VHD system. 

I’ll keep updating how it goes. 

Netflix and the Extinction of DVDs, et al

It was recently announced that Netflix will add streaming to the Nintendo Wii as one of its capabilities.  They already stream to personal computers, the Microsoft Xbox, Sony Playstation and various small devices.

As we just received a Wii for Christmas I am excited to try this out.

As a technology geek I have long thought out how to move my entire media collection (photos and personal videos, music and DVDs) to a computer in our house that we could watch from any tv or listen on any stereo.  This is already easily done but the funds are a little out of reach for our growing family and it certainly isn’t available for the masses.

That’s where Netflix comes in.  They revolutionized the DVD rental industry when they allowed you to rent through the mail with no late fees.  While I was dubious at first at whether their business model could really turn a profit with that much overhead they have done an incredible job.  I’m really glad they have made it through the roughest part.

When Blockbuster saw the competition Netflix was creating they started their own DVD rent by email service, however, they one upped Netflix by allowing you to return them back to your local store.  With Netflix you had to send your DVDs in before they mailed you your next batch.  With Blockbuster, you could return your DVDs back to any local store and rent another right there.  No waiting.

Around the same time Apple thru iTunes, Amazon and Netflix allowed you to download your movies.  However, this was really confined to users who watched on their computers or had laptops or iPods connected to their TVs.  This was a very small market mostly consisting of consumers with technical knowledge able to afford the equipment or college students.

However, then comes Netflix streaming content to the Xbox, Playstation and now Wii.  Suddenly they have an audience that is already familiar with playing rich content on their own devices.  Console gaming devices are almost as much of a part of any home entertainment system as is a DVD player or stereo system.  These days connecting gaming systems to the Internet is a simple task. 

In my opinion, Netflix is the leader in bringing true streaming movie content to the general masses.  While cable and satellite companies have been offering this for years it just hasn’t really caught on.  In talking with my friends, we all have cable or satellite offering the feature, but we just don’t use it.  I don’t know if it is the limited available content or the pricing.  But we just don’t use it.

Another incredible thing that Netflix has done is completely change the overhead they are required to keep.  As they move more and more of their customers to streaming content, their assets will be completely digital available anytime and anywhere in an instant.  There will be no need to ship physical and fragile media all over the country amounting to an incredible cost in shipping time, warehouse inventory, staff, etc.

By giving the general media consumer instant access to movies on general devices they already own Netflix is pushing the DVD out to pasture and really making content over the Internet a reality.

There will always be consumers who prefer to own physical media, but the writing on the wall is even more pronounce than ever before.

When I have a microphone is it a mic or a mike?

Hah, this one has plagued me for years.  Not anything serious but it’s bugged me every time I have write something in past tense.  For instance, “I miced the stage.”  That just looks weird.

So, today I finally did a search on mic versus mike and I found this great article from Sam Bayer:

http://www.sambayer.com/tirades/whymike.html

A little heavy on the academic side if you’re not into that but it’s a great detailed explanation of his vote for mike.  I have to agree with most everything Sam says.  So, I guess to save my sanity when usine mike as a verb I’ll be using m-i-k-e. 🙂