Skip to content
Mar 28 10

Kindle review

by Brandon

A few weeks ago I decided it was time to buy an E-book reader.  I really only considered two options, the Barnes & Noble Nook and the Amazon Kindle (specifically the “Kindle 2” model).  I’d briefly seen each in person, but hadn’t had time to really look at or play with either of them.

The Investigation

I started out by reading up a bit on both devices.  I read complaints about performance on the Nook, but also saw mention that an update was released which improved the situation significantly.  The specs told me that the Nook was slightly thicker and ever so slightly heavier, but otherwise roughly the same dimensions and basic capabilities.  In theory the color touch screen and Android-powered nature of the device made it appealing.  In theory.

So one afternoon I took a drive over to the B&N store in Bellevue to take a good look at the Nook in-person.  My first impression was that the industrial design looked cheap compared to the Kindle 2 I’d seen.  I played around with the device a bit, and found the page-turning speed acceptable but not exactly impressive.  Navigating the device’s various functions seemed relatively cumbersome, but I didn’t have a basis to compare this to the Kindle at the time.

As I was looking at the demo device on display, a salesperson asked if I needed help and tried to tell me how much they’d like to get a Nook of their own.  I inquired about the return policy, and was told to wait while they called down a manager to talk to me about the device.  The manager (or supervisor, or whatever she was) was very enthusiastic about the device, but I was put off a bit by her pitch.  First, she told me there was a 15% restocking fee if I returned the device (I forget if it was a 14-day or 30-day return policy).  She said this was “standard for these kind of electronics” to which I replied that the Kindle did not have such a fee and neither did stores like Best Buy and Fry’s.  I also inquired whether there was a web browser on the device, and she said “no but the Kindle doesn’t have one either.”  I pointed out that the Kindle actually does have a basic browser, and she insisted it was only the Kindle DX which offered this feature.  Of course, I quickly confirmed using my Droid that she was indeed incorrect.

Given all this, I decided to leave B&N without one, and a couple days later I ordered a Kindle.

Kindle

The Arrival

I ordered the Kindle late on a Thursday evening, and decided to take advantage of Amazon’s same-day delivery option, a concept which nearly blew my mind, to have it arrive on Friday.  Sure enough, it arrived at my building Friday afternoon.

Unpacking the Kindle is a delightful experience.  The device arrives pre-programmed with your Amazon account.  There was no registration process of any kind, it was as if this device knew me and was anxious to be my new reading companion.  The Kindle store was already populated with book recommendations based on my Amazon history, and the device happily sync’d the two books I’d purchased on the Kindle for iPhone app a few months before.

I was immediately glad I’d chosen this over the Nook.  Amazon had clearly put significant effort into building a complete end-to-end experience with minimal friction to purchasing and reading books or other content.  In some respects, it even seemed they’d outdone Apple, who many consider to be the king of this kind of execution.

The device looks and feels solid.  The plastic feels more expensive and higher quality than that of the Nook.  The size and weight are pretty much ideal for its purpose.  The button placement is well thought-out, and the labels make it trivial to pick up and start using.  They duplicate certain buttons (like “Next Page”) and seem to have considered all the different ways you might hold the device when reading on a park bench, in bed, etc.

Navigating the device may not be as delightful as an iPhone, but it’s easy to figure out and get around.  Common tasks are easy, what feels a little clunkier are secondary tasks like selecting text within a document — but it’s still easier than it seemed on the Nook.

The display updates slightly faster for page-turns than the Nook, which seems just fast enough to not be annoying when reading.  That is, the Nook is only marginally slower, but it seems to cross a threshold where it starts to feel slow.

Web Browser

The Kindle web browser is very basic, and given the performance characteristics of the hardware and lack of a pointer, it’s not hard to see why.  Typical web browsing tasks simply won’t work on this hardware.  That said, I think the basic browser is quite useful, and mainly for one application: Google Reader.  Now, to be honest, I haven’t spent a lot of time actually using this in practice… but the short time I did spend using it, it felt quite usable and useful.  I imagine I will use that regularly in the future, unlike most any other web browsing functionality.

One gripe with the browser was the inability to re-order bookmarks.  Or at least, if you can re-order them, I couldn’t figure it out.  Instead I had to delete all the built-in bookmarks (about a dozen) which is a slow enough process, just to get Google Reader to be at the top.  Given that the browser is labeled as an “experimental” feature at this point, I can’t really complain too much.

