Friday, August 29, 2008

Internet Explorer operation aborted


For several weeks now, I had been experiencing a problem in Internet Explorer (and just had not had time to research, or correct it). Almost every time I navigated to a page on MSDN, the page would display briefly, I would get an “Internet Explorer cannot open the Internet site http://msdn.microsoft.com/xxxx. Operation aborted” message, and then the page would be switched to a navigation error screen. I quickly discovered that pressing the back button would allow the page to display correctly.

Since I work with a lot of Microsoft products, and spend a lot of time on MSDN, this was becoming very annoying. So, today became the today to try and solve the problem. It was occurring on my work PC, but not my home PC. Both are running Windows Vista and IE7. Since one was ok, and the other was not, I thought the problem probably caused by an IE security setting. Rather than digging through IE’s huge list of security options for possible culprits, I decided to search the web to see if anyone else was experiencing the problem.

First, I found this discussion listing a bug in sitemeter.com that had caused issues on a lot of sites; but this bug had already been corrected. The thread also suggested IE addins as a possible cause, but this was not the cause for my issue, either. Another suggestion in the thread was to Reset IE’s options, but this did not fix it for me either. There was also a link to a blog post describing how this error is typically caused by JavaScript manipulation of the HTML DOM. The post stated the problem has been corrected in IE8. Soooooo, I am now running a beta of IE8, which seems to have corrected the problem. Hopefully, it does not introduce new problems!

On my next visit to MSDN, I was promptly greeted with a JavaScript popup message that Microsoft was taking a survey(which was not appearing previously). So, it looks like the survey was the root of my problem, but I have not determined why it occurred on one PC and not the other. At least IE8 seems to have solved it, for now.

Tuesday, August 26, 2008

VMWare Beeps

The other day I was doing some testing in a VMWare virtual machine, and kept getting an annoying beep every time a dialog box was displayed. I changed every sound setting I could find, but could not get rid of the beep. So, it was time to begin google’ing. I found several recommend solutions that involved adding “mks.noBeep = TRUE” to a .ini file, but it seems that the file name, location, and syntax vary slightly depending on your OS and version of VMWare. Ultimately, the easy solution that worked for me was to:

Open Windows Device Manager on the virtual machine.
Go to the View menu and pick “Show hidden devices”.
Go to Non Plug and Play Devices; there is now a Beep item that can be disabled.

Problem solved.

Experts Exchange and Google Cache

I really hate the site experts-exchange.com. It seems that no matter what I am searching for, this site appears in the results list. Just when you think you have found the page with an answer to your question, you find out that you have to buy a membership to see the details of the page. Most of the time, I just skip the search result if it is on experts-exchange, but I occasionally overlook the domain name and find myself frustrated again by the site. I suppose that I should just “suck it up” and buy a membership to the site, but I just can’t bring myself to do it, considering how much information is freely available on the web.

Today, a co-worker shared an interesting trick with me. It doesn’t always work, but most of the time, you can click on Google’s cached version of the page and the answers will appear. Nice!

XML Comments and Nullable data types

I had not worked with XML comments until joining my current employer.  The syntax is pretty simple, and Visual Studio Intellisense handles most of it, but I occasionally find cases where the correct syntax is not obvious.  For example, I needed to change an int variable to a nullable int.  I updated the variable definition to int?, and changed the XML comment <see cref="int"/> to <see cref="int?"/>. This resulted in a compiler warning: “syntactically incorrect cref attribute 'int?'”.  I searched, but could not find a complete listing of the correct syntax for all data types.  Eventually, I found enough examples to learn that nullable data types are listed as Nullable{type name}, like <see cref="Nullable{DateTime}"/>, <see cref="Nullable{Int32}"/>, <see cref="Nullable{Bool}"/>, etc.

Thursday, August 14, 2008

Shortcuts revisited

Two days ago, I posted about some of my favorite keyboard shortcuts. Coincidentally, yesterday I was catching up on my podcast listening, and Hanselminutes #125 is an interview with Saqib Shaikh, a blind developer with Microsoft Consulting Services in the UK. Without sight, Saqib is unable to use the mouse, so he must make extensive use of keyboard shortcuts. I have trouble remembering twenty, or so, shortcuts and can’t imagine what it must be like to need to remember them for almost every task. If you haven’t heard the podcast, check it out. It makes you think about the overall development experience, and you might even pick up a few new shortcuts (how many people knew that Ctrl+Shift+Esc opened the task manager?).

Tuesday, August 12, 2008

Favorite Shortcut Keys

