It’s quiet…too quiet

Things have calmed down significantly since the big check-in a couple of weeks ago. Time flies when you’re waiting for someone to install on the ref platform for you. This is the part of Open Source development that I’m not so good at: patience.

What have I done? Well, I filed a bug asking for the install of Windbg on the ref platform/tinderboxen so that we can start pumping out source indexed nightly builds. Once those are coming down the pipe I can download and test them to be sure that everything is working as expected. Based on the few tests from last semester, I anticipate some tweaking will be needed to where the files are stored and possibly to the cvs set up.

In the meantime it’s time to think about what the next few releases will look like. Oh, and I have a demo on Thursday (/me prays for the install to happen before then so there’s something worth demo-ing).

Here’s what I’m thinking:

0.8 – all tests and tweaks for the user side of source server builds
0.9 – docs and tutorial about the source server and how to use it
1.0 – ? need to think more about that.

In a perfect world 1.0 is a pdbstr replacement but that is starting to seem like something out of my league. I really don’t even know where one begins with hacking into a microsoft hex file to deposit information.

Perhaps there will be unforseen bugs or other features that can be added to make the 1.0 of this project sharp and professional.

Okay, it’s time to go pester the build guys some more for that install.

Google search FTW

Here’s reason 1,000,001 why I love the internet:

The VMware Fusion Windows XP vm is pretty important to daily life for me and today it decided to hang. Halfway through a “Restoring Virtual Machine State”, the progress bar just stopped moving and I had to force quite Fusion. After many restarts, and other experimenting, I was starting to worry that I was in for a long Saturday of re-creating an XP vm instead of working on a job I’m doing.

Instead, a quick Google search for “restoring virtual machine state hangs fusion” turned up this little nugget of wisdom that I bet will come in handy again someday for me, and maybe for anyone else out there who also depends heavily on Fusion.

Go to ~/Documents/Virtual Machine right click on the .vmwarevm that is causing the issue, right click on it and “Show package contents” then delete the .vmss file.

This gets rid of the session state and when you restart the vm it will boot up as if it was not saved in mid session.

Lose the session, no biggie – lose the vm…well that would be much much worse, right?

A day that shall go down in infamy…

Today at 6pm I have finished the necessary changes to my Source Server patch so that it is ready to be checked in. This will be my first check in to the Mozilla code and I’m pretty psyched that after about 6 months of working on this, this particular chapter is about to close.

The last few changes today were quite interesting and good learning for me. Basically, I had to take my | if self.srcsrv | stuff and put it into a separate method. Ted pointed out that this was because it’s win32 specific code, so there’s no need for it to be in the general Dumper class.

Hello object-oriented programming? This is exactly what I need to learn this in an applied manner and I will remember this lesson better than having just read it in a book.

So now there’s a declared SourceServerIndexing method in the Dumper, and then a detailed method of the same name in the Win32 Dumper – which is where all the action is. I wonder if there’s a chapter somewhere down the line where I will try to take this SourceIndexing into the Linux and Darwin dumpers.

When I first pulled everything out into the method, I had to wrap my head around the way that Python calls methods. Basically, if I called it from within Dumper, I need to do self.MethodName so that it looks for the method inside the Dumper class. Without the self. in front, I got an error message saying that a global name “MethodName” was not recognized. Also, when I was running | make buildsymbols | I wasn’t source indexing the pdbs. So I put in some print statements to see if all the right steps were happening. They were. Confusing.

Eventually I noticed that there’s a |shutil.copyfile(file, full_path)| which is what puts the pdb files in the place that I want them to be for indexing and I was calling my method before that. Quick switch and the lights turned on, the music played and my pdb files were indexed.

This has been a great project for teaching me how to set up a work flow as efficiently as possible. Now I’m at the point where I can get right into working on the code and testing frequently with minimal effort. The closer I got towards getting it all working, the easier the work flow got. Right now I can test this patch with just MingW32, a command shell and my Crimson Editor. I can tell within the first few seconds of |make buildsymbols| running if it has worked and then a ctrl + C to interrupt it and get back to the tweaking of code.

It feels great to have put this up for approval. Can’t wait to see what happens next.