Bringing the Menus to the Top in IE7

In the IE7 Beta 2 Preview the UI element that hosts menus and 3rd party toolbars is located between the navigation bar and tabs. However, in this release there’s a registry key which you can set to move this to the top of the window instead: [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Toolbar\WebBrowser] “ITBar7Position”=dword:00000001 You can also turn off the…


Use the official IE7 Preview, not the leaked build

Or: When is 5296 > 5299? Many people who managed to get a hold of the leaked IE7 7.0.5299.0 build may be wondering whether they should uninstall it and switch to the official IE7 Beta2 Preview, which is version 7.0.5296.0. On the surface it seems like the 5299 build would be newer, and therefore better,…


Download the IE7 Beta 2 Preview!

The IE blog has announced the availability of the first public beta for IE7: IE7 Beta 2 Preview. This preview isn’t intended to be widely used by the general public, but if you’re reading this blog you’re probably technical enough to try it. Over the next few weeks I’ll post about some of the features…


The Inline Returns Option

Using my last example, Stuart Ballard pointed out that using inline returns is another way to avoid the uninitialized variable mistake:if (hwndParent != NULL) { if (fFoo) { return DoOperationWithFoo(hwndParent); } else if (fBar) { return DoOperationWithBar(hwndParent); } } return whatever_the_default_return_code_should_be; This is true, although whether to use inline returns vs. the structured programming technique…


More Micro-optimizations

Here’s another micro-optimization that I’m not very fond of. I should note that we don’t really obsess about these things too much internally – in general we have established coding practices and only occasionally debate a few debatable things, usually on the fringes. But they do make reasonable blog fodder and I’m trying to cover…


The Risk of Micro-optimizations – follow-up

In yesterday’s post I gave an example of a bug where an attempted micro-optimization combined with a common C++ idiom causes a fairly subtle bug. For those who didn’t look long enough to catch it, the flaw was in these two lines:BOOL _fRaining:1; _fRaining = (dwFlags & WEATHER_RAINING); The assumption that the coder was making…


The Risk of Micro-optimizations

A lot of things have been said over the years about premature optimization, and after running into the following bug I thought it served as a good example of a type of premature optimization that I call “micro-optimization”. That is, doing something quirky in order to save a tiny amount of RAM or CPU cycles….


RAW Conversion and Photo Manipulation

Last fall I purchased a digital SLR: the popular (and relatively inexpensive) Canon Rebel XT. I had been dabbling with digital cameras for a few years and was having increasing amounts of fun using the limited manual controls of my Canon S50. As a technical person part of the draw is simply learning about the…


Bug Triage

Eric Sink has a good article on the process of triaging bugs. In it he pokes a little bit of fun at the people who don’t understand why all good software ships with known bugs and then discusses a process for determining which ones to fix. Determining which bugs to fix and how to prioritize…


Toolbar Compatibility Debugging Walkthrough

In the past I’ve found debugging walkthroughs useful for picking up new techniques. In that spirit here’s a quick rundown of a bug I was investigating today that may have some useful tidbits.   This was a crash in IE that involved a toolbar that I didn’t have the source code for. The issue was that if…