2011 Walt Disney World Marathon - Goofy Challenge

by Frank Perez January 9, 2011

Last spring I got to thinking that I really wanted to do a destination race. The kind where you travel somewhere far away, run a cool race, and then take a few days to relax before you come back home. I talked to some of my friends who have done similar things in places like Chicago, Las Vegas, New York, and of course Boston. Everyone had good suggestions, so to make the decision easier I decided the best thing to do would be to concentrate more on the when, versus the where.

Looking at my calendar I knew that I already had race plans for most of the summer and fall. There was the Bayshore Marathon in May, the Mohican in June, the Great Lakes Relay in July, the Crim in August, Dances with Dirt in September, and the Brooksie Way in October. That meant the earliest I could schedule anything would be sometime in November. And for me it seems like I always have some kind of non-running commitment every weekend in November and December. So that meant the next available time period would be sometime in January.

Now that I had the when decided, it was time to pick the where. Well, one of the easiest things about picking a race in January is that the numbers of options are limited when the goal is to run something long distance. A quick Google search for "January marathons" returned results for places like Arizona, California, Florida, and Texas.

I would like to say that I took some time and evaluated each race, but as soon as I saw Walt Disney World Marathon, my decision was made. Yes, the idea of running a marathon through the Walt Disney World Parks was really appealing. But the part that sealed the deal for me was the event they call the Goofy Challenge.

The Walt Disney World Marathon is a weekend long event consisting of a 5K (3.1 miles) on Friday, a 1/2 Marathon (13.1 miles) on Saturday, and a Full Marathon (26.2 miles) on Sunday. The Goofy Challenge is basically like registering for both the 1/2 and full marathons.

With the race picked out, the next major obstacle was to convince some friends that they should go to. This is not an easy task. Especially when the race requires time off work, travel by plane, and etc. It took a couple of months, but in the end I persuaded my girlfriend Belinda and two other couples to join us.

Overall I very impressed with Walt Disney World Marathon. It was the most well organized race I have ever participated in. There were practically no lines for the toilets. All of the aide stations were stocked with supplies and volunteers. And it seemed like the entire race course was lined with families, staff, or some kind of entertainment.

My only warning about running the Walt Disney World Marathon is that it will spoil you. Most of the races that I have run typically have problems like not enough toilets, aide stations that are not equipped, long stretches without any crowds, course not marked, etc. I understand that organizing a race is not easy task. There will be problems and I am ok with that. It was just nice to see that someone could actually do it near perfect.

Walt Disney World Marathon http://espnwwos.disney.go.com/events/rundisney/wdw-marathon/


Filed Under: RUN

2010 Detroit Turkey Trot

by Frank Perez November 25, 2010

There must be something about running in a big city that I enjoy, because I signed up once again for the Detroit Turkey Trot 10K (6.2 miles). This was my second consecutive year, and like the year before I set a new PR (personal record) by finishing in 46:23 (mm:ss). If I can keep breaking my PR, I may have to make this an annual tradition.

Detroit Turkey Trot http://www.theparade.org/turkeytrot/


Filed Under: RUN

Never Use an Alias in an Index Expression

by Frank Perez November 16, 2010

Part of the work I do involves supporting existing Visual FoxPro applications. In some cases, the original developers are no longer available and I take over maintaining the code. Some may not like this kind of work, but I enjoy the variety. I also like it when I get the opportunity to track down mysterious bugs like the one I'm about to describe.

The problem occurred in a portion of the code that called the VALIDATE DATABASE command. I don't recall why the code need to perform the command, but when it executed a "Cannot open table 'C:\FolderName\TableName.DBF'" message was displayed on the main Visual FoxPro window.

My first thought was that the table might be corrupt. So I tried viewing the contents of the table with the USE and BROWSE commands as follows. No errors and everything worked as expected.

USE IN SELECT("TableName")
USE "C:\FolderName\TableName.DBF" IN 0 AGAIN ALIAS "TableName" NOUPDATE

