Thursday, September 28, 2006

Bench Press

I'm stuck at 200 pounds. That was my original goal for this year, but I reached it so early in the year I feel like I should easily hit 225 by the end of the year. Hmm, so how do I get over this hump? Well, I did some Googling and found some good tips and a workout that I'm going to try:

1. Improved Form

I have a tendency to pick up my feet and let my elbows get away from my sides when the weight gets heavy. I'm going to try to correct these problems ASAP.

2. Squats

I haven't worked my legs all summer. I give the pitiful excuse that since I play baseball I don't need to do them, the reality is that I am a lazy fool when it comes to lifting legs. So today I did my first leg workout in months and I'm forcing myself to do squats. Now, how can doing leg exercises help your bench press? Well, it all comes back to the level of testosterone in your body. After reading this article I was sold and I'm going to force myself to do squats every week, no more excuses.

3. Start Over

I'm going to completely change my workout. I typically do

135 x 12
155 x 8
175 x 5
185 x 2
195 x 1

Starting next week I'm going to do this workout over a 12 week period:

Week Weight Sets Reps
1 135 3 6
2 145 3 6
3 155 3 6
4 165 3 3
5 175 3 3
6 185 3 3
7 155 3 6
8 165 3 6
9 175 3 6
10 185 3 3
11 195 3 3
12 205 3 3


This means that by Dec. 22nd I should be lifting 205 three times, which means I should be able to bench 225 one time easily (according to this chart, which seem correct). The above workout should be easy until week 6, I'm a little scared after that. :)

I'll be doing this the rest of the week:

Monday - Light Bench, Curls, Calves
Tuesday - Squats, Leg Extensions
Wednesday - Pull-Ups, Hamstring Curls, Shoulders
Thursday - Off
Friday - Bench, auxiliary Chest

I'm putting my faith in the workout, wish me luck.

Sunday, September 24, 2006

Rain Rain Go Away

Our championship game today was suspended in the 2nd inning due to rain. The good news is that we were winning 12-1 when it was called. The bad news is that there are 7 innings left to play....

My college football poll remains unchanged, but look out for Florida, they are really starting to impress me. They should fire their AD for scheduling Alabama, LSU, @Auburn, and Georgia consecutively. If they can make it through that stretch they will be #2 in my poll.

At the beginning of the year I picked Va Tech to beat Georgia Tech...boy was that stupid. I am looking forward to the game, but the Yellow Jackets have an above average defense and the best wide receiver in the country. Not to mention a quarterback that can scramble which is something the Hokies have always had a hard time stopping.

Andrew turns one year old this Thursday. His walking skills are really impressive. I enjoy watching him go from object to object and laughing at himself when he makes it without falling. We are going to have a birthday breakfast for him Saturday before we head over to the tailgate.

Thursday, September 21, 2006

VT Recruiting

It's recruiting season at Virginia Tech. I spent a few hours on Monday and Tuesday on the Virginia Tech campus hanging out with computer science students. On Monday through our membership in the Computer Science Resource Consortium at Virginia Tech I attended a luncheon for all of the CS majors who won scholarships over the last year. I'm not sure how I didn't know this, but it turns out the number of CS majors is dropping every year. And the percentage of CS majors that are women is dropping every year too (I actually knew this part). Women only account for 6% of all CS majors. I'm sure that means that in many CS classes you will be the only female in the class, not good.

On Tuesday, I had the opportunity (again via our membership in the CSRC) to join a panel that would attend a junior level CS class and answer questions from the students. It's funny how I remember doing this as a student back in 1999. Back then our class size was triple the size of the class I attended on Tuesday. It's pretty scary how few CS majors are out there and how huge the demand is going to be over the next few years.

The other members of the panel were from:
Vanguard (11,500 employees)
MITRE (6,000 employees)
Microsoft (61,000 employees)
Northrop Grumman (24,000 employees)
Lockheed Martin (135,000 employees)
SWIFT (1577 employees)

Webmail.us has 40-ish employees.

