Your markup should be better for a guy who's worked as a Web Developer, tables are so 1990ish and even though you are using some divisions you're killing the whole point of using css for layout because of the tables.
[Front End Rant]
Markup-wise, lose the tables, use a DOCTYPE because your page is in quirks mode (meaning browsers can do whatever the fvck they want because you're not adhering to any DTD), and start using CSS purely for layout. Wrap h1's around your <img> and provide alternative text for screen readers, or incase the image was deleted/corrupted. Your nav is VERY simple, just have a <ul> with 4 list items that hold the anchors (links) and use the :hover property on the anchor to change the background instead of resorting to Javascript. I think this makes it a little faster because no JS parsing has to be done, and your stylesheet will be cached and it's just a simple background color effect, nothing too difficult and people who have JS disabled will still see that hover effect. Markup your elements more semantically, don't use the <center> element because its deprecated and its presentational (you want to seperate content and presentation). Have a wrapper with either a percentage or ems as the width, this will make it fluid/elastic so it can adapt to any resolution (if its very small try using min-width).
Do not use a width such as 1024, that's too high IMO. You should be safe with either 750 or 950 pixels or just use a percentage such as 60% (You don't even have multiple columns that are fixed width, meaning that it doesn't really matter if you go from fixed width to a percent/ems as long as you kill the table, it will adjust).
[Design Rant]
I'm no (great) designer but I'd make these changes...
-Get rid of that Waterloo logo.
-Go to a stock website and find SOME nature or something that you can use as your header background, go into Photoshop and put 'William Chan' on top and make it blend in using some borders or whatever. There is ABSOLUTELY no color if you remove that Waterloo logo, everything is BLACK and WHITE and BORING. Get some colors goin! If you can't decide, just go to any random site and "get inspired" (this does not mean steal images) but just try to get some type of color theme going..
-Typography wise the text under your name on your resume is too godamn small, bump it up at least one size
[Usability-wise (mixed with front end)]
-Please REMOVE the ONCLICK="" attributes on ANY element ( not only the nav ) but your logo as well, because ONCLICK="location.href='index.php'" requires javascript to be supported. If it's not there it will be a DEAD link and NO ONE should be using ONCLICK as a replacement for the href attribute. Also, search engines (well it doesnt matter for this specific site but incase you do develop more in the future) won't be able to crawl because they don't support JS and they most likely look for the HREF="" attribute on anchors so they can crawl the whole site.
-On your navigation, indicate what page the user is on by assigning a class to the navigation element (li)
<ul id="main-nav">
<li class="current"><a href="profile.php">profile</a></li>
<li><a href="portfolio.php">portfolio</a></li>
<li><a href="resume.php">resume</a></li>
<li><a href="contact.php">contact</a></li>
</ul>
ul#main-nav { list-style:none; height:20px; overflow:hidden;}
ul#main-nav a { display:block; width:100px; height:15px; }
ul#main-nav li { float:left; }
ul#main-nav li.current a { background-color:#333; }
That should probably do it, might have to set a width on ul#main-nav li { } though (This is off the top of my head)
P.S. - the reason your header doesn't stay in the same place is because on some pages the content causes a scrollbar which takes up the width of the browser and forces the table to shift a few pixels. This is common, though. If you really care you can either kill the scrollbar (this I don't recommend).. I believe it's html, body { overflow-y:hidden; } or try just overflow:hidden; on html/body .. a better solution would be to add more content to your homepage or any page, or set a height on html/body elements such as 100% (maybe 101% or add some spacing/padding) so every page has a scrollbar.
Anyways it's getting late(very late) and I should be heading to sleep. later.