Like most developers, I make extensive use of shortcut keys. However, I seem to only have the mental capacity to remember 20-30 at one time. So, I have a tendency switch them in and out of my regular rotation depending upon what type of project I am working on. Here are the ones that I get the most use out of:

Visual Studio
(Note: some of these are different dependent upon your installation settings)
Control + g : Goto line number
Shift + Alt + Enter : Toggle full screen mode
Control + Space : Launch intellisense
Tab : Accept intellisense selection
F5 : Start debugging
F6 : Build
F10 : Step Over
F11 : Step Into

Windows
Windows Key + f : Search for documents
Windows Key + r : Run
Windows Key + m : Show the desktop (minimize all applications)
Alt + Tab : Toggle between applications

Most applications
Control + s : Save
Control + c : Copy
Control + v : Paste
Control + z : Undo
Control + n : New document
Control + x : Cut
Control + a : Select all
Control + h : Replace
Control + f : Find
Control + Tab - Toggle between documents

Thursday, August 7, 2008

iPhone-a-licious

Up until now, I hadn’t jumped on the iPhone bandwagon. However, yesterday I was listening to an automotive podcast, and they mentioned a new iPhone app called Dynolicious. You install the software on your iPhone, and then place the phone in your car while driving. The software can then be used to calculate the car’s performance statistics, such as 1/4 mile ET’s, 0-60 times, horsepower, etc. While, there are devices (such as the G-Tech) that can calculate these statistics, they can’t be used to make calls, take pictures, play music, surf the web, etc., etc., etc.

Hearing about this software was one of those “blow your mind” moments for me. It is an amazing application of the iPhone’s technology, and also made me think about just how powerful the iPhone is. It will be interesting to see what other creative applications will become available for the phone. Gaming possibilities could be a huge use of the technology. While it’s not exactly a Nintendo Wii, tapping into the accelerometers could lead to some exciting gaming on the small screen. After a quick look at the iPhone app store, and it looks like there are already a few games that utilize the accelerometers, but it could be fascinating to see what else is available in the upcoming months.

It might be time to go phone shopping this weekend….

Tuesday, August 5, 2008

Quantity leads to Quality…

A few days ago Jeff Atwood wrote a blog post about the parallels between software development and the advice for artists in the book “Art & fear”. This quote sums up the basic idea:

“When it comes to software, the same rule applies. If you aren't building, you aren't learning. Rather than agonizing over whether you're building the right thing, just build it. And if that one doesn't work, keep building until you get one that does.”

I found this to be an interesting post because I had recently came to the same conclusion. At my current employer there is a senior developer who is effectively my mentor (we’ll just call him Frank). He insists that all code should follow his standards, which is ok because they are typically good standards; but the whole thing can be a little intimidating. During my first few weeks at the employer, I had a difficult time completing any work because I was constantly worrying about “how would Frank handle this task?”. Once I overcame this, and just let the code flow, I have been much more productive and have learned more by writing the code as opposed to trying to over-analyze the existing code base.

Jeff suggests that the same idea of “Quantity always trumps quality” applies to blogging as well. As an aspiring blogger, I guess I should take that message to heart….

Accessing the Office Ribbon from VBA

Yesterday I received this email from a co-worker (who shall remain anonymous):

1. Open an instance of Word 2007 to find the msoId of the button you’d like to press. You can find this by going to Office Button Word Options Customize to view a list of commands which correspond to buttons.

2. Hover over the name of the command and you’ll see a tooltip; for example, the tooltip for the Save command when selected from the “Popular Commands” list says “Popular Commands Save (FileSave)”. The part in parentheses is the msoId. (Note: You may have to select the name of a tab in the “Choose commands from:” list box to find the button you’re looking for.)

3. In your code, call Word.Application.CommandBars.ExecuteMso with the msoId and you can invoke the button.

Note: The steps above also apply to Excel.

Code Example to demonstrate how to press FileSave in Word 2007

[VBA]
Sub PressThisRibbonBarButton()
On Error Resume Next
If Word.Application.Documents.Count = 0 Then Exit Sub
' Press the Save button Word.Application.CommandBars.ExecuteMso "FileSave"
End Sub


I haven’t worked with the Office 2007 API yet, but I thought this seemed like a good tip that was worth posting here. However, today I was researching something else, and discovered a post on the Interwoven Devnet forums by someone named jny. It looks like the previously mentioned co-worker was trying to pull a fast one, and borrow jny’s post. Anyway, I still thought this was helpful, so thanks to jny from the Interwoven forums for the helpful tip.