Aug 18 10

What does it mean to reverse engineer the brain?

by Brandon

PZ Myers takes Ray Kruzweil to task for claiming that we might be able to reverse engineer the “program” that our brain runs, and indeed make a computer-based “port” of it, sometime in the next 10 years.  He doesn’t just refute Kruzweil’s claim, he seems to be using it as evidence for his argument that Kruzweil is a moron.

I can’t (and don’t particularly care) to comment on the intelligence of Kruzweil, I’ll leave the defense of his honor to the ready and willing.  Instead I want to share an alternative interpretation of what Kruzweil meant.  Or at least some food for thought about what seems to me a fascinating subject.

Myers makes a lot of great points about why it would be difficult (within 10 years) to simulate all the detailed biological interactions between cells in the brain.  He also focuses a lot on a claim Kurzweil apparently made about the potentially small size of the computer program in question, based on the assertion that Kurzweil was only talking about “data” in the genome and that this is not sufficient for building a simulator of brain biology.

But when I read the Kurzweil quote, a simulator of brain biology is not at all what came to mind.  Indeed, reading Myers’ argument had me scratching my head, since it took me a moment or two to realize what he was on about.  You see, I read Kurzweil’s quote from the perspective of a software engineer, whereas Myers’ interpreted it as a biologist would see fit to do.  This is a reasonable thing given that he is indeed a biologist.  What seems less reasonable to me is how vigorously he attacks Kruzweil’s claim without giving the acknowledgement that he’s made an awful lot of potentially incorrect assumptions about what Kurzweil actually meant.

So what is my software engineers’ perspective? 

I don’t see why reverse engineering the brain would require any ability to simulate protein and brain cell interactions.  Doing so would be a brilliant achievement, but it seems orthogonal to the idea as I understood it.  Myers says:

To simplify it so a computer science guy can get it, Kurzweil has everything completely wrong. The genome is not the program; it’s the data. The program is the ontogeny of the organism, which is an emergent property of interactions between the regulatory components of the genome and the environment, which uses that data to build species-specific properties of the organism. He doesn’t even comprehend the nature of the problem, and here he is pontificating on magic solutions completely free of facts and reason.

In my opinion this is not only wrong, but incredibly harsh.

It’s wrong because I think of biology itself as the programming language, and perhaps also the runtime.  If a C++ developer were asked to reverse-engineer a program written in Pascal, they would not have to learn Pascal (or worse yet, reverse-engineer the compiler and runtime) in order to create a functionally identical C++ program.  So I believe it could be with the biology and the functionality of the brain.

I understood Kurzweil’s statement to be about the creation of a computer program (in some existing, modern programming language) which implements at least a rudimentary version of the human brain’s algorithm.  For example, its ability to continously observe input and recognize patterns, resulting in emergent properties that make up at least part of what we call consciousness.  That’s why I think “reverse engineering” seems like an appropriate description, while “simulation” does not.

I won’t claim that this is what Kurzweil meant.  He may have meant exactly what Myers claims he did.  But I have the feeling Myers didn’t give this subject due consideration before lambasting Kurzweil over the supposed ridiculousness of his claim.