Verdict

At this point I’m pretty confident I’ll be keeping the Kindle.  At first I thought maybe an iPad or similar slate PC might obsolete it, but now I’m not so sure.  The iPad, for example, is about twice the weight of the Kindle.  I don’t think that’s going to be comfortable for extended reading sessions.  Once I get to try an iPad myself I’ll try to update this post with my impressions with regard to its usefulness as a book reader.  Until then, I’m happy to recommend the Kindle to any avid readers or gadget freaks.

Feb 21 10

Measuring memory usage in Windows 7

by Brandon

Historically, measuring the amount of memory in use by a Windows system has been a somewhat confusing endeavor.  The labels on various readouts in Task Manager, among other places, were often either poorly named or simply misunderstood.  I’ll tackle a prime example of this, the “commit” indicator, later in this post.  But first, let’s look at a simple way to measure the amount of physical memory in use on your system.

In Windows 7, the folks building the Task Manager performance tab tried to make it a little easier to understand the usage of physical memory on your system.  The most interesting bits are here:

TaskManager1

What do these values tell us?

– We are looking at a machine with 4GB of physical memory installed.

– 71% of that physical memory is currently in use by applications and the system.

– That leaves 29% of memory “available”, despite the indication that only 16MB of physical memory is totally “free.”

Here’s a description of the four labels, from the bottom:

Free — This one is quite simple.  This memory has nothing at all in it.  It’s not being used and it contains nothing but 0s.

Available — This numbers includes all physical memory which is immediately available for use by applications.  It wholly includes the Free number, but also includes most of the Cached number.  Specifically, it includes pages on what is called the “standby list.”  These are pages holding cached data which can be discarded, allowing the page to be zeroed and given to an application to use.

Cached — Here things get a little more confusing.  This number does not include the Free portion of memory.  And yet in the screenshot above you can see that it is larger than the Available area of memory.  That’s because Cached includes cache pages on both the “standby list” and what is called the “modified list.”  Cache pages on the modified list have been altered in memory.  No process has specifically asked for this data to be in memory, it is merely there as a consequence of caching.  Therefore it can be written to disk at any time (not to the page file, but to its original file location) and reused.  However, since this involves I/O, it is not considered to be “Available” memory.

Total — This is the total amount of physical memory available to Windows.

Now, what’s missing from this list?  Perhaps, a measurement of “in use” memory.  Task Manager tells you this in the form of a percentage of Total memory, in the lower right-hand corner of the screenshot above.  71%, in this case.  But how would you calculate this number yourself?  The formula is quite simple:

Total — Available = Physical memory in use (including modified cache pages).

If you plug in the values from my screenshot above, you’ll get:

4026MB — 1150MB = 2876MB

This matches up with the 71% calculation.  4026 * .71 = 2858.46MB.

Recall that this number includes the modified cache pages, which themselves may not be relevant if you are trying to calculate the memory “footprint” of all running applications and the OS.  To get that number, the following formula should work

Total — (Cached + Free) = Physical memory in use (excluding all cache data).

On the example system above, this means:

4026MB — (1184 + 16) = 2826MB

By looking at the difference between these two results, you can see that my laptop currently has 50MB worth of disk cache memory pages on the modified list.

So what is “commit?”

Earlier I said that measuring physical memory usage has been tricky in the past, and that the labels used in Windows haven’t necessarily helped matters.  For example, in Windows Vista’s Task Manager there is a readout called “page file” which shows two numbers (i.e 400MB / 2000MB).  You might guess that the first number indicates how much page file is in use, and the second number indicates the amount of disk space allocated for use — or perhaps some sort of maximum which could be allocated for that purpose.

You would be wrong.  Even if you disabled page files on each of your drives, you would still see two non-zero numbers there.  The latter of which would be the exact size of your installed physical RAM (minus any unavailable to the OS because of video cards, 32-bit limitations, etc).  Unfortunately, the label “page file” didn’t mean what people thought it meant.  To be honest, I’m not quite sure why that label was chosen.  I would have called it something else.

In Windows 7, that label changed to “Commit.”  This is a better name because it doesn’t lend itself as easily to misinterpretation.  However, it’s still not readily apparent to most people what “commit” actually means.  Essentially, it is this:

The total amount of virtual memory which Windows has promised could be backed by either physical memory or the page file.

An important word there is “could.” Windows establishes a “commit limit” based on your available physical memory and page file size(s).  When a section of virtual memory is marked as “commit” — Windows counts it against that commit limit regardless of whether it’s actually being used.  The idea is that Windows is promising, or “committing,” to providing a place to store data at these addresses.  For example, an application can call VirtualAlloc with MEM_COMMIT for 4MB but only actually write 2MB of data to it.  This will likely result in 2MB of physical memory being used.  The other 2MB will never use any physical memory unless the process reads from or writes to it. It is still charged against the commit limit, because Windows has made a guarantee that the application can write to that space if it wants.  Note that Windows has not promised 4MB of physical memory, however.  So when the process writes there, it may use physical memory or it may use the page file.

This is a great example of why disabling your page file is a bad idea. If you don’t have one, Windows will be forced to back all commits with physical memory, even committed pages which are never used!

Further, processes may be charged against the commit limit for other things.  For example, if you create a view of a file mapping with the FILE_MAP_COPY flag (indicating you want Copy-On-Write behavior for writes to the file view), the entire size of the mapped view will be charged as Commit… even though you haven’t used any physical memory or page file yet.  I wrote a simple scratch program which demonstrates this:

int wmain(int cArgs, PWSTR rgArgs[])
{ 
if (cArgs == 2)
     {      
         HANDLE hFile;
         hFile = CreateFile(rgArgs[1], GENERIC_READ | GENERIC_WRITE, 0, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr);
         if (hFile != INVALID_HANDLE_VALUE)
         {
             HANDLE hMapping;
             hMapping = CreateFileMapping(hFile,
nullptr, PAGE_READWRITE, 0, 0, nullptr);
             if (hMapping != nullptr)
             {
                 void *pMapping = MapViewOfFile(hMapping, FILE_MAP_COPY, 0, 0, 0);
                if (pMapping != nullptr)
                 {
                     wprintf(L"File mapped successfully.  Press any key to exit and unmap.");
                     getwchar();
                     UnmapViewOfFile(pMapping);
                 }
                 CloseHandle(hMapping);
             }
             CloseHandle(hFile);
         }
     }
    return 0;
}

Before running this program, let’s take a look at Task Manager again.

TaskManager1

Now, if I run this scratch program and pass it the path to my Visual Studio 2010 Beta 2 ISO image (a 2.3GB file), the Task Manager readout changes to:

TaskManager2

Notice how my physical memory usage is unchanged, despite the fact that Commit has now increased by the full 2.3GB of that file.

In fact, my commit value is now 6GB, even though I have only 4GB of physical memory and less than 3GB in use.

Note: It is not common for applications to commit enormous file mappings in this way.  This is merely a demonstration of Commit and Used Physical Memory being distinctly different values.

Jan 4 10

The so-called “God Mode”

by Brandon

A rather goofy “trick” has been making the rounds over the last couple days, which was described by Ina Fried on CNET as follows:

By creating a new folder in Windows 7 and renaming it with a certain text string at the end, users are able to have a single place to do everything from changing the look of the mouse pointer to making a new hard drive partition.

Apparently people decided to call this “God Mode” because to enable this “trick” you make a folder called GodMode.{ED7BA470-8E54-465E-825C-99712043E01C} and double-click on it.  Now you can see… the control panel.  With a slightly different view than you normally see it in.

So first off, why is this completely silly?  Well, the text “GodMode” has nothing to do with making the trick work.  You can call the folder “ILikePuppies.{ED7BA470-8E54-465E-825C-99712043E01C}” and now you’ve discovered the magical “ILikePuppies” feature hidden in Windows.

Well, not really.  What you’ve actually discovered are two things:

First, you’ve discovered a documented feature of the shell whereby filesystem folders can be easily made into namespace junctions, as described here on MSDN.  Basically, any folder named <DisplayName>.<CLSID> will show up with just the <DisplayName> portion visible in Explorer, and navigating into the folder will take you to the namespace root defined by the <CLSID> portion of the name.  This isn’t a user feature, it’s a developer feature.