Needless to say I had an unfair advantage over all of these companies. One, I was the highest ranking person on the panel. Two, our company is local, so they can stop by and see me whenever they want. Three, poking shots at Microsoft is almost too easy. Four, start talking about time tracking at a defense contractor and you can almost get the recruiter to start looking for a new job. :)

Perhaps the most interesting question was "What don't you like about your job?". I was the only one who said "Nothing." And it's true, I love my job. We were also asked:

1. What's your opinion on the job market?

Crisis. The U.S. over the next five years will see the largest shortest of (wo)manpower in it's history. Good for students, bad for employers.

2. Define computer science.

The other members gave good definitions, I just added: CS is a discipline that allows you to solve problems in a creative and artistic manner. Beauty is in the eye of the code reviewer, tester, and user. (I just thought of that last part, but it sums up my long winded answer nicely.)

3. How do I keep my skills sharp and stay on top of the latest technologies?

Find the right job. Find a job that allows you to do this type of stuff during work. Wouldn't that be awesome? (I can see the defense contractors squirming in their chairs, hahaha). But, if you do accept a job with one of these other companies, stay on top of things during your free time, it will be well worth it when it comes time to find a new job.

4. When looking at resumes, do you favor students with master degrees over bachelor degress?

NOPE. We hire smart people who like to get things done.

Tuesday, September 19, 2006

We Won ?!?!!!


I was simply shocked when I found out yesterday that the Black Sox destroyed the NRV Boyz on Sunday 23 - 7. Wish I could of been there for that butt kicking. NRV Boyz were the #1 ranked team going into the playoffs. I thought we had a shot at winning, but 23 - 7 ? Wow, nice job guys. The rumor at the beginning of the year was that the championship game would be played at English Field on the Virginia Tech campus. I've never played on that field, it should be fun. Unfortunately we play the Warriors again, the team that crushed us the game before the playoffs started. I'm sure we will be able to give them a better game this time around.

Sunday, September 17, 2006

A Long Drive

After the Tech football game on Saturday Velvet and I packed up the kids and headed down to VA Beach for my niece's 5th birthday party. We get down there in good time (about 5 hours flat) and hung out with my sister for about two hours before heading over to the hotel. On the way to the hotel it became more than apparent that my son was not feeling good. After a couple hours of cleaning up and doing some laundry I finally make it to bed around midnight. The kids wake up around 7:00am and Andrew is not any better. I called my sister to inform her we wouldn't be able to stick around for the party and by 11:00am we were on the road back to Blacksburg. We made it home around 4:30pm. So I wasn't able to watch very much college football on Saturday, but based on the highlights and scores here is my new "top 5 teams most likely to play in the national championship" game list:

1. Ohio State

No change here, but with Michigan's unexpected win over Notre Dame it makes their season finale really interesting.

2. West Virginia

Only one opponent on their schedule can beat them.

3. Michigan

A very weak schedule with the exception of Notre Dame and Ohio State. If they can beat Ohio State in Columbus they will probably be #2 in the country.

4. Auburn

A nice win over LSU, if they can win out they are in, but a tough road ahead.

5. USC

A nice win over Nebraska, but was anyone else unimpressed with the game overall? I'm losing faith...

Honorable Mention: Louisville

And for you Hokie fans out there, I hope you paid attention to that Clemson game. It's going to be an interesting Thursday night when Clemson comes to town.

Friday, September 15, 2006

Amazon EC2

Today, with the help of Wenjie, I was able to provision my first 4 development servers at EC2. It was a really easy process. I had no problems installing the software needed for a MySQL cluster. Although I was unable to figure out the sql-node part of the cluster, I was able to get everything else running in under an hour. EC2 seems like a perfect environment for a test system. Having the ability throw away or create servers with one command is amazing. Setting up firewall rules was really easy too, I definitely recommend checking out EC2.

Sunday, September 10, 2006

National Championship Predictions (Week 2)

My updated list of the most likely teams to play for the National Championship (not necessarily the best teams in the country):

The top 3 are the same:
1. Ohio State
2. USC
3. West Virginia

I guess I screwed up with Miami and Penn State, here are my replacements:

4. Notre Dame

An impressive home victory over Penn State. If they can beat Michigan at home next week it's smooth sailing until the USC game the last week of the year.

5. An SEC team

OK, so this is the easy way out, but my goodness look at all of the SEC teams in the top 15: Auburn, LSU, Florida, Georgia, and Tennesse. I don't see how any team in the SEC could come out with zero losses, but if one does, they deserve to play in the big game. I need to watch a few more games before I pick a winner here.

Honorable Mention: Louisville

Black Sox Win !!!

The first round of the NRV MSBL is over and the Black Sox have advanced to the second round by pounding their first round opponent 22-10. We took it to them and never let up and it was an easy win. I went 2-3 with a triple and 4 RBI. A triple? Amazingly enough that was my first extra base hit of the year but it was by far my best hit of the year. I crushed the ball over the left fielder's head and just kept running. Next week we face the NRV Boyz. The first place team in the regular season. Win that game and we are in the finals. It will be a tough opponent but I hope we can pull through.

One problem for me though is that my niece is turning five next Sunday and is having a birthday party in Va Beach that I'm suppose to attend. Hmm, what to do, what to do...

Thursday, September 07, 2006

Black Sox Regular Season Finale

Tonight we played our final regular season game at Calfee Park in Pulaski. For those of you who don't know the area that well, Pulaski is a small town about 20 miles south of Blacksburg. Calfee Park is home of the Pulaski Blue Jays, a rookie affiliate of the Toronto Blue Jays. The park was built in 1935 and is simply an amazing place to play a baseball game. We rarely have an oppurtunity to play there, but since the Blue Jays season is over, we had the oppurtunity to make up one of our rained out games there tonight.

We typically play all of our games on high school fields in the area. It's amazing the difference between a high school field and one that is used for minor league baseball. The field doesn't raise or lower an inch from the backstop to the warning track. The infield is so smooth you just want to run around on it all day because it makes you feel fast. The infield grass is cut so close you would think it was the green of the 18th hole of a golf course. The pitching mound is the proper height and there are no big holes to slip and fall into. The batters boxes don't have huge divots from people standing in the same spot all year. The fence is so far away you couldn't imagine ever hitting a homer. The dugouts are actual dugouts (like lower than the field). The stands and bleachers look nice and comfortable. There are actual bullpens to warmup relief pitchers in between innings. I love playing on this field, you feel like a professional the moment you step on the field.

Unfortunately, we got our butt kicked tonight. We barely made it out of the first inning. I think the final score was 26-15 or something crazy. (Although scoring 15 runs is pretty good for our team.) I was 0-3, I guess I've been playing too much softball. Although we lost, I had as much fun playing as I have had in awhile. First, I know most of the guys on the opposing team and if you are going to get hammered I'd rather it be by a team that is a good group of guys rather than a bunch of a-holes. Second, I got to play catcher for three innings. I normally play centerfield, and I got to play second base several times this year, but I really don't like being the catcher. But, my opinion of the position changed dramatically tonight. I really had fun back there behind the plate tonight. One reason is that the pitcher did a good job of keeping the ball out of the dirt. That's the hardest part of being a catcher is trying to stop all the balls from going to the backstop on those low pitches. Second the pitcher didn't throw particularly hard or have nasty stuff. I would say he had decent stuff, but it's stuff that is very easy for me to catch. Last year I had to catch for Mannin and he throws pitches that are unbelievably hard to catch. Just really nasty pitches that break hard, late, and are thrown really fast. Last summer I caught an entire game for him on the hottest day of the summer and I thought I was going to die. Tonight, totally different. It was a blast and I'd definitely do it again, but not for Mannin, haha.

Our first playoff game is this Sunday at 10:00am. Yep, 10:00am. We get the first game of the quadruple header for our league at Calfee Park. It should be a blast. We finished the season in 5th place, which means we get to play the 4th place team in the first round. A game that is very winnable (we have already beat them 2 times this year). But nothing is ever easy for the Black Sox so wish us luck, we will need all of the help we can get.

MySQL Cluster 5.1