Bickering aside, what do you think of this subject?  Can we reverse engineer intelligence/consciousness or at least some fundamental components?  Will we have true “brain simulators” any time soon?  I’m  not remotely qualified to answer such questions, but I’m inclined to share Kurzweil’s optimizism and ambition about at least the former.

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 _tmain(int argc, _TCHAR* argv[])
{
    if (argc == 2)
    {       
        HANDLE hFile;
        hFile = CreateFile(argv[1], GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
        if ((long)hFile != ERROR_INVALID_HANDLE)
        {
            HANDLE hMapping;
            hMapping = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0, NULL);
            if (hMapping)
            {
                void* pMapping = MapViewOfFile(hMapping, FILE_MAP_COPY, 0, 0, 0);
                if (pMapping)
                {
                    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.

Sep 18 09

AT&T rant. Giving up on getting an iPhone 3G S.

by Brandon

I think I’m giving up on trying to get a iPhone 3G S.  In fact, I’m really tempted to ditch AT&T altogether and get one of those fancy new Windows Phones coming out next month on Verizon or Sprint.  Why?  Well, AT&T’s sales / service people have been extraordinarily awful since my iPhone was stolen back in February.

When I went to get my phone replaced, I was informed that I would have to pay the “full price” for a new phone since I had just used my upgrade eligibility to get the iPhone 3G last summer.  That wasn’t unexpected… I had gotten a discount on the BlackJack I bought when I first switched to AT&T in 2006, then paid the full price for an iPhone in 2007, then got a 3G in 2008 at the significantly discounted price.  I was frustrated that there wasn’t a better option for dealing with a stolen phone, but I didn’t really expect AT&T to subsidize another phone 7 or 8 months later.

Not wanting to wait (as I’m quite dependent on my phone these days), I agreed to pay for the phone.  I also looked at the HTC Fuze, but was told that the price would be basically the same, roughly $400.  So I decided to buy a new iPhone 3G 8GB (smaller than my original 16GB, but it saved me $100 and I didn’t really need all that space for my usage).  As I was checking out, the salesman handed me a sheet of paper and said I needed to sign.  “What’s this for?” I asked, as it looked like a service agreement and I knew I wasn’t buying one of those.  He said, “Oh, this is just something Apple makes us to whenever we sell a phone, you have to re-sign your existing contract.  Any other phone you wouldn’t have to sign it, I don’t even know why they do it.”  I thought that was weird, but shrugged and signed it anyway.  But before I did I asked an important clarifying question: “This won’t affect my upgrade eligibility, right?  If it does I’ll just buy a used phone or get my 1G iPhone back and use that until this summer since I assume there will be a new model.”  I was incredibly explicit about this question, and he was very explicit in his response: “Nope, you’ll still be able to upgrade.”  Great.  So I bought the phone and went about my business.

Fast forward to June when I decided to grab a 3G S.  This part I’ve written about before in detail. Well, I did as suggested and went back to the AT&T store in Bellevue.  There I was told that I couldn’t get the full discount, but that I could get the “early upgrade” discount, which I think means $399 for the smaller 3G S model.  Fine, that seems good enough to me.  But they’re out of stock.  The sales guy asks me if I want to back-order one, and I say yes.  He starts the process, but hits some kind of roadblock.  He says, “Sorry, I can’t order one right now and get you the discount, but if you come back when they’re in stock we can do it.”  Fine, whatever.  I call the place a couple weeks later and am told they’re in stock.  I show up to buy the phone, someone starts ringing up my purchase, and then they hit a problem in their software, saying that I can’t get the discount until sometime next year.

She calls over a manager who explains to me that because I got a discount back in February, I can’t get another one so soon.  Wait a minute, what discount?  I was told I was paying full price in February, and was explicitly told by an employee of that store that my upgrade eligibility would not be affected.  I explain this to the manager who insists that none of his employees would have done that, and basically accuses me of lying.  I pressed the issue and he said he couldn’t do anything about it, but that he would contact his “regional supervisor” or something and request that they do some kind of override for me.  He says it’s too late to reach that person today but that he’ll take my e-mail and phone number and get back to me.

I waited.  I never got a call.  I never got an e-mail.

I went back a few weeks later and got the same run around.  This time I was told the manager wasn’t in, and was given his card.  I haven’t written to him yet, I’ve been too busy, and I’m pretty disenchanted with the whole prospect.

I’ve been a pretty good AT&T customer for several years now.  I pay extra for text messages that cost them nothing.  I never make late payments (except when their useless AutoPay system kept screwing up, so I gave up on using that ages ago).  Last year I paid a ton to to them to use my phone while I was in Europe (when I probably should have just unlocked it and bought a pay-as-you-go SIM there).

What bugs me more than not getting the discount is that they’ve made a habit of lying to me and giving me the run around instead of being straight with me.  First, when the salesman told me that buying the replacement phone wouldn’t affect my upgrade eligibility.  Second, when I was told I could get the discount if I came back when they were in stock.  And then once again when I was told that the manager would try to help me out and get back to me.

Given the hostile treatment I’ve received I may terminate my contract early, pay whatever ETF there is, and switch to another carrier – if only in protest to the way I’ve been treated by the Bellevue AT&T store employees.  So which phones and carriers look like the best options to you?  Palm Pre?  The new HTC Leo looks pretty sweet, but they don’t have any details on who will carry it or when.  Let’s hope it’s not AT&T…

Sep 11 09

My favorite new TV ad

by Brandon

I got a sneak peek at this yesterday at the 2009 Company Meeting before its first airing last night. Check it out:

What do you think?  Good way to build some excitement? :)

P.S. – Everytime I hear that song, I think of G.O.B from Arrested Development.

Aug 21 09

Gnomedex 9.0

by Brandon

image

I’m spending most of today and tomorrow at the Gnomedex 9.0 conference at the Bell Harbor Conference Center in Seattle.

You can follow my updates about the event on Twitter or FriendFeed.

Aug 4 09

eWeek analyst agrees about Google Voice iPhone rejection

by Brandon

Andrew Garcia is about a week late to the party, but has posted an article about why he thinks Apple is building Google Voice-like functionality into a future version of MobileMe.

This is, of course, something I (and others) wrote about last week. Unfortunately Andrew doesn’t bring any new evidence to the table and just echoes the same theory. So I guess the best we can do at this point is wait and see if the FCC investigation started on Friday sheds any light on the situation.

Anyway, this makes me wonder why it took so long for a mainstream tech blog to catch on? Is everyone just that anxious to vilify AT&T?

Jul 28 09

Apple blocks Google Voice apps. But whose idea was it?

by Brandon

TechCrunch says, “Apple Is Growing Rotten To The Core.”  Apparently they’ve begun pulling or disabling applications that leverage Google Voice, and have blocked the official Google Voice app from the App Store.

Some, like TechCrunch, suggest that AT&T is behind this.  Others like Om Malik think AT&T has nothing to do with it, since they allow similar apps on Blackberry devices.

I’m not sure who to blame, and it really could be either.  AT&T surely doesn’t like the idea of you having access to unlimited SMS (that, via Google Voice and the iPhone’s push notification API, could work exactly like real SMS – where your friends can’t even tell the difference).  I bet the SMS fees they charge are just pure gravy.  I’m also not convinced by Om’s argument that the existence of Blackberry GV apps is sufficient for ruling out AT&T as the decision maker.

But let’s say Om is right and they don’t really care.  Why would Apple block Google Voice?  I can think of a few possibilities:

  1. Someone at Apple thinks AT&T cares, and doesn’t want to strain their relationship.
  2. Apple is afraid that Google might establish a beachhead on the iPhone and in the future use it to steal customers away to Android devices.
  3. Or maybe, just maybe… Apple has plans to offer Google Voice-like functionality in the future, and doesn’t want to have to compete on their own platform.

I have no idea if Apple is even capable of that, but the more I think about it, the more it makes sense to me.  Apple is smart.  They know this is just delaying the inevitable and that eventually we’ll have seamless integration between normal PSTN voice service and VOIP service.  Or we’ll just have VOIP and nothing else.  If Apple doesn’t drive this, someone else will, whether it’s on their platform or another.

Update:  Apparently I’m not the only one thinking along these lines.

Update 2: Or maybe it wasn’t Apple’s call after all. John Gruber claims to have confirmation that AT&T was indeed behind this.

Jul 22 09

Windows 7 is RTM!

by Brandon

Today the Windows “ship room” signed off on the final build of Windows 7!  We in Find & Organize had a bit of a celebration this afternoon, and it’s a really aweome feeling to have officially completed such an amazing product.

You can see a bit from the Windows ship room sign-off event at the end of this cool RTM video clip:

You can also read more about it here:

Windows 7 Team Blog – Windows 7 has been released to manufacturing

Engineering 7 Blog – Our next engineering milestone: RTM

Woohoo!  Time to go do a bit more celebrating :)

Jul 21 09

Windows 7 RTM availability schedule

by Brandon

Brandon LeBlanc over at the Windows Team blog has posted a nice overview of when the final Windows 7 “RTM bits” will be available through various channels.

There’s also a note in there confirming speculation that a Family Pack offering for installation on up to 3 PCs is in the works.

Jul 15 09

Are business documents in the cloud secure?

by Brandon

If you’re following any tech news today at all, you’ve probably heard about the hacking of Twitter’s Google Apps account.  Some have suggested that this is some kind of “wake-up call for cloud computing.”

Twitter responded and said not to blame Google or cloud computing in general.

I agree… mostly.  In my opinion, this isn’t a problem with storing your documents on a hosted “cloud” service like Google Apps.  It is, however, a problem with not enforcing (at the corporate level) the same kind of security requirements that have become common for on-premises document storage.  That means password complexity requirements, regular password expirations, and very very strict account retrieval options (if you allow such an option at all).

Does Google allow Google Apps customers to enforce such restrictions?  Actually, I can’t tell.  I went to the Google Apps site and looked around and couldn’t find any indication, even in their Security FAQ page.  I even did a search for “password” on the Google Apps Premier site, and got no results! (same for words like ”security” – hmm).  Maybe someone should tell them to switch to Bing for searching their site ;)

A web search on Bing or Google returns this story, which seems to indicate Google does or at one time said it would support such restrictions.  But I don’t see any other sites mentioning it, nor any indication from Google itself.  If they don’t offer that ability, they certainly should!

But as Twitter said, this was really a failure on their part, not Google’s.  On the bright side, hopefully all of the attention they’re getting will result in others fixing these kind of problems before they suffer the same fate.

Jun 29 09

I am not happy with AT&T customer service.

by Brandon

I’m confused.  AT&T wants me to pay $599 for a 16GB iPhone 3GS.  $599!?!  I’ve been an AT&T subscriber for about 3 years now.  I always pay on time.  I first signed up with a BlackJack.  Then less then a year after that, I bought an iPhone at full price on its launch day.  Then last year I upgraded to a 3G as soon as I found a store with one in stock.

Now I’m aware that most 3G users aren’t getting the discounted $199/$299 pricing that new subscribers are getting.  Though apparently some people are getting that deal.  Most others are paying $399/$499 depending on the model.  But $599/$699?  That’s ludicrous.

What’s more, I actually bought another iPhone 3G from the AT&T store at FULL PRICE in February, after my original iPhone 3G was stolen.  Apparently, even though I paid full price, they extended my contract and upgrade eligilibility from that point in February.  I asked very specifically, and was told by the AT&T store staffer, that replacing my iPhone 3G at full price would not affect my upgrade eligibility. 

Well, apparently that’s not true.  Even though I paid the full $399 price for an 8GB replacement phone, I’m now listed as not eligible to upgrade until 7/15/2010.  Seriously.  If I’d been told that buying that full price replacement would extend my contract and upgrade term, I obviously wouldn’t have done it, and would’ve just bought one on eBay or Craiglist.  In retrospect, I probably should’ve done that anyway.

So this afternoon I spent a good 20 minutes going over this with a customer service rep who insisted that I had never bought an iPhone 3G last summer and that I “upgraded” to the 3G from an original iPhone in February at an Apple Store.  The account summary she forwarded me indicates an upgrade and new contract in February but doesn’t indicate what I “upgraded” from or where I did it, so I think she was just making that up.

I told her I wouldn’t care about the contract being renewed if she could just fix my upgrade eligibility, since it should be based on the last time I got a discount on a phone, not the last time I paid full price for a replacement.  She said this couldn’t be done, and refused to transfer me to anybody else.

The best she could tell me was that I needed to take any paperwork I had to the AT&T store in Bellevue and try to convince them to fix it for me.  This means rummaging through boxes (since I just moved) to hopefully find at least the receipt for the new phone, and taking at least an hour out of my time, with very little promise of actually achieving anything.

I’m going to try that tonight or tomorrow.  If they can’t help me, I may have to go take a look at the Pre.

May 25 09

Twilver page on Brandontools.com

by Brandon

I put up the start of a description page on BrandonTools.com for Twilver.  I started with a list of what’s currently implement, what I plan to implement soon, and future feature ideas.

At this point , having it locked to the 3.0 developer preview of Silverlight actually seems to work as an automatic filter to keep the initial testing group nice and small :)   Perhaps in the next few days as I get more functionality enabled in it, I will set up a forum on BrandonTools.com and try to recruit a few more testers to try it out and report bugs + suggestions.

If you want to keep up to date on its progress, just watch this space, or follow me on Twitter!

May 25 09

Twilver authentication model

by Brandon

I had some questions in the comments about how I built Twilver, so here’s a quick overview of how the app works.  Of course this is still “prototype” territory so it could change entirely in the future, especially if you have better ideas!

Anyway, the current build works like this:

First, you browse to Twilver.Cloudapp.net which is an Azure ASP .NET page hosting the Twilver Silverlight 3.0 control.  The control checks to see if it has a cached access token, and since it’s your first visit, it does not.  It then redirects the hosting web page to Twitter and makes a call via the OAuth API.  Then you log into Twitter directly so only they see your credentials, and they give back an authorized token to my ASP .NET service on Azure, via the OAuth callback registration.

After that my service exchanges the auth token for an Access Token and Access Secret, which are provided by Twitter and don’t expire unless the user goes to Twitter and revoke’s my app’s authorization.

The web page passes the Access Token and Secret to the Silverlight control, which stores them in local isolated storage.  Then when the Silverlight control wants to make a request to Twitter, it calls into my proxy WCF service running on the Azure server.  This is necessary (I think), because Twitter doesn’t register their API for cross-domain access by Silverlight and Flash.  So Silverlight prevents me from making a direct cross-domain call.  My proxy service is a very, very simple WCF wrapper around the Twitter API.  Building this in Visual Studio was dead simple.

In the future I could change it so that the access token and secret aren’t stored in the Silverlight local storage, but instead are stored by my service in the Azure storage service.  For now, having the control do the caching seemed simplest, as it means my service is stateless and doesn’t track anything at all about users.  I may want to change that any way in the future, though, so that I could offer features like roaming settings and such.

So that’s what I put together this weekend.  Any feedback or suggestions would be more than appreciated!

May 24 09

My new project: Silverlight Twitter App

by Brandon

Update: As of 5/28 I ported Twilver to run on Silverlight 2.0.  I’m in the process of refining that port, and creating a Windows Gadget (for Vista + Win7) that hosts it on your desktop or sidebar.  I’ll make further posts with more info about that.

If you follow me on Twitter, or read my earlier post about Twitter clients, you might have figured out that I’m not exactly thrilled about the state of Twitter clients on Windows.  I’ve also long been itching to see what all the hype with Windows Azure and Silverlight was about, and to try and wrap my head around XAML.  So a few days ago I decided to check out the Silverlight walkthroughs and installed the Azure and Silverlight 3.0 Beta SDKs.  Since then I’ve been busy (well, mostly yesterday and today)…

twilver1

So there’s my first Silverlight + Azure app, running standalone thanks to Silverlight 3.0’s new out-of-browser support.  Of course the UI and feature set are very early at this point.  But I’m pretty happy with what I was able to get working in such a short time.  Especially since I spent several hours just figuring out how to deal with Twitter’s OAuth authentication API.

Unfortunately there isn’t an end-user friendly version of the Silverlight 3.0 Beta (you have to get it via the SDK), as it is targeted at developers only.  So that means it’s not very convenient to share this with potential testers.  In the meantime I may look at putting up a Silverlight 2.0 version (confined to a browser window) for people to look at.  I have no idea what the Silverlight 3.0 timeline is like, but now I have reason to hope it gets released soon =)