The second thing you’ve discovered is the “All Tasks” folder.  This is a special shell folder which is used as the source of the “Control Panel” search results seen in the Start menu.  This folder was not designed to be browsed to directly, as the normal Control Panel folder (accessible via Start -> Control Panel) contains all the same items but with a custom view designed to be easier to navigate.  The “All Tasks” folder has no custom view, so you just see the standard Explorer list view and little else.

The existence of this folder and its CLSID are implementation details and should not be relied upon by anybody for any purpose*.

God Mode?  Hardly.

Props to Ed Bott for his earlier post about this “trick.”

* = Update: The intended meaning of this statement was, “please don’t use this folder / CLSID in your app for anything, since it will probably break in the future.”  If you like using this view and are happy with an unsupported untested trick for your own personal use, then by all means, enjoy it.

Dec 30 09

What does age mean in the tech world?

by Brandon

Mary Jo asks:  “At Microsoft, is age more than just a number?”

In the responses to her post I saw a few comments along the lines of, “ageism happens, get over it.”  One commentor wrote:

“Truthfully, younger Folk will just not like you, simply because of your age, and in the workplace that has insidious ways of working against you no matter how good you are.”

This is completely counter to my experience.  If I ever had any preconceptions about how “with it” the older / more senior folks at Microsoft were, it didn’t take long for them to be washed away when I actually started working there.  In fact, one thing I love about my job is how closely I’m able to work with incredibly bright people who’ve learned so very much over their years in the industry or at the company.  I take every chance I get to learn from their experience. 

Yes I (and other younger folk) could shut them out and spend 20 years learning the same lessons the hard way, but that’s a terrible waste of the evolutionary gift that’s done the most to set our species apart from every other – our ability to pass on knowledge and experience from one generation to the next.

If you ask one of the people Mary Jo calls Millenials (which I read as “you kids”), I’m sure most of us would be happy to extole the virtues of young engineers.  Today’s college grads know what it’s like to grow up with their own PC and cell phone.  They’ve probably gleaned a lot just from seeing their parents and teachers work with technology.  Their social paradigms have changed – many won’t know what it’s like to lose touch with friends from college or high school after they graduate and move away… they’ve got Facebook to automate the previously daunting task of keeping tabs on dozens or hundreds of people you’ve known.  Their world is smaller, their stages of life more connected with fewer seams. 

But the truth is you don’t have to be born in the 80s or 90s to understand these things.  I bet you Steve Jobs does, and he’s 54.  As much as the world has changed over the last couple decades, a heck of a lot has stayed the same.  Sure, maybe kids these days date differently, but I’m willing to bet that looking for ways to minimize your vulnerability and potential for embarassment is nothing new.  The medium is all that’s really changed.  You don’t have to be young to notice these trends or to empathize with young customers.  The best creative minds in any industry need to be able to put themselves in their customers shoes, whether you’re designing for someone 20 years your junior or 30 years your senior.

So I guess mine’s a two-part answer.  First, if you’ve got experience, it can be a tremendous benefit to you and to those with whom you share it.  Second, the ability to empathize with and understand others is an invaluable skill at any age.

As always, this is all just my personal non-corporate-approved perspective and may not reflect the experience of anybody anywhere (at Microsoft or otherwise).

Dec 13 09

Two weeks with a Droid

by Brandon

A couple weeks ago I made a rather impulsive decision to purchase a Motorola Droid with a new Verizon account.  The frustrations I’ve had with AT&T have been piling up for a while now… dropped calls, slow-to-respond data services, zero service in crowded places, and horrible customer service problems (such as being lied to and not being able to upgrade to a 3GS), to name a few.  Add to this my total inability to use their data service near San Diego over the week of Thanksgiving and their apparent lack of desire to actually fix these problems, and you’ve got quite a number of straws on this camel’s back.

I didn’t quit AT&T cold turkey, though.  In fact, I told myself this was an experiment to see how a different network and device might work for me — knowing that I could cancel within 30 days and return the phone itself for a refund.  Instead of porting my AT&T number, I left it active on the iPhone, and began directing friends and family to use my Google Voice number for calls and SMS, which I pointed at the new Verizon phone.  I also set my iPhone to forward calls to that number.

If you’re anxious to hear the result of this experiment, it’s this:  I am cancelling my AT&T account and going to try tomorrow to port my old number to the new Verizon account (something I hope is possible, but I’m okay if it isn’t).  For more details about this decision, read on as I dive into three topics: the phone, the network, and Google Voice.