My second thought was that maybe the VALIDATE DATABASE command needed exclusive use of the table and something else had a shared lock on the table. So I tried viewing the contents of the table with the following commands. Once again, no errors and everything worked as expected.

USE IN SELECT("TableName")
USE "C:\FolderName\TableName.DBF" IN 0 ALIAS "TableName" EXCLUSIVE

My next thought was that maybe the table or database were corrupt in some unusual way. I could try recreating the database and table, and then copy the data from the bad table into the good table. One of the easiest ways to accomplish this is to use GenDBC. GenDBC is a utility program that is included in the Visual FoxPro Tools folder. It generates a script of native Visual FoxPro commands that can recreate a database along with every connection, table, view, relation, and referential integrity constraint.

I ran GenDBC and executed the script to recreate the database and tables. Everything worked as expected. I was about to start copying the data from the bad table into the good table when it occurred to me that I should try validating the database first. So I performed the VALIDATE DATABASE command on the freshly created database...BAM! I got the "Cannot open table 'C:\FolderName\TableName.DBF'" error message.

This made me wonder if maybe GenDBC failed when it generated the script and just did not display the error message. So I opened the script and scrolled down to the section with the table create code. And that is where I noticed something strange. The CREATE TABLE command looked okay, but the INDEX ON command had the table name included in the expression. It looked something like this.

CREATE TABLE "TableName.DBF" (pk I, description C(20))
INDEX ON TableName.description TAG "DESCRIPTIO"

Including the table name in the index expression is not something I would ever do. It seemed redundant. So I removed the table name from the index expression, re-ran GenDBC, and then executed the script to recreate the database and tables. This time when I performed the VALIDATE DATABASE command, everything worked as expected. Cool!

However, finding a solution isn't always enough for me. I needed to know more. For example, is this the problem in the INDEX command because it allows the table name to be included in the index expression or is the problem the VALIDATE DATABASE command? I did a little research and I found a MSDN article called "Considerations for Creating Index Expressions". In this article Microsoft states "If you include a field prefaced by a table alias or work area letter in the index expression, Visual FoxPro generates an error message." The article isn't very clear about the error, but at least I had documented proof. Just because Visual FoxPro allows a table name to be included in the index expression, you shouldn't.

On a side note, an interesting thing happened when I got ready to write this blog entry. I wanted to have some code that could reproduce the error. So I wrote a program that would create a database with a both a good table (a table with a valid index expression), and a bad table (a table with an invalid index expression). When I ran the VALIDATE DATABASE command I did not get an error like I expected. It took me a little while to figure out that the error would not occur unless I closed and re-opened the database. The following code reproduces the behaviour.

* create a database
* add a table with an index and then some records
CREATE TABLE "GoodTable.DBF" (pk I, description C(20))
INSERT INTO "GoodTable" (pk, description) VALUES(1, "Description 1")
INSERT INTO "GoodTable" (pk, description) VALUES(2, "Description 2")
INSERT INTO "GoodTable" (pk, description) VALUES(3, "Description 3")
* validate the database, expectation is no error
* add a 2nd table, but this time put the alias in the index expression
CREATE TABLE "BadTable.DBF" (pk I, description C(20))
INDEX ON BadTable.description TAG "DESCRIPTIO"
INSERT INTO "BadTable" (pk, description) VALUES(1, "Description 1")
INSERT INTO "BadTable" (pk, description) VALUES(2, "Description 2")
INSERT INTO "BadTable" (pk, description) VALUES(3, "Description 3")
* validate the database, expectation is an error, but VFP does not display one
? "VALIDATE DATABASE (GoodTable + BadTable)"
* close and re-open the database
* validate the database, now VFP displays the error
? "VALIDATE DATABASE (GoodTable + BadTable)"

Considerations for Creating Index Expressions http://msdn.microsoft.com/en-us/library/5bxf1b0a(VS.80).aspx


Filed Under: VFP

Brooksie Way 2010

by Frank Perez October 3, 2010