I plan to work pretty aggressively on matching feature parity with the popular clients, like Witty and Tweetie, and then start working on some other ideas I’ve had.  My very first goal, though, is to get the basic functionality available in a lightweight, attractive client UI.  Right now the Windows offerings are either horrendous resource hogs (Witty), or butt ugly (all the Adobe AIR apps, like Seesmic Desktop).  The Mac client situation seems quite a bit better, and that just makes the Windows situation bug me even more.  Hopefully I can help change that.  And since Silverlight is cross-platform, I may be able to win over some Mac users as well :)

Oh yeah, the name I’ve been using for the project is Twilver.  This is likely just a placeholder until I decide on something I like better… I was originally going to call it Twilight, but apparently that name has already been claimed.

May 22 09

Federated Search Implementer’s Guide Updated

by Brandon

Hope you’re all enjoying the Windows 7 RC!

This week we published an update to the Federated Search Implementer’s Guide.  This update includes some new information as well as some corrections to the original document.  Most crucially, the original document erroneously indicated that the URL template contained an attribute called “format” – when it was referring to the “type” attribute.  So if you followed the guide exactly, your OSDX file wouldn’t work properly with Windows 7 (or anybody else following the OpenSearch spec).

This update also includes additions such as information about providing “collection” templates to display results without the user entering a query, details about URL protocol support, and more.