1. The phone

First off, I must make it clear that the Droid doesn’t do everything as well as the iPhone.  The hardware isn’t as pretty.  The default software isn’t as nice.  Text selection isn’t as nice as iPhone or even WinMo.  Some apps I really liked on the iPhone are still missing (Kindle, Urbanspoon, OneBusAway).  Some apps like Facebook don’t compare.  Next to the iPhone, the built-in media experience is pretty awful. 

But there are a lot of things it does better.  It has a hardware keyboard which is a win for most people, though I find myself using the software keyboard out of habit which I actually like better than the iPhone’s.  It’s mostly the same but adds text prediction and is smarter about letting me fix its mis-corrections.

IMG_0503

The screen is gorgeous.  The camera (with flash) is way better.  The software is highly customizable.  I can run apps in the background and the OS has central management of apps that sync (including the Facebook app, Twitter app, mail apps, etc).  Push Gmail is automatic. There are lots of great apps like Twitdroid and Google Sky Map, and many iPhone staples like Pandora, OpenTable, Flixster, Bump are around too.   Many of them, like Pandora and Qik, are far more functional. I can have Pandora playing in the background while I do other things.  I can stream video to Qik over the 3G connection.  There’s even an app in the Android Market for tethering over USB or Bluetooth (though I wonder if Verizon will have something to say about that soon).

The OS itself does a lot right too.  A common theme seems to be central management of app behaviors — like syncing, notifications, and even power usage.  The first time the Droid got to 15% power it offered to show me which apps and settings were draining my battery!  Who knows if it’s totally accurate, but man was this helpful.  At one point it helped me identify a widget I’d installed which apparently had a bad battery-draining bug.  Good stuff.

The built-in Maps and search features are awesome.  Google Latitude is pretty well integrated (much more useful than it was on the iPhone), as is a pretty effective voice search.  Finally, the Droid earns high marks from me for its Google Voice integration.  More on that below.

When I got the phone I was concerned about a few specific problems, including reports from people I talked to that they heard an echo during every conversation.  A quick look around the web revealed that this was a known issue (with a workaround which worked).  This problem was eliminated a few days ago when the OS 2.0.1 update was pushed to Droid users.  That update brought several other improvements, including an improved lock screen and some performance, battery, and reliability improvements.  Thus far my experience has been that this update is how the phone should have shipped originally.  But that’s not necessarily a knock against Google / Motorola / Verizon, since everybody seems to be shipping not-quite-finished software these days… In fact, the speed and ease with which they deployed a solid first “service pack” via an Over The Air update was impressive.

2. The Network

Verizon’s network, at this point, has proven vastly superior to AT&T’s.  While it feels like the number of “bars” I have is often lower, it doesn’t seem to matter.  The iPhone would say 5 bars but still fail to make calls, drop them half way through, or completely fail to establish a data connection.  When the data connection did work, it was very rarely as fast as it could / should be.  And latency always seemed to be a major problem.

On Verizon, I consistently get a responsive data connection.  I know that when I click my shortcut to the WS-DOT bridge traffic map that I’ll be seeing it in a few seconds.  On the iPhone 3G with AT&T, I’d often wait nearly a minute for it to begin loading, or have to try several times to get it to load at all.  Getting Twitter or Facebook updates on the iPhone was hit or miss.  Twitter apps would regularly return obscure connection errors, and the Facebook app would often require several attempts to upload a photo (trying to do this from a crowded place like a soccer game was basically impossible).

3. Google Voice

When Michael Arrington talked about the Droid with the Gilmor Gang, he raved about its integration with Google Voice.  I decided to give this a shot, and while I’m not sure its as big of a revolution as he suggested, I do see what he was on about.  The Droid + Google Voice together feel like a truly natural evolution of the mobile experience.

So what does it do?  Well, a Google Voice number is sort of like a domain name on the web.  You pick the area code and number (from the available ranges) that you want to use as your public alias, and then point it at a destination (via the device’s phone number, which is now more like its IP address).  You can choose multiple destinations (if you don’t answer one device, it can ring another), or you can change where it points on the fly.  SMS messages and voice mails arrive on the Google Voice web site at no cost, and can be accessed via a web browser or through a Google Voice application like the one for Android phones.  For “legacy” devices you can have it immediately forward messages via traditional SMS.  But with the Droid this isn’t necessary, you can just use the Google Voice app instead of the SMS app and not even know the difference (except that you don’t have to pay for SMS and can read or respond to them on the web).