I've been researching MySQL cluster today and my brain is on a bit of information overload so I thought it would be wise to jot down some key points I have learned thus far.

MySQL cluster differs from a traditional MySQL installment because it is designed to work across multiple machines. In the traditional setup you install MySQL on one node and have several slaves that replicate the data and serve as backup servers in case of failure. In the cluster scenario there are a minimal of 4 machines (technically 3, but if you care at all about your data you will need 4). Machines fall into one of three categories:

1. Management Nodes
Management nodes are important for defining the roles of each of the other nodes in your cluster. Here you setup config files that the other servers read to understand how the cluster is setup. You would need at most two of these, one just sitting there in case the primary fails. If the primary does fail, it will not cause the cluster to stop working.

2. MySQL Client Nodes
Client nodes are the machines that actually perform all of the queries received from clients. You can setup as many of these as you load demands, preferably at least two in case of failure. In MySQL 5.1 these nodes do perform caching, but there are some gotchas that you should read in the documentation.

3. Data Nodes
The nodes use the NDB storage engine to replicate your data across multiple machines. This is layer I have the most questions about and I'm trying to find out more. Prior to 5.1 all database data, including indexes was stored in memory. So if you have large tables you need to make sure your data (and indexes) will fit into the available memory. A new feature of 5.1 is the ability to store only the primary key information in memory and store the rest of the data on disk. This will help a lot of really large data sets.

So if you had 2 management nodes, 2 client nodes, and 2 data nodes any of the nodes in the cluster could be shut down and there would be no loss of uptime or data.

A nice feature added to 5.1 is the ability to replicate clusters. So if you are paranoid and afraid that an entire cluster could go down then you could fail over to the secondary cluster. I didn't read the entire doc on this topic, but it seems complicated and probably overkill for most situations.

It's important to understand how indexes are implemented in the cluster scenario. Primary keys are implemented as a hash index type. They do this so they can partition your data based on the hash. This brings up two key points that must be understood when looking into the clustering:

The following queries will work great and be very fast (from the performance pdf available online):

SELECT * FROM tbl WHERE pk = 5;
SELECT * FROM tbl WHERE pk = 'ABC' or pk = 'XYZ';

The following queries will not use the primary key index:

SELECT * FROM tbl WHERE pk < 100;
SELECT * FROM tbl WHERE pk_part1 = 'ABC';

The last example is especially important to understand. If you have a primary key that uses multiple columns (pk_part1, pk_part2) you must specify the value of both columns in order for the index to be used.

Ordered indexes are implemented using T-tree's instead of B-tree's. This is for memory saving purposes and the need to not have to worry about disk-seek times (everything is in memory). This really should make any difference to the client but I mention here because I thought it was a great idea.

Data retrieval in a clustered scenario is very important to understand. If you do a query based on the primary key, the client node can go directly to the data node that has your row and retrieve it. If you do a query which results in the client having to use an ordered index, the client must query in parallel every data node in the cluster. This may be really fast, but would result in much more network traffic than a primary key lookup. The worst kind of query would be one where the client node must do a full table scan. In this scenario the query must be sent to all nodes. Prior to version 5.0 the "where" clause was not sent to the data nodes so that meant that the entire data set was returned to the client for scanning. If you had 2 million rows, all 2 million would be sent over the network for scanning. Since 5.0 you can enable an option to perform the "where" on each data node and only return the rows that match the where clause.

I think picking a primary key is especially important when implementing a table that will reside in the cluster. Pick the wrong key and I think your queries will be much slower than the traditional database. On that note, it's not uncommon for a clustered database to be slower than a traditional database. If you look at everything that must happen to perform a query in the clustered scenario that makes sense. But I think the clustered database kicks but in the ability to maximize throughput.

As I mentioned earlier, my main questions so far are in regards to the data nodes. I haven't found any documentation that covers how data is spread across the nodes. For instance, if I had a configuration with 50 data nodes, and I have a database with 100 million rows, how much of the data would be on each node? Is the data triple replicated? Double replicated? Which data nodes are safe to shut down at the same time? Does anyone out there know or could point me in the right direction?