Link: Windows 7 Federated Search Provider Implementer’s Guide

Apr 24 09

Windows 7 RC is almost here!

by Brandon

Fellow Windows blogger and guy-named-Brandon, Brandon LeBlanc, posted an update outlining the timeline for official availability of the Windows 7 Release Candidate.  We’ve all been working very hard on this for a long, long time now.  I’m really looking forward to hearing what everyone thinks!

Apr 6 09

IOpenSearchSource documentation

by Brandon

Just wanted to post a heads-up to interested parties, the stub page on MSDN for IOpenSearchSource and its one method have been replaced by the draft documentation.

The new page roughly sums up its use and purpose:

A client-side OpenSearch data source that sits in between the Microsoft Windows OpenSearch provider and the external data source.  With a search connector (a .searchconnector-ms file), Windows Explorer calls your implementation with the query parameters. Your implementation returns results formatted in RSS or Atom format. That allows your implementation to provide custom authentication UI and connect to the data source using its proprietary API.

More details at:  http://msdn.microsoft.com/en-us/library/dd378289(VS.85).aspx

Unfortunately we still don’t have any details on how you actually hook up an implementation of this.  The doc / SDK folks are working on this but it’s part of a larger effort that’s taking a bit of time.  In the meantime I’m going to see if I can post an example here or on CodePlex.  Most likely I’ll be posting a detailed .NET example followed by a simpler C++ version.

