This week has been incredibly productive in terms of my GC project. I was able to get a lot of my last questions answered, a lot of the last implementation details figured out, and write a lot of good code. I believe that code "goodness" is iterative: it is through editing, revising, reviewing, and refactoring that code moves from first conception to maturity and quality. This is very much like book authoring at Wikibooks, because quality work there is an iterative process as well. Maybe that's why I like it so much. I wanted to have the last bits of the main tracing code finished by today, but that isn't going to happen. After that there are a few details to iron out, a few places where improvement is needed, full testing and debugging.
This doesn't count my desire to make a fully-threaded version of it available by the end of the summer as well. I have a few options for how I want to implement threading in the GC, but the technical details of that are far beyond the scope of this little blog. At the very end, I am going to need to tweak and adjust all the different parameters to ensure the GC operates as efficiently as possible.
This project has been a real booster for my programming skills, I'm pulling out C voodoo that I didn't even know I still had. Bitfields, linked lists, state machines, crazy data structures, esoteric keywords, it's geek nirvana here. I don't just have to make this software work, I'm feeling distinct pressure to make sure it works right. I find myself worrying about optimal pointer alignments, spacial locality optimizations, control-flow short-circuiting. It's fun stuff, and it's definitely good practice.
I've been running faithfully this week, every morning I've been going out for about 20 minutes, and last night I ran a little bit as well. It was better to go out at night with the cool air, but mornings have been pleasant enough too. My performance has improved every day so far, although in different ways. My respiratory endurance has improved noticably in the span of a single week, and I was able to go more then twice as far today as I could on monday without needing to gasp for air. It's no longer bad air flow that limits me, it's my ankles and calves. Pain in my ankle and in my calf muscle bring me to a stop before my lungs do. I definitely don't want to injure myself, so I'm not going to push anything yet.
This weekend we've got the tasting for the wedding food. My parents and hers are joining us at the country club to sample some choices and make the final decisions about what we want to have at the wedding.
I have a job interview in two weeks with The MathWorks, the company that makes MATLAB (the software I did my thesis in, and which I've discussed on the blog here before). I'm starting to get really excited about it, because I think it could turn into one of those dream jobs that you read about the the graduating-engineering-student magazines. The whole thing starts off with a technical interview, which is another reason why I'm glad to be practicing my C-foo so much. But, if I do poorly on that, I get sent right back home again. A little bit of pressure, but I think I'm up for the challenge.
Dana is worried about the situation though, she isn't too happy with the prospect of moving up to MA. I can't blame her, it is a big step for us to take. However, it's not a surprise either. I've been trying to ease her into the idea that we will likely need to do some moving when I get my first job, and I figure that MA is much better then TX, AZ, CA or Dubai. I'm going in to the interview with my hopes up and my fingers crossed, and we can worry about relocation and acclimatization if I manage to get an offer (which, of course, is no guarantee).