In the end, it’s not a revolution as Arrington may make it sound, but it is an improvement.  With a phone like the iPhone it’s hard to imagine why Google Voice is useful.  It’s complicated to use it as your number because when you call people using the phone’s dialer, they see your device’s real number instead.  And Apple won’t even approve the Google Voice dialer app.  Same goes for text messages.

But on the Droid, there are no such restrictions from Apple / AT&T.  The Google Voice app takes over your dialer, so any calls you make come from that number.  It’s a largely seamless experience.  I say “largely” because the SMS experience could still be a little better integrated (perhaps by having GV push the messages into the phone’s native SMS app), and they don’t quite have the sync / push experience nailed down for them, but it’s nearly there and I’m confident it will be all the way there soon enough.

Overall verdict

As I mentioned before, I’m keeping the Droid and Verizon.  But there are a few caveats to be aware of.  I would NOT recommend one for non-techies like my girlfriend (who currently uses an iPhone 2G on T-Mobile) or my sister yet.  At least not to replace an iPhone.  Why?

Some of what the Droid does right it also does wrong.  The Droid (and more the Android platform as a whole) is built for a world that most people don’t quite live in yet.  That’s a world where you never need to connect your phone to your computer.  Don’t get me wrong, this is where things are going, I have no doubt about that.  But it’s not where things are, for most people.

Let’s look at one specific scenario: pictures.  First off, the phone has no concept of syncing pictures (or other media) to it.  In fact, if you plug the USB cable into your computer nothing happens.  As far as I can tell there’s no management software like iTunes for it.  It doesn’t even mount itself as a drive unless you push a button on the phone’s screen once it’s connected.  Because of this, there is no sync feature, so no process by which properly sized and thumbnailed images get copied to the device.  Instead you can mount the storage card and drag images to a folder on the device’s SD card, but the first time you go to view them they’ll take a while to load and have thumbnails generated.  Not a pleasant experience.

I doubt Google sees this as a flaw, though.  Copying or syncing media to your phone isn’t something you’re meant to do in the Google world.  Instead you’re meant to consume media “from the cloud” using the appropriate app or mobile web site.  For photos ,there are dozens of apps for interacting with Picasa, Flickr, Facebook.

For now, the iPhone has the advantage here.  It has a fantastic experience for locally synced media, while enabling lots of cloud-based scenarios like viewing and uploading Facebook photos.

The iPhone also has the advantage when it comes to a simple, intuitive user experience.  The Droid experience is good, but requires a lot more customization to really make it shine, in my opinion.  The iPhone just works.  If not for AT&T’s widely publicized failings, I would say that the iPhone is the best choice for a normal human.  But the reality is that AT&T’s network has been getting worse, not better.  That alone may be enough to justify a different choice, and the Droid is a perfectly sensible one.  Just make sure there’s a geek around to set it up for you.

Dec 3 09

New Google home page. Is this for real?

by Brandon

A recap of what went through my mind yesterday as I read the Official Google Blog post about their new home page design and tried out the “updated” page:

– Is this a joke?
– This is terrible.
– If this is real, why is this Google person so excited about it?
Marissa Mayer wrote the blog post?!?

What am I missing here?

Update: A Googler stopped by the comments section to point out that the post is actually credited to three people, not just Marissa.  I missed that on my first reading.  Thanks to Darren for bringing that to my attention.

Also, what do you think of the new “fade in on mouse movement” behavior? 

Oct 29 09

When version checks go wrong

by Brandon

Ars Technica’s review of Windows 7 is extensively detailed and contains a lot of good information.  But one piece jumped out at me, and that was this paragraph on the last page:

If Vista had gotten the reception it actually deserved, and become a brand worth keeping, it seems highly likely that the name would have been retained. And Microsoft knows it, which is why internally, Windows 7 is only version 6.1. Sure, the company has made specious claims that this is to avoid breaking applications with bad version checks, but the logic doesn’t really hold; many of those applications are just as broken by “6” as they would be by “7,” and if that were such a concern then the minor version wouldn’t change either.

This might make sense to a lay person on a cursory reading, but as usual with software development, reality is full of subtle but important complexities. 

Pop quiz