If you have questions about whether this API may end up being useful to you, let me know, and hopefully I can help clarify what is or isn’t possible.

Apr 2 09

Apparently I drive a car the way I use a computer

by Brandon

Last week Raymond Chen posted about how he drives a car the way most people user computers.  His point was simple: he doesn’t care about the “driving experience,” he just wants to get from point A to point B.  I like the computer analogy he made, as it makes sense to me that normal PC users simply want to get something done, and they don’t want to understand the technology or the operational subtleties of the tools they’re using.

I’m not in the same bucket at Raymond.  He doesn’t like driving a manual and doesn’t care to improve his ability at doing so.  However, when I bought my car I had a choice between the faster dual-clutch race transmission that Audi calls ”S-Tronic,” (which can work like an automatic or be controlled via paddle on the steering wheel) and a regular old-fashioned stick shift with a clutch pedal.

I chose the stick.  It’s what I was used to from my previous car, and it makes me feel more in control of the vehicle.  It wasn’t a simple choice, because the S-Tronic isn’t a regular automatic.  It’s lightning fast, way faster than I ever could be.  But ultimately I decided against it because I didn’t like having control and information taken away from me.  With an automatic I can’t just disengage the clutch and let the car roll forward or backward.  And with the paddle-shift option, I can’t easily tell which gear I’m in unless I look at the dash.  With a stick, I know just by feeling.

