Exploring what pdbstr.exe actually does

As I wait to find out what else I can do to get the symbolstore.py patch commit-worthy, I thought I would start to look into reading and writing to pdbs as described here.

I downloaded Paws.exe which is a hex editor program and also installed Borland’s C++ compiler so I could try to dump the contents of a pdb with Borland’s tdump utility.

This netted me a whole lot of hex code and so I stared at that for a while, consulting Jeremy Gordon’s information, and didn’t really figure much out. I can see the data block that pdbstr write to the file, it’s just not clear after comparing the dump information of a couple of pdbs how or where the data block’s write position is determined. This is a hex dump.

For kicks my friend John Ford and I looked at pdbstr.exe through strace and Wine on his Ubuntu box. The results are here.

There is a StraceNT for Windows so I will try to run pdbstr with that and hopefully end up with results that are a bit clearer since they won’t include the Wine calls.

Anyone with any ability to read into either of these dumps – feel free to comment and share your insights.

The Gap.

This morning I tried to explain to my Deaf-Blind student the usefulness of Bookmarks. What he and my friend’s mom who I was helping with a website the other day have in common is that they both save web pages to their desktops. For the mom, this results in an mhtml file on her desktop that, once opened, doesn’t help her know what website she is visiting…and she mistakenly thinks she is on the web when she looks at it because the “file:///” URI signifier means nothing to her.

When my student saves the page, I believe he is selecting a different option which creates a folder on his desktop containing as much of the page as Firefox will grab. Again, when he goes back into this folder later many things happen:

  1. He doesn’t know why the folder is on his desktop
  2. The contents of the folder are all files that are unfamiliar (.css, .js and .html)
  3. There is no signifier of what the original web page was

So today I thought – okay, let’s learn about bookmarks.

I showed him how to drag and drop to the Bookmarks Toolbar and how to Bookmark using the pulldown menu. I’d like to think he “gets it” but I know that it will take many more lessons for this to get across. What did get a little recognition of concept was that he would have access to the most recent content if he used bookmarks instead of saving a local copy. That was appealing.

All this comes to me now as I am reading these studies done on bookmarking habits, and reading into the logic behind Places and how the changes to the Home button are going to be initiated in Firefox 3 and I feel concerned.

I love the idea of bookmarking with tags and never having to scroll down a list again. I love the awesome bar’s quick access to recent pages and I love that with minimal typing in the location bar I can see my history and get to previously visited pages quickly. Here’s the thing – I’m able to take in the whole screen at once, I see little details quickly and I know what I’m looking for.

The mom, the student, and I’m willing to bet a lot of unstudied people out there are not doing this and are way behind on the idea of tags let alone how to use them.

I would love to do studies of web usage and get a really huge pool of participants because from what I’ve read so far, the largest group was 320 people at a tech conference and in my opinion that’s a lazy study that will only confirm what the researchers and pushers of web 2.0 want to hear.

Moving forward is amazing and fun for me but I’m loathe to leave all the people I know and love behind to wander around lost and confused. My mom said the other day that she now understands less than 50% of what I’m talking about when I describe the projects I’m working on. 50%?! That sucks! My mom is actually a very astute person who even took some computer programming back in the 80’s and she is very competent with power tools and techno-gadgetry. I want to be at least 80% compatible with my mom when talking about my projects. It would be great if it was possible for her to participate in the discussion instead of just listening politely.

Today I’m lamenting that only a select few are steering the discussion about the future of bookmarking and the student and the mom are left on the other side of a widening gap. Their bookmarks and habits are just as, if not more, important.

Eric Raymond peeved me this morning…

I was on my morning commute to school, reading my ethics textbook, happily processing information about intellectual property and copyright law (my favourite things!) when I read this:

“Anybody who has studied software engineering knows that programmers do not actually spend most of their time originating software. They spend most of their time on service updates and maintenance. Nobody thinks about the implications of this: that the software industry is actually a service industry operating under the delusion that it is a manufacturing industry. Software producers are operating under a manufacturing and cost model, under which the way you make money is building a product and getting it out the door. Because they have this model of themselves as a manufacturing industry, all the bright people go to production and the dumb people go to the support desk. That’s why when you call a vendor support line you have to fight your way through three layers of idiots to get down to anyone who knows anything. ” – Eric Raymond in an interview.

Well, this got me a little angry.

Now, I won’t say that I have never had to do any “idiot filtering” when calling a large company’s support services. I blame this on the McJob model of customer service where companies hire people at low wages and then “train” them by giving them scripts to diagnose the simplest problems. Perhaps the company thinks it is also “idiot filtering” for the person who hasn’t plugged in their modem and we are all losing with this approach.

This is not exactly what I feel Eric Raymond is saying though. What I read into his statement is that there is a natural filtering of “bright” people and “dumb” people – like natural selection or something and that is just plain wrong.

I’m in the BSD program at Seneca College largely because I would like to be able to better support the hundreds of people I know who need technical support on a semi-regular basis and at the same time be able to help the hundreds of thousands of people I don’t know who also need support. I’m interested in technology and have always gravitated towards it while at the same time noticing that others do not. This puts me in a place where I could be a great “bridge” between techies and non-techies.

Why can’t programmers and other technically-stimulated people understand that they are a minority? Most people need help to operated systems, use gadgets, understand software and troubleshoot their life-enhancing tech gear. To be someone who supports them does not mean that you are too “dumb” to be on the creative end (which he already acknowledges is a small portion of the industry).

I’m sick of people treating documentation like a hassle, like cops to paperwork, as though it doesn’t matter…this leads to poor documentation done for documentation’s sake and not for the end user. In my opinion, you have to be “bright” to create tech support documents that help a user continue to patronize your software and not just quit. From what I’ve learned as a customer service representative in many forms, people will share their bad experiences to approximately 10 times more people than they will share their good ones.

I take this to mean two things for how to go about life:

1. Share your good experiences often to try and make up for how often people share bad ones
2. Be someone’s good experience so they have something positive to share

It’s a challenge to me and to other programmers to push ourselves to keep things clear and easy to grasp for the lowest common denominator as much as possible. This doesn’t mean the software is dumb or low level, nor does it mean that the user is. It means we will agree to speak a certain language together so the most people can benefit. People will clamour for software that does what they need with the least amount of work.

The article is good, I recommend reading it because Eric Raymond obviously knows his stuff and has some great insights to share. I’m inspired by his vision of alternative business models driven by open source. The quote just sparked something that was obviously bugging me already.

Back to reading up on ethics…