Consider the following rather common version checking mistake:

// Our app is designed for XP (5.1) and later
if (majorVersion >= 5 && minorVersion >= 1)
{
    // Succeed
}
else
{
    // Fail
}

Given the returned version values from Windows XP (reports 5.1), Windows Vista (reports 6.0), and Windows 7 (reports 6.1) – which OSes will this program succeed on?

Oct 22 09

Windows 7 released!

by Brandon

As of today, Windows 7 is officially the latest commercially available operating system from Microsoft.  That’s a pretty cool thing for me in several ways.  First of all, when discussing Windows 7 over the last few months I’ve had to add the caveat “and it’ll be available toward the end of October.”  On several occasions I’d come close to forgetting that Windows 7 wasn’t already released since my work on it has largely been done for a while and all the people I work with have been running it for months (if not longer).  At last I can tell people not only how excited I am about Windows 7, but also that they can go check it out or buy it right now.  That’s pretty cool.

Another thing that’s pretty cool is realizing how fast it all seemed to happen.  When I first joined the Windows Experience team at the beginning of Windows 7 I was a bit nervous about working on such a large project with a timeline that seemed near to an eternity .  I feared that I’d get bored or that the work would drag on and on, and that in the end I’d just be dying to be done.  Instead, the time flew by and it was fun.  What’s more, our team planned and executed the release so well that it never felt like we needed to scramble to meet a deadline.  We even somehow managed to avoid another common pitfall of always wanting to add “just one more thing.”  Instead of feeling like it took too long or that we ran out of time to do everything I wanted, this release feels pretty darn close to “just right.”  And the experience has given me unending optimism for the work our team will do going forward.

Anyway, what does this all mean for you?  Well, for starters you can…

Visit your local computer store like Best Buy or Fry’s and check out dozens of awesome new Windows 7 PCs.

Buy Windows 7 or Windows 7 PCs from the new Microsoft Store.

Check out amazing new machines like the Dell Adamo XPS

Read LifeHacker’s complete guide to all things Windows 7

Have you tried Windows 7 yet?  Will you be buying an upgrade or a new Windows 7 PC this holiday season?

Oct 22 09

Windows 7 demos in 7 seconds

by Brandon

Cool new Windows 7 ads.

Oct 12 09

Can I bill Chase for my time fixing their problem?

by Brandon

If it seems like my blog has turned into a forum for me to vent my frustrations, I apologize.  I’ll make more useful posts soon to make up for it, I promise.  But in the meantime…

Last month I traded in my car.  This involved having the dealer pay off the remainder of my auto loan which was financed through Chase.  The dealer told me it would be paid off, the account would be closed, and I wouldn’t have to worry about it any more.  Sure enough, the Chase website soon showed my account as closed and paid off.  Great, right?

Well, Chase decided last week to withdraw my usual monthly payment amount from my checking account despite the fact that the account was paid off.  Apparently their auto-pay system isn’t smart enough to know it shouldn’t draw payments when there’s no balance.  Ridiculous to be sure (in the past I’d used Audi Financial and they never had this problem), but I expected I’d just call them and they’d make it right.  After all, the payment shows up on my Chase.com page, complete with a transaction number.

Unfortunately it isn’t that simple.  They’re insisting that I mail or fax bank records and web site screenshots “proving” that the funds were deducted from my account, even though their own website clearly has a record of the transfer.  On the phone they gave me the run around with nonsensical explanations about how they can see all my other payments including the loan pay-off transfer, but not this additional erroneous payment because of “security reasons.”  They refuse to accept any of these details via e-mail or over the phone, and insist that I write a “cover letter” explaining the situation with all of my account details.

This is positively absurd.  If their system didn’t clearly have a record of the transaction I’d be more forgiving, but it knows it transferred the money.  It knows the date and time and has a transaction number!  Apparently that number is useless, and might as well just be a made up figure, according to the server reps I’ve spoken to.

So my question is this… after two 10+ minute phone calls, the time it takes to prepare a “cover letter,” and the time and effort to find access to a fax machine (heck I don’t even have a phone line), can I bill Chase for my time?  What about charging interest?  They’ve obviously been generating interest on my money which they essentially stole from my account.  Has anyone had experience with situations like this?  Is there any viable recourse that will make up for my lost time and money while also perhaps encouraging Chase to get their act together?