Taking that away would be like taking my debugger, my command line, or some other source of control or detailed input which I’ve come to rely on.  If you’re going to do that, you better offer something awfully compelling in return.

Mar 23 09

E7 Blog: Federated Search in Windows 7

by Brandon

Late last night Steven updated the E7 Blog with a post about Federated Search in Windows 7.  I co-authored the post with two program managers from my team.

Check it out and let us know what you think!

Mar 8 09

How do you Twitter?

by Brandon

I created my Twitter account back in the very early days of the service.  It was so long ago that I can’t even link to my original posts, as apparently their archives don’t go back that far… Lesson: Twitters are not forever!

Despite that, I never really felt that I “got into” the whole twitter phenomenon.  I experimented with different interfaces for it… the basic Twitter web UI, the original Twadget sidebar gadget.  It was largely functional, but not the prettiest thing and had its bugs.  Eventually I stopped using it.

I’ve always had the SMS setup enabled for a small group of my former colleagues, but it was really just our own private backchannel, not the true “twitter” experience as most would describe it.

For a little while I tried various iPhone apps, like the PocketTweets web app, and later Twitterific.  But none of them really stuck.  Now I’m trying out TwitterFon and rather liking it, so maybe, just maybe I’ll start becoming a regular Twitter’er.  Why do I bother?  Well, I’ve attended three “tweet-ups” now hosted in Issaquah by my friend Chris Pirillo, the most recent of which was Thursday evening and featured special guest Chris Brogan.