After running the Bayshore Marathon earlier this year, I decided that I would not spend my summer training aggressively for any race. Instead I would pick races that were new to me and fun. Like the The North Face Mohican Trail Run and the Great Lakes Relay events I ran earlier this year.

However, I still like to measure my performance from year to year. And one of my favorite ways to do that is to repeat an event that I have ran in the past. I want an event where the course has some challenges (i.e. not completely flat), and a distance that is more than 10 miles. For me, the Brooksie Way 1/2 Marathon (13.1 miles) is an excellent choice. I have run this race in both 2008 and 2009, and the course is definitely a challenge.

So about a week and half before the race, it occurred to me that I should at least set some kind of goal for completing. I looked at my finish time from the previous year 1:52:09 (hh:mm:ss) - average pace 8:33 (mm:ss). I also looked at my recent finish time for the CRIM 10 mile 1:18:20 (hh:mm:ss) - average pace 7:50 (mm:ss). Based on this, my first idea was to run a 7:50 (mm:ss) pace for the 13.1 miles. But when I calculated (13.1 x 7:50) a goal time of 1:42:37 (hh:mm:ss), I didn't like the idea of finishing just a couple of minutes over one hundred. Therefore, I set my goal time to complete in under 100 minutes.

With a goal in mind, the next thing I wanted was a running partner. In order to run 13.1 miles in under 100 minutes, I would need to maintain an average pace of 7:37 (mm:ss) or better. This was going to be a challenge for me. Over the years I have found that the best way to run a race with an aggressive goal is to have someone beside me. Someone to help distract my mind and push me when I start to feel like giving up.

So I asked around in my running group if anyone wanted to run the same pace. Unfortunately for me, the majority of my friends were either training for the Detroit Marathon or the Columbus Marathon. With their races only two weeks away, most of them did not want to run that kind of pace. I understood completely. They have been training for their marathons all summer long, it was not worth risking an injury.

So I made up my mind that I would just do it by myself. But, on race day my friend Fritz showed up and said that he would run the same pace with me. Fritz and I stayed together for almost the entire race. That is until we were about a quarter of a mile from the finish line. That is when Fritz took off and finished two seconds ahead of me. But I didn't care, because I set a new personal record with a time of 1:39:02 (hh:mm:ss). Fritz, thanks for keeping me on goal.

Brooksie Way Half Marathon http://www.thebrooksieway.com


Filed Under: RUN

Dances With Dirt Hell 2010

by Frank Perez September 11, 2010

I have been wanting to run some kind of ultra marathon for a while. (An ultra marathon is any event greater than 26.2 miles.) So when a couple of friends asked me to run the Dances with Dirt Hell 50 km (31.1 miles) race, it did not take a whole lot of arm twisting before I gave in.

Dances with Dirt Hell, also known as DWD Hell, is a one day race event at the Pinckney State Park in Hell Michigan. There is a 100 km (62.2 miles) Relay race, a 50 mile race, and a 50 km race. The event is called Dances with Dirt because the races are not your typical paved roads. The majority of the course is trails. Any by trails I don't mean the nice gravel packed trails you find in the suburban areas. I mean the kind of trails that are about 12 to 24 inches wide and littered with obstacles such as tree roots, fallen trees, and large rocks. The course includes multiple shallow (up to waist high) river crossings and an one tenth of a mile run upriver.

Normally before I run any kind of long race (more than 20 miles) I create and follow some kind of training schedule. Unfortunately, I did not decide to run DWD Hell until about 1 month before the event, so there really wasn't anytime to properly train. Factor in that I also spent most of the summer with my longest run of the week typically not more than 10 to 12 miles, I would have to say that I was definitely trained for running 31 miles. Therefore my goal for DWD Hell was just to finish the race, have a good time, and not get injured. And that is what I did. I completed my first ultra marathon in 7:57:14 (hh:mm:ss).

Dances with Dirt Hell http://www.dwdhell.com/


Filed Under: RUN

About Frank

Frank lives in West Bloomfield, Michigan with his wife and three children.  When he is not writing code, he enjoys long distance running and riding his motorcycle.

Month List

Tag Cloud