Cool GUI Tools for MySQL 5.0

I just found these tools for 5.0, awesome stuff, but I'll probably still do most tasks the old fashion way. :)

http://dev.mysql.com/downloads/gui-tools/5.0.html





MySQL Partitioning

Bill asked me to look into the new paritioning features with MySQL 5.1. I have to say this has to be one of the best features I've seen added to MySQL in a long time. Check it out:

http://dev.mysql.com/tech-resources/articles/mysql_5.1_partitions.html


Finally the admin has some kick-ass control over how the data is split across files and disks. And it makes pruning old data super-easy.

Wednesday, September 06, 2006

College Football is broken, here is how I would fix it

I love college football. It's infinitely more interesting than pro football (unless you play fantasy football, which I don't). But it could be even better, here is what I see as college football's biggest problems:

1. Rankings
2. Every game matters too much
3. Out of conference scheduling
4. No playoffs

Rankings matter too much, we shouldn't care about Coaches Polls, AP Polls, computer polls, etc. There are too many polls and none of them should matter when deciding a national champion.

It's really tough for a one loss team to win a national championship, which means colleges that are smart will schedule as many "Northeasterns" as possible. Ideally, colleges should want a tough out of conference schedule to get them ready for the post season.

Without a playoff system, the teams that are extremely lucky and highly thought of in the polls play in the big game. Nothing is decided on the field and there will always be the one or two teams that make tremendous strides during the regular season but have no chance of proving they are the top team in the country.

Here is how we fix this mess:

1. The winner of each major conference (there are 7) gets an automatic bid into the playoffs. This does several things right out of the gate: we no longer care about polls, we can schedule tough out of conference games, and losing one or two games doesn't really matter.

2. The press still gets to pick the 8th and final playoff spot from the remaining conferences and independent teams. (So yes Notre Dame fans, it's still fixed for you.)

3. Force each team to only play 10 games (plus 1 for a conference championship if needed). This will mean that the football season won't last any longer than it currently does (don't forget that they currently take over a month off before the bowl game). And only 2 teams will play an additional 3 games max, so we are talking 14 games maximum, and some teams currently play 13.

4. We can still have several bowls to satisfy the other teams that didn't make the playoffs but had good years. I think the fans would still go to these games and they would still generate lots of money. But let's get real and reduce the number of bowls in half.

Amazingly enough, college basketball has everything right. Polls don't matter that much, they have a great playoff system, and teams schedule tough opponents to HELP their chances of making the playoffs. What an amazing concept!

MySQL: InnoDB vs MyISAM tables

MySQL gives the user several different storage engine options when creating a new table in a database. The two primary options for traditional databases are InnoDB and MyISAM. I won't go into the history of each engine, but I'd like to discuss when you would choose one versus the other. InnoDB has several features that MyISAM does not provide:

http://dev.mysql.com/doc/refman/5.0/en/innodb-overview.html

So why would anyone ever use MyISAM? First, it's been around longer and is very reliable. People are also more comfortable with the one file per table concept. And maybe most importantly it is the default engine when you create a new table. I've used both and like both, and when I was testing MySQL 5.0 over the last few days I decided to put both to several speed tests on a rather small table (45,000 rows). Each row contained about 470 bytes of data. Every test I ran showed that each database had similar performance. I was hoping that one would be superior to other but it just wasn't the case. On the other hand, my table size was pretty small. And I did discover that with large text based primary keys, MyISAM was much faster. But when the key size was reasonably small InnoDB had slightly better performance. I'm going to try to insert a tera-byte of data into each database and see which one performs better. I love all of the different options available for InnoDB storage that are available so it should be fun to try out different parameters and see which ones perform best.

Sunday, September 03, 2006

National Championship Predictions

OK, after one weekend in college football I've seen enough to know who has a legitimate shot at playing for the national championship.

1. Ohio State

A great team with two Heisman candidates. A tough opening schedule, but if they survive at Texas and can hold off Penn State in week 4 there will be no stopping this team.

2. USC

All of their "tough" games are at home (Nebraska, Arizona St, Oregon, California, Notre Dame.) Plus they don't play a conference championship game.

3. West Virginia

Their schedule is laughable and no conference championship game.

4. Miami

Underrated and an easy schedule.

5. Penn State

A dark horse candidate, but if they manage to somehow beat both Notre Dame and Ohio State they deserve to play in the big game.

Teams that will NOT be contending, but are good teams:

1. Texas

Their schedule is tough, Ohio State, Oklahoma, and Nebraska. If they do somehow manage to beat all of those teams they deserve a shot in the big game.

2. Notre Dame

I can't see anyone beating USC, especially @ USC.

3. Any SEC team.

SEc schedule too tough, plus they play a championship.

4. Florida State.

Overrated.

Friday, September 01, 2006

Football Season Already?

Awesome.

Tailgating starts tomorrow, I’m REALLY looking forward to this, I’ve missed tailgating. But enough about that, here is my prediction for the 2006 Hokie football season, go ahead and call Vegas:

Northeastern – Win
North Carolina – Win
Duke – Win
Cincinnati – Win
Georgia Tech – Win
Boston College – Win
Southern Miss – Win
Clemson – Lose
Miami – Lose
Kent State – Win
Wake Forest – Win
Virginia – Win

Gator Bowl here we come!

I spent zero time on research and analysis but without an experienced quarterback our defense and running game won’t be able to overcome Miami nor will it keep pace with a good Clemson team.

The sad part about the VT schedule is the mediocre opponents out of conference. This schedule is garbage and the AD should be ashamed of himself. The good part about a weak schedule is that everyone stays in good spirits after the game and makes the post-game tailgate better than the pre-game tailgate. I can’t wait!!!

Our first softball game

Tuesday night we played our first co-ed softball game. Our team consists of Webmail.us employees and our friends. It was Bill’s idea to start the team and we wanted to play so that we would have something to do together and have some fun. Of the 19 people on our roster, I’m pretty sure only 5 or 6 have ever played in a real softball game before Tuesday night. To say we are inexperienced would be a gross understatement. However, our team is a very competitive and eager to learn group of people. I have volunteered to coach the team to the best of my abilities.

We have been practicing for several weeks now and the improvement from week 1 to now has been dramatic. Our team is much better at all aspects of the game and they understand terms such as “cut-off”, “backup”, “calling for the ball”, etc.

So game time rolls around on a dreary and rainy Tuesday night at Tom’s Creek Park. As soon as the game before us finishes they are calling for lineups for our game. I decided to keep myself out of the lineup for several reasons, but mainly I wanted everyone to get a lot of game time experience. I hand our lineup in and we proceed to warming up. I’ve never really seen such a short warm up period but in what had to be under 5 minutes the game was starting. We were the away team so we batted first. We quickly went down 1-2-3 and were in the field for the first time.

For anyone who hasn’t been to a softball game lately the pace of the game is much, much quicker than the baseball you see on TV. Almost every pitch is hit and the bases are very short so doubles are very common. There also isn’t a lot of down time between pitches. So at the start the bottom of the 1st inning their leadoff batter grounds out to second for an easy out. Cool, 1 down 2 to go. Unfortunately the next five hitters get hits and before you can spin around twice in your chair we are down five runs. We finally get the last out right before they bat around.

As the team comes off the field I can see the shell shock on everybody’s face. So I tell everyone to huddle up and listen. I pause for a second or two and everything is real quiet. What do you say in this situation? I decide to crack a joke and say “Welcome to Softball.” Everybody laughs and I think we all relaxed at that point and the rest of the game went fairly well. Like I told my team, if you take out the first inning and the 4 run inning they had because of a two out error we would have won 5-4. :)

As far as coaching goes I think I did an OK job. There will always be things I can improve on, but overall I really enjoyed it. My favorite parts were watching people backup each other, just like I told them to do time after time in practice. Watching people line up cutoffs and actually hitting those cutoffs, just like I taught them to do. And hitting fly ball after fly ball, just like I told them NOT to do. (We’ll keep working on it.)