This afternoon I tried to check on the state of Twitter gadgets for Windows.  Sadly, I have to say it’s not very good.  Of the slim pickings, I’ve installed one called Tweets – which to be fair is labeled as an early beta / preview release.  In terms of appearance, well, we’ll go with “acceptable” which puts it far above the competition.  In terms of features or options, well, it just doesn’t have any.

Now I’m starting to think of just writing my own.  One of the existing gadgets is a CodePlex project called Chirpr, but it looks pretty far from what I’d try to build if I just started my own.  In fact, I’d be tempted to cheat and just write one that uses .NET, or perhaps use it as an excuse to go play with Silverlight.

So now it’s time to get your feedback.  Do you Twitter?  What apps or interfaces do you use?  Do you try to read everything?  Or everything from certain people?  Or do you just respond to interesting tweets if you happen to be looking when one floats by?  Would you use a Windows (i.e. “sidebar”) gadget if there were a good one?  What features or options would be important to you in a desktop Twitter gadget or app?

Feb 21 09

I love WordPress

by Brandon

If there’s one example of a free and open source project that continually impresses me, it is WordPress.  I’ve used it to power this blog for quite a while.  But I also used it as a CMS for the WeHaveHope.org website, and am now using it as one for an even larger project that I’m working on – a new website to replace the one currently in use by Village Volunteers.

I never really had any experience with PHP until I started dabbling in WordPress, but it was easy enough to pick up the basics, and the WordPress “API” documentation for building “themes” is quite good.  It provides all the infrastructure for the site and great tools for content editing and publishing, leaving me to only worry about the design and layout of the site itself (and in turn letting the content people worry just about content). 

As an example, the new site I’m working on has a “featured content” slideshow on the home page that I designed using JavaScript and a little PHP.  The PHP code calls into WordPress and grabs the latest 5 pages tagged with “featured” by the editors, and it pulls an excerpt and image from them to display sequentially in a nice little slideshow to show off new and featured content.  WordPress made this easy for me to develop, and makes it easy for my less technical friends who do the content to make use of it.

Now don’t get me wrong, I love ASP .NET.  If I were writing a web service or any kind of complicated web application I’d use that without a doubt, if only because I’m more comfortable in C# and the relevant tools than with their open source / Linux alternatives.  In fact, that’s why BrandonTools.com runs on a Windows server – I had (and still have) some plans to dabble in some web service projects, and so I put that site on a Windows server so I could at least host prototypes there.

Unfortunately, the Community Server software powering BrandonTools.com hasn’t impressed me at all.  In fact, I’m probably going to ditch it soon if I can find a good alternative and can find a reasonable way to migrate as much content as possible.  It’s a shame really, and for me proof that the effectiveness and utility of applications are often more important than the details of underlying technology, or the philosophy with which it was developed.

So for straight-up web site design, I’m hooked on WordPress, and not afraid to admit it.  At the moment it’s clearly the best tool I’ve found for the job.  I would love to see an equivalent platform get developed for Windows / ASP .NET, and who knows, maybe something like Oxite will get there some day.  But so far WordPress seems to be in a league of its own, not just as a blogging platform but as a very effective content management platform – particularly with their latest 2.7 update which really raised the bar.

Oh and did I mention that in 2.7 its web configuration tool has a one-click in-place upgrade option that pulls down the latest version directly from WordPress.org and applies it to your site?  Yeah, it’s seriously slick.

Nov 19 08

Flickr search in Win7

by Brandon

Long Zheng of iStartedSomething.com has taken it upon himself to enable users to leverage my Windows 7 feature, called Search Federation, to search their Flickr photos from inside the Explorer.  

It looks like a work-in-progress, and since his service works as a proxy to talk to Flickr, performance isn’t what it would be if Flickr had a native implementation.  But for something he threw together over the last night or two I’m impressed!

We’ll be talking more about Search Federation on the Engineering Windows 7 blog soon, and will have much more to share when we deliver the upcoming Windows 7 beta release.

Oct 25 08

Off to Los Angeles

by Brandon

In about an hour I’ll board my flight to LA, which will be my first on Virgin America airlines.  I’m heading down a day or two early to visit my younger sister and enjoy a bit of warm sun before the conference kicks off on Monday.  From what I hear, there should be some pretty exciting stuff happening on Monday beginning with Ray Ozzie’s keynote address.

Of course, what’s most exciting to me is that on Tuesday we’ll begin talking about all of the work my team and I have been doing for nearly two years now (has it really been that long?!?).  My friend and colleague David Washington, platform PM for the Find & Organize team, will be presenting our session on Tuesday afternoon.  It’s the one titled “Windows 7: New APIs to Find, Visualize, and Organize.”  Apparently it was a bit of a challenge to come up with an interesting title that didn’t spoil the fun of our announcements.  At any rate, if you’re at all interested in Windows Explorer or Search – you won’t want to miss it :)

I’ll be there to help answer questions after the session, to assist with our hands-on labs, to hear everything you have to say about the work we’ve done and what we can do to make sure Windows 7 is a compelling offering for you and your customers / users.

Oh yeah, and one more thing for those of you following along at home.  On Thursday, David and I were interviewed by Dan Fernandez for my very first Channel 9 video.  I expect it’s the first of many, and I think you’ll enjoy it when it’s made available in just a few days.

Oct 20 08

Wall Street Journal butchers net neutrality issue

by Brandon

I was just reading this article from the Wall Street Journal and was struck by how it butchered an issue very important to everybody who uses the internet.  Mind you, this isn’t a WSJ “blog” post, this is the full-on deal apparently penned by Monica Langley and Jessica E. Vascellaro

Here’s where it started to go wrong:

Congress is considering measures that could have an adverse impact on Google’s business, including laws that could limit companies’ ability to deliver personally targeted online advertisements and rules that would allow telecommunications companies to charge different prices for different levels of Internet service.

At first I thought to myself, “what the heck does that mean?  ISPs already charge different prices for different service levels.”  Oh well, whatever, this article is about Schmidt supporting Obama so one goofy line is forgiveable right?  But oh no, it gets much worse.  Speaking as if she/they were an authority on the matter:

Mr. Obama’s stances on some issues important to Google remain unclear. Both the candidate and the company, however, have said they support limiting Internet service providers from charging different rates for different levels of service, saying it would be discriminatory and stifle innovation.

I’m not aware that Obama or anyone else have supported such limitations.  Such limitations make no sense at all.  What Obama and companies like Google, Microsoft, and others all DO support is what has become known as “net neutrality.”  Net neutrality isn’t about price levels for internet service.  It’s about limiting or banning internet service that discriminates against specific endpoints.  The closest thing I can think of to what the WSJ said is that one effect of this could be an ISP charging a higher price level for somebody else’s service.  

It would be like AT&T charging me extra, or intentionally giving me more dropped calls, if I use my iPhone service to call Dominos pizza instead of Pizza Hut, because Pizza Hut made a deal where they pay AT&T to sabotage phone calls to their competitors.

Price levels?  Come on WSJ, I use to respect you guys.

Apr 7 08

A glimpse of the future

by Brandon

Today I saw, for the first time, a software release where an update had to be released to address 32-bit compatibility issues, as the initial release was apparently only tested on 64-bit machines.

Neat.