Wednesday, April 22, 2009

Over-Engineering by Default

When creating large systems, I tend to over engineer everything. I’m not sure why, but I hate casting parameters to their native type and I absolutely despise writing the same line of code twice. For some reason, I think that everything has to be generic and abstracted to the atomic level. I wish I could just tell my brain to settle on using ‘object’ sometimes and move on. Instead, I over cook basic concepts and the result is a fine-grained architectural nightmare.

Oddly, I tend focus more on the idea of over engineering my solution long after things have been working fine. Clearly I’ve recognized a pattern somewhere along the way, but it drives me crazy when I can’t lock it down to a solid set of patterns.

Today I struggled with something and considered multiple implementations. Each seemed to have it’s own pro’s and con’s, but nothing has jumped out as the “correct” solution yet... I’ve wasted pretty much a whole day today trying to work in some pattern with a base class template that accepted a generic <T>. I was noticing that certain classes always dealt with another type of class. I changed a lot of code to get it to work, only to run into a brick wall at the end. The main problem that I was overlooking was that my solution is a multi-project solution and there was 1 simple class that resides in a higher level assembly preventing the whole thing from gluing together.  :( I just couldn’t figure out a good way around it. I finally realized that I was spending way too much time on it. Worst yet, I wasn’t even really going to gain a lot from the change anyway, other than a big “cool” factor. Whatever! I’m going try to sleep on it and hope that it will come to me over night.

Another one of my big struggles after all these years of coding is deciding when to use an abstract base class and when to use an interface. This is another one of those things that I tend to rethink after my solution has been working for an extended period of time. Unfortunately, I’ve not found the golden rule for deciding when to use an interface and when to use a base class. I know that there is a lot of information on the web (here’s MSDNs’ idea), and pretty much every developer (except me) has their own “tricks” for determining. For me, it continues to be a struggle and I have to really think both concepts all the way through before deciding.

One trick that I use is by determining if an object has the characteristics of something, or if it actually is that something. I always try to figure out if my object (interface or class) has any shared logic or classes as well. If there is one thing that all instances should have, I try to engineer toward a base class implementation. Sometimes that doesn’t work, so I go back and try to code it as an interface. I’ll go back and forth with each until one makes the most sense. :( Clearly I’m missing something here... I should be way beyond this after all these years! This sounds like Programming 101 crap! I yell at myself each time I catch myself doing it.

Truth is that I do this all the time in my profession, and I hate it more and more. In the long run, I usually always get that glorious “AHA!” moment, but it’s always a long puzzling road for me... I guess I’ll keep over engineering everything until I smarten up a bit. (?)

Simple concepts should not require over engineering; it is a waste of time. Sometimes it works out great. But other times (like today) I wind up just making things worse and put myself back a few steps. I’m sure that I’m overlooking an obvious pattern here. If my dreams don’t show me the answer before tomorrow morning, I am going to simplify everything back to the basic that I had this morning. :(

Oh yeah, deadlines suck too!

Monday, April 20, 2009

Mohican Forget the PR 50K Race Report

Well, I did it! I ran my first race of the year yesterday, and it was a great experience. Rob put together a great race and I’m sure that everybody that ran the race would agree 100%. The aid stations were well stocked and extremely friendly. The party crowd was definitely at the Covered Bridge. It was always fun crossing through there with the radio blasting and seeing everybody in their Hawaiian clothing. :) The course was very well marked, very technical and all of the volunteers were amazing; all in all this was simply a great experience! Rob, I look forward to next years’ event, assuming we don’t reschedule our trip to Disney World for that week. :)

For those that don’t know how much 50k is, let me spare you the effort: it’s about 31.1 miles. :) I went into the race with two simple goals: have fun & cross the finish line. It proved to be a great goal, and it’s exactly what I did. The total time on my Garmin was ~ 8 hours and 15 minutes, and I had a blast!

I realized I have a lot of training to do before my 50 miler in 2 months. This race was only 30 miles :), and I couldn’t have imagined having to run another 20 when I crossed the finish line of this race. Training for the Mohican 50 Miler officially begins next week! I have the same goals for that race (have fun & finish). However, I want to still feel very strong after 30 miles. The only way I know to do that is to train hard.

If you’re interested in my full race report, keep reading. If not, no hard feelings and c-ya! :) However, you may check back because I’ll post an overhead map of my run once I sync my Garmin (later tonight or tomorrow).

Start

I showed up at Mohican around 7:15 am and got my goody bag. Wow, lots of cool stuff! This could very well classify as one of the best goody bags I’d ever gotten; lots of camping stuff, ultra running stuff, and a very “trail” oriented mix of shwag. I was able to talk to some of my friends by the check in booth and everybody was real excited to get moving.

Before we got started, Rob had a few things to say about the race and why he put it on. He explained how the flags worked and pretty much told everybody that there was ‘no stopping’! He said “If you feel like you need drop out of the race, go ahead and have a seat at the next aid station and I’ll have someone pick you up in about 3 hours.” He then follows it by, “Seriously, you might as well just keep walking”. Perfect!! He then let Regis Jr. say a few words about the park and how it meant so much to him and his dad (Regis Shivers Sr.). Regis Sr. was the first generation of Mo Trail runners and just recently passed away. He left a hell of a legacy though. I wish I had a chance to meet him. Anyway, Jr.’s message was well received and you could feel that vibe that Regis Sr. was in this race too. :)

Miles 1 – 5

The first 5 miles were very uneventful. I literally let all the fast runners fly through the starting line and I stayed at the back of the pack and slugged along from the very first few steps. This was a single trail course the whole way, so it made sense to stay out of everybody’s way now, rather than dealing with them in the forest in a few miles. It turned out to be awesome, because I just chugged along through the woods like I would on any training run. Nobody was around me really to keep conversation, so I just did what I like to best: think. I did a lot of thinking on this run due to my “slow paced isolation” plan. :)

Miles 6 – 10

I got to the first aid station a lot quicker than I had imagined. I had no problems whatsoever, and moved right on through. I picked up a few pretzels, chugged a nice cold cup of water, and laughed with some of the voluneers on my way through. The remaining 4 miles (after the aid station) were just nice and relaxing. The weather was turning out to be nice and crisp with a slight breeze on the face. I still felt very strong; I could have picked up the pace through here, but I played it smart and just kept a slow pace with the runners in front of me.

Miles 11 – 15

As I was coming down the hill from the Orange loop, I heard a block party being held at the Covered Bridge. It was awesome coming up to these guys. As soon as they saw me, they made me feel like I was winning the race. :) I thanked them big time and pounded a few PBJ sandwich blocks. They all sent me on my way up to the next aid station with a smile.

The run from Aid station 2 to Aid station 3 was beautiful! I kind of pal’d up with Cheryl (she frequents a lot of the Mo training runs) and her friend Lucy. We slowly climbed through the Little Lyon falls and did some “root climbing”. Once we got to the top of Lyon Falls, they moved ahead of me and I was back to myself again. The bugs were kind of bothering me through here, because there was a bit of road and the bugs were just dying to get into my ears and eyes. Gross!

Rob put in a nice little muddy trail for this race. When I say mud, I mean M.U.D. The course goes through a bridle trail and the mud was very thick and very deep. With every step, I either slid a bit or my shoe tried to stay in the mud. It was fun though, to me this is what “trail running” is all about. :)

Miles 16 – 20

Aid Station 3 was great! These guys were very friendly and encouraging. One of the fellows (Michael) met me about 100 yards from the table and stole my bottles so that he could fill them for me. I ate a few more PBJ sandwiches, pounded a warm cup of Coke, a cookie, and some pretzels, and thanked the guys. I was on my way again and still feeling great.

The second time through the mud, I gave up trying to avoid it. I just gave into the idea of being muddy and by the end of this section, I had mud further up my leg than I’d like to admit. :S

As I was coming up to Big Lyon Falls, I was starting to feel some soreness in my legs, but it was to be expected. My training before this race wasn’t “all that” and I knew I was going to be working my legs today. As I tried to scale down Big Lyon falls, I felt the quads pretty good. :) However, this was a beautiful section and it reminded me a lot of my vacation with the girls a few weeks ago. After my descent down Big Lyon falls, I made it back to the party zone and refueled a bit more. This time I had a watermelon slice and a Chocolate Chip cookie.

Miles 21 – 25

From the Covered Bridge, I trekked up the Green section of the course and this was really hard for me. I’ve only ran this section once, when I paced Kim last year at the 100 miler. However, at that time it was very dark and it was going the other way (ie. down hill). Rob turned it around on us and made us go “up” it for this race. The entire 2 mile section up to the Fire Tower was on a slight incline. It felt more than “slight” at times, and this was probably the longest 2 mile stretch of the entire race for me. I was pretty much spent by this point and walking is all I could think about. Even as I jogged, I had to keep fighting myself from walking.

When I got to the Fire Tower, Kim was there as the aid station captain. She talked me into some potato soup, that her mom made. And I took a minute to empty all the sticks and rocks out of my shoes. I’d been collecting sharp things in my shoes the entire race, and each step was becoming more and more uncomfortable. I figured it was best to take the time to get them out now, rather than waiting another 4+ miles.

The Red section was awesome! On my way out of the aid station, Kim yelled “4 more miles til the next Aid Station Luc. It’s all downhill!”. Mmm hmm… It was mostly downhill, but keep in mind that this means very little at Mohican. “Downhill” basically means that the next check point is lower in elevation than where I’m currently at. It does not mean that I will be doing all downhill running though. :) It’s taken me a while to understand this actually. Rob and Kim are always telling me that certain sections of Mohican are “mostly flat” or “downhill”. I now have a new under-standing what “flat” and “downhill” actually mean when talking about trail running.

I ran past 2 runners through this section. The one guy was in really bad shape. I asked him if there was anything I could do, but he just wanted to get to the finish. The longest run he’d ever done before this race was only 10 miles. Wow, that’s a hell of a big jump to 30+ miles! He had really nasty blisters on his ankles from his shoes and he said that his knee caps hurt really bad. I gave him some words of encouragement and wish him luck as I picked my pace back up. The other runner had a locked up ITB and it looked like every single step hurt. I talked with him for a while as well, and he assured me he was going to try and at least finish. I threw encouraging words at him and went on my way again.

Miles 26 – 30

I got back to the Covered Bridge for the final time and they were very encouraging yet again. The music had stopped, but the enthusiasm was all still there. :) I drank some heed (it’s a drink) and grabbed a few Salt ‘n’ Vinegar chips and on my way. By this time I was kind of starting to feel nauseous. I didn’t want to drink anymore fluid, I didn’t want to think about putting anything in my mouth and I just wanted to sit down and chill for a minute.

Instead, I focused on a walk / jog routine. I would jog until I felt like puking, then I would walk to let my stomach settle down. Then I would jog again, and repeat. This section of the course had some very technical areas in it, so I did more walking than jogging through most of it. There were some killer hills towards the 30 mile marker and I might as well have crawled up them, because I was moving at a snails-pace by this point.

Finish!

There was one last killer hill before the finish line. By this time, I had been moving so slow for so long that a few runners that were far behind me at one point, were now passing me. We congratulated each other on our accomplishments and on they went. I let them get pretty far ahead of me as I slowly stomped down the North Rim trail hill. As I got back to Campground A, I heard the cheers for those runners and I knew that I had made it.

About this time, I heard a crazy guy honking his car like a mad man. I looked over and it was ma dude, NICK!! He had already finished and was pulling out of the parking lot as I was coming up to the finish line. My entire run had been so quiet and peaceful, then HOOOOONK HOOOOONK HOOOOOONK HONK HONK HONK HOOOOONK!! Thanks for the encouragement on my finish, Nick! I got a great laugh out of it! :D

As I came up to the finish line, Rob welcomed me with a high five and my first ultra belt buckle! :) He asked me what I thought of his course and I said that I really liked it, and that it definitely worked me. I stuck around for a few minutes and sat on a bench for a while. It’s always fun to stick around after these long distance races and watch other runners limping from place to place. :) Everybody’s legs are shot after these races, and it always makes me feel “normal-ish”. :) I spoke with Kim and Regis for a few minutes, then headed to my car for the long ride home.

Saturday, April 18, 2009

Perfect Saturday / 50K Sunday

Beautiful Saturday
I had a blast today. Jennifer took Lizzie with her along with her Mom & Morgan to a horse auction in Columbus. I got to keep Daizi and Jazzy at home with me and we all worked in the garage all day. Daizi swang on the swing most of the day and pal'ed around with Jazzy around the farm. It is so cute when they play nice with each other. They did all day today and acted like good friends, instead of siblings. We're lucky to have such good kids.

When I started on the garage at 1pm, it looked like an endless job; it was a complete mess with boxes and crap everywhere. Now it's nice and open with all the crap put where it needed to be. Mom and Dad came over for a bit and I drank a beer with "Pop". I'm anxious to get back to the garage soon and finish it up and start tinkering again. Warm weather does this to me. It's so nice to just crank up the IPod and stay busy while my girls run all around riding their bikes. So long winter!!

Mohican Forget the PR 50K
Tomorrow is my big race day. It's my first ultra of the year and I think I'm well trained for it. I'm not at all nervous about the distance this time. Last year I was so nervous before each of my big races. Mainly because I didn't know how the mileage would act on me, and I had set little goals for each one. I have no goals for this race, other than to have a great time and finish! I feel like I'm well trained and I know what I'm getting my self into. My biggest fear is that I haven't ran since Sunday and my knee has been acting up a bit the last two weeks; even going upstairs and on some days. Believe it or not, I'm almost anxious to just start running though and just ignore it. I know if it get's too bad, I'll just run until its numb. :) It worked on my first marathon (actually, I think it's the same knee??). :O Whatever, it'll be a total stress relief once I get moving tomorrow. I've had a bit of stress this week with a big project I've been working on. I plan to just zone out and put one foot in front of the other until I cross the finish line.


Well, the girls are all fed with nice yummy soup in their tummies, and I'm almost done charging the Garmin, I guess it's time to start thinking about sleep. If only I were tired... I'll probably just go in and lay down in bed with the girls and watch funny videos. I told them that they can sleep in our bed tonight since Jennifer isn't home yet. We're all gonna watch AFV until we fall esleep. They're pretty excited about that. :) The race starts at 7am, and I have a 1.5 hour drive to make tomorrow. This means, that I'll have to wake up early enough to eat a nice relaxing breakfast and drink some coffee before heading out the door. I'll probably set the alarm for 4:00 so that I can make sure I have everything packed and ready to go.

Next post will be my race report. :)

Friday, April 17, 2009

Coolest Code I’ve Written in a While

I’ve been working double time trying to finish an implementation for my job. Today I was able to bring together all of my hard work into an easy to use API and I’ve now realized what the hell I have been building.

As with most code and projects that I start, they begin as just an idea and then they slowing mature into “the big picture”. My project has finally reached “the big picture” status. I didn’t really realize it until late yesterday and mostly today (as I’ve been using my API). When I realized it, I literally threw myself back in my chair and threw my hands up and said “WHOA!?”. For example, look at the following method:

/// <summary>
/// Converts all cell references and spans to pixels.
/// </summary>
/// <param name="pixelsPerCell">A CellSpan that determines how many
pixels will up the new cell.</param>
/// <returns>A CellContext transformed to pixels.</returns>
public CellContext ConvertToPixels(CellSpan pixelsPerCell)
{
    return ((CellRange) this)*pixelsPerCell;
}

To the naked eye, it may seem simple. However, for me, I know what it took to get here; that single return statement executes about 30 lines of code underneath using operator overloading and implicit casting calls on multiple classes.

To understand what the method above does, here is a quick example. Assume that you have a table of 2 rows and 2 columns. Therefore:

0,0 0,1
1, 0 1,1

Now we want to create a table layout with a single cell spanning the left side. So:

var left = new CellContext(0, 0, 2, 1);

var topRight = new CellContext(0, 1);

var bottomRight = new CellContext(1, 1);

var table = new Table(left, topRight, bottomRight);

Will create a layout like this:

   
 

Here are the facts about the left cell:

  • cell start @ cell [0, 0]
  • cell spans 2 rows & 1 column
  • cell ends @ cell [1, 0]

Now let’s convert this layout a 20 by 20 table. There are many reasons we might need to do this. The best reason (and the reason that I wrote these classes) was to be able to convert a series of cell indexes and row/column spans to actual screen coordinates.

var pixelOffset = new CellSpan(20, 20);

table.ConvertToPixels(pixelOffset)

Here are the new facts about each cell now:

Cell [0, 0]

  • cell starts @ cell [0, 0]
  • cell spans 40 rows & 20 columns
  • cell ends @ cell [39, 19]

Cell [0, 1]

  • cell starts @ [0, 20]
  • cell spans 20 rows & 20 columns
  • cell ends at cell [19, 39]

Cell [1, 1]

  • cell starts @ cell [20, 20]
  • cell spans 20 rows & 20 columns
  • cell ends at cell [39, 39]

Now, keep in mind that I’ve only dealt with 4 cells and a have only shared a very brainless example. However, I’ve been building this to deal with large amounts of cells and complex configurations. The beauty is that no matter how much math I throw at it, it continues to work. :) For example, consider the following:

var context = new CellContext(37, 19, 14, 13);

var pixelOffset = new CellSpan(23, 17);

var pixels = context.ConvertToPixels(pixelOffset);

It goes without saying that I also created a method to convert back to relative indexes from pixels using division rather than multiplication. My unit tests are all passing for it as well. :)

Perhaps I’m just a geek and this excites way too much??

Tuesday, April 14, 2009

A Birthday to Remember

Yup, I turned 31 today. :) Here’s a quick and silly recap of all the good things that happened in this too short of a day:

The girls came in and told me happy birthday before they got on the bus, and that started me off with a smile. Then Jen let me sleep in til 10:30. When I did wake up, I smelled my favorite breakfast cooking in the kitchen (eggs, sausage, ham, & toast with fresh coffee). I gorged and was able to fulfill a very productive work day in the basement (sometimes rare). When the girls got home from school, they were so excited that it was my birthday, and that was so cute! They were genuinely giddy for me.

Jen had been cooking a pot roast all day in the kitchen for my birthday dinner, and the house has smelled amazing all day. My mom came and ate with us and we all had a great time. After dinner, Jen surprised me with a DQ ice cream cake (my absolute FAVORITE).

Then to top off the best birthday ever, all my girls drew up personalized birthday cards for me. They all had drawings of me and my drum-set with lots of balloons and little notes everywhere. Daizi’s was mostly scribbles, but I loved it just the same. They each got a huge hug and kiss for their awesome gifts. :)

Jennifer totally outdid herself this year with all the homemade yummies today, and then, to finish off her day of (complete) surprises, she got me the Pearl Jam box set that I wanted so badly!! I feel like that grungy teenage kid all over again! She swore she didn’t see my post, so this makes it that much more awesomer (?). We’re going to be watching the Unplugged DVD tonight after the girls go to bed; though I haven’t told her yet…

I feel like like one lucky dude today. LIFE IS GOOD!! I thought birthdays were supposed to be more boring the older you get…? I had to post something because tomorrow will be back to reality and I may need to reread just how lucky I really am with all these girls around me.

Saturday, April 11, 2009

Hoppy Easter

Tomorrow is Easter. Girls were very excited before going to bed tonight and it was fun listening to them try to figure out how the Easter Bunny can visit every house in one night, all over the world.

The quote of the night was when Jazzy asked me, “Daddy, how does the Easter Bunny open our doors without waking everybody up?” And before I could try to answer, Lizzie said “Jazzy, it’s because he’s so magical that he just walks through our walls”.

How can I correct such a genius answer. Thanks Liz! :)

As an adult, I try not to think about how creepy it sounds that there is a human-sized rabbit breaking into my house while I sleep and hopping all over the living room hiding eggs. Cweepy!

Monday, April 06, 2009

Hocking Hills Camping Vacation

Last week, Jennifer and I took our girls to Hocking Hills State Park for a 4 day / 3 night camping vacation in our new popup camper. We all had a blast!

DSC09782

Here is how it all breaks down, day by day, and attraction by attraction. Note that there are a lot of candid shots at the bottom if you just want to scroll to them instead. :)

Wednesday

DSC09781We arrived at Top O’ the Caves Campground around 4:30 pm after a quick drive. Once we got checked in, Jennifer and I got the camper all “popped up” and got everything turned on. Immediately we started a fire and cooked ourselves some hotdogs and s’mores for a nice family dinner. I, of course, washed down with some nice Sam Adams beers. We were all very excited to get up early the next morning and start hiking.

Thursday

DSC09799 We woke up around 8am, after a very short night’s sleep. Jen and I weren’t sure how to work the heater or the electrical system on this new camper, so we did a lot of trial and error all night long. Needless-to-say, neither of us felt very rested when we woke up. Jen cooked up some yummy eggs, sausage, and ham on the gas grill before we headed out for our full day of hiking. Today’s agenda consisted of Old Man’s Cave, Cedar Falls, and Ash Cave.

Old Man’s Cave

DSC09826 Wow, what a beautiful place! We started off at the main parking area and walked through various mazes of paths to get to the actual “cave”. Once we got to the cave it was well worth the 1/2 mile trek with the kids. There were a few spots where I (as a grown adult) had to duck through various walk ways along the path. The girls had a blast and really wore themselves out here. We were going to continue along the trail to see what else it had to offer, but decided to turn back and head towards the picnic area for a quick bite to eat. We still had to visit two other places today and we didn’t want to get too tuckered out here.

Cedar Falls

This place was really neat as well. I’ve ran past it before and heard the falls while running the Indian Run, but I’d never actually seen it. The girls thought it was really cool because they were able to climb all over the rocks real close to the actual water fall. :)

DSC09873

Ash Cave

DSC09915 This was the favorite of the day for everybody. We clearly saved the best for last. The cave was very big and had a magnificent water fall that fell over the caves’ ceiling. The girls especially liked it because it had a bunch of sand that they got to play in. The hike back to the cave was also nice because it was totally paved and we were able to let the girls pretty much take off and do what the wanted. Every other place today we had to watch them like hawks to prevent them from pummeling over a cliff.

After Ash Cave we all went to the Hocking Hills Dining Lodge and had a nice dinner. The place was really cool, we all sat near the window that was about 40 feet above the forest and you could see above all the trees for miles. We had a great time and filled up real good after our full day of hiking. By the time we got back to the campsite it was nearing 7pm, so I started a fire and we had some more s’mores then played cards in the popup (slap jack) before calling it a night.

Thursday was a great day!

Friday

It poured last night! And, I mean poured. I woke up a few times from the rain pounding down on the popup. It was loud and windy. The girls all slept pretty good, but Jennifer and I had another rough night of sleep. We finally “woke up” around 9am while the girls were all starting to get crazy and eat pop-tarts in the camper.

After Jen made a very yummy breakfast, we all put on our poncho’s and headed out for our second day of hiking in the Hocking Hills. We were pretty sure that we would be the only ones hiking today since it was still raining and very cold. Us Hardbargers don’t care! We’re hard core! Today’s agenda consisted of Cantwell Cliffs, Rock House, and Conkel’s Hollow.

Cantwell Cliffs

DSC09969 Heart attack! This was a very cool place, but man did it give us a few close calls with the 2 year old. :) The place consisted of an immediate decent through the rocks and many man-made stair cases in the rocks. The view’s were absolutely beautiful and there was nobody out today due to the weather. We had the whole place to ourselves and really got to spend as much time and be as loud as we wanted.

We did have one close call with Daizi way up on a cliff… She was walking along and then all the sudden, she tried to turn around and talk to Jazzy while walking and she started to drift. Luckily I saw it all in slow motion and stopped her. She was probably 2 feet from a 40 foot drop off; I decided to carry her the remainder of the hike. Phew!

After this hike, we all headed into the town of Logan and had a nice sit-down lunch at a small cafe. The girls were absolutely tuckered out already from all the steps at Cantwell Cliffs. We thought it was a nice time to stop and pump them full of carbs and protein before heading out to the other locations…

DSC09981

Rock House

This was a very cool place! It was basically a bunch tunnels in the side of a cliff. All the rain and river water that flows over a cliff erodes the wall back and creates these caves in the rock. The girls loved it! We got a lot of really cool pictures and had a blast at this place. It goes without saying that we had this park to ourselves as well because the weather was cold and wet. Some might say that the weather sucked, but we loved it of course. :)

DSC00014

Conkle’s Hollow

DSC00087 This was (by far) my favorite of the whole trip. It wasn’t part of the Hocking Hills State Park, rather it was a State Nature Preserve (similar to Blackhand Gorge) within the boundaries of Hocking Hills State Park. There was an upper trail and a lower trail. The upper trail was a 2 1/2 mile single path journey around the gorge, whereas the lower loop was a 1/2 mile paved trail into the gorge. We decided to stay on the lower trail and take our time.

Every step of the way was absolutely gorgeous. There might be a 140 foot cliffs on one side and a mossy green cave wall on the other side with a water fall. I can’t remember how many times I told Jennifer that it was my favorite place. When we got to the end of the 1/2 mile hike, it was the grand finale of beauty. There were 3 water falls that fed the stream we just walked down. I would have never guessed that the stream we were following was fed by 3 immaculate water falls.

DSC00059 If you get a chance to visit Hocking Hills State Park, be sure to take the time to visit Conkle’s Hollow, and walk the entire and lower path to the end. It’s a very pretty and slow stroll through Mother Nature’s finest work.

Conclusion

We all had a great time and the girls created memories that I’m sure they’ll cherish forever. I know that Jennifer and I sure did. Here are some random pictures that I feel are “share-worthy”:

DSC00108

DSC09932

DSC09918

DSC09911

DSC09801

DSC09798

DSC09796

DSC09789

DSC09795

DSC00126

The end.

Windows Live Writer

This is my first Windows Live Writer post. So far so good! It’s a pretty slick app. It’s totally styled my actual blog inside the app to show me exactly what it looks like before I post it. If you’ve not checked it out yet. I highly recommend it.

Now that I know about it, I could see me using it a lot. I’m hoping that it doesn’t pollute my HTML or add a bunch of MS specific tags. Let’s see… And, post!

Ok, now that’s slick! Here’s an image of the court house in Downtown Newark.

Map picture

It was "stupid-easy” to add…

Tuesday, March 31, 2009

SportTracks Plugin for BuckeyeOutdoors.com

Hot off the Press!
The BuckeyeOutdoors.com Plugin for SportTracks is now available for download!

This was a project that Ben (the BuckeyeOutdoors.com admin) and I started almost a year ago. It started off as a cool concept that Ben's online users wanted. Ben posted a message on his forums asking for help, I then found his post requesting a .NET geek and responded... the rest is history. We quickly realized we both went to the same school, we graduated a year apart. We've been developing this plugin at various bars and coffee shops all over Columbus ever since. :) What a small world!

Here is a quick video that I put together to show you how it works:


[Full Screen]

Who Should Download this Plugin?
Here are some bullet points that may help you decide if you are a good candidate for this plugin:
  • Do you have a GPS watch (ie. Timex, Garmin, Suunto, etc..)?
  • Do you like to share your workouts and/or routes with your friends?
  • Do you hate entering the same information twice?
  • Are you tired of dealing with the canned applications that ship with your GPS watch?
If you answered yes to ANY of the above, then you should check it out. If you use SportTracks for your training application, or if you use BuckeyeOutdoors.com as your online training log, then you should absolutely checkout this plugin.

What is SportTracks?
SportTracks is the one stop shop for everything about training (whether you're a cyclist, swimmer, runner, etc..). If you don't use SportTracks then I highly recommend that you check it out. I found out about this application from my blogging buddy, Jamie (the MaineRunner). Since he turned me on to it, I've never looked back. One of the key features of this application that I discovered very quickly was that it offered the ability to install plugins for it. The app was written in .NET and the creator of this application was brilliant enough to open up the API to allow geeks (like myself) to interface with every aspect of the data. The result is literally a framework for interacting with anything and everything about your workouts and outdoor activities.

What is BuckeyeOutdoors.com?
BuckeyeOutdoors.com is an online social networking site and a FREE training log site that is creatively designed to help you:
  • Be flexible by supporting all types of Endurance sports and methods of training.
  • Track your progress with precise reports and graphs.
  • Track your diet and hydration with our database of foods.
  • Design your own INTERACTIVE Training Plan or import others.
  • Form your own Community TEAM and stay in touch with fellow trainees no mater where they are
  • Create and share your own favorite training routes or easily confirm your distances.
  • Meet online within our Forum or use the Find a Friend Feature to see who is training at your level.
  • Post your training and race data on your favorite Blog site with Sidebars.
There are no catches or strings attached! BuckeyeOutdoors.com is just a site that was built to give back to the online community!

Conclusion
Please check the BuckeyeOutdoors.com Plugin that we've created. If you do download it and use it, please provide feedback (good or bad)!

Friday, March 27, 2009

Programming Productivity Killer

So much productivity get's lost when I try to get help from Visual Studio .NET. It's amazing that I can go out to the interweb and search through trillions of sources and get answers to my question in the blink of an eye, but when trying to search for the same answers on my local machine, it takes up to 10 minutes.

Every .NET geek knows this dialog and how useless and painful it is once it's displayed:

I can't close it, I can't cancel it. It stays on my screen and hog my resources for minutes on end, and also locks me out of my IDE, thus preventing me from working, while it updates. What a pain in my butt! I guess it's nice that they give me this dialog when I try to go back into my IDE though:

Unfortunately, the two buttons that I have to choose from do the SAME EXACT THING!!... Which is: force me to wait. I can either switch to the spinning dialog (first image), or sit and stare at my locked up VS.NET IDE.

It would be nice if, instead, Microsoft would index my help files in the background as needed. This way I could search through what has been indexed. A great example of this in action can be found in the Google Desktop utility (if you don't have it, you should get it). It indexes my computer in the background until it's done. It doesn't penalize me when I try to use it before it's done indexing. It never locks up my computer and forces me to wait while it refreshes it's index. Instead it shows me what it does have and then informs me that it's not done indexing. Beautiful.

After all these years as a developer, you'd think I'd learn my lesson by now...

Wednesday, March 25, 2009

I'm posting a blog entry...

This is a hilarious short film about why we are all secretly hooked on Twitter.


It's painfully true. I'm at my computer so much these days that I feel as though it's the only way I can communicate with my "friends". Listening to peoples tweets vocally let me appreciate how ridiculous tweets really are...

Monday, March 23, 2009

Mohican Training Run

I had another great run at Mohican yesterday. Nick and I were supposed to meet up and run the Red and Green loop. However, there were a few last minute changes (ask Nick for details) :) and we decided to do "Plan B" and run with the Forget the PR 50k runners. Rob had scheduled a familiarization training run for the runners of the upcoming race. Everything, worked out great, and I was happy we resorted to the Orange loop! I'll probably end up doing Red / Green blindly at the 50 miler this summer. (?)

Michelle, Nick, Sorry?, Paul, Cheryl,
Me, Mark, Rob,
Traci (I think), and Don

I knew this was going to be a fun run for me because we were doing the Orange loop backwards. I've ran the Orange loop 3 or 4 times now and I've always run it the other way coming from the Covered Bridge, up and around to Campground A. This time we met at the Campground A area and headed up into the forest to the Covered Bridge. Looking at the map below, we started at the 'Start / Finish', ran to Aid Station #1 (which I missed), then to Aid Station #2, then back to the 'Start / Finish'.


I woke up at 4:30, piddle-farted around in and out of consciousness til about 5:30, when I officially woke up. Of course, I made my coffee. Then I scarfed down a quick bagel and headed up to Mohican. We all met up and started off for the trail at 8:10. Immediately I was right in the middle of the front runners and the "back of the pack" runners. It was kind of nice to be running by myself actually. I mean, I do it all the time, only this time I was at the beautiful and trecherous Mohican running by myself. This run actually built my confidence up and I truly feel I could come up here and run it by myself anytime now; at least the Orange loop. :)

There were a few times where I crossed paths with Nick and I saw Rob once or twice as he was going between the two groups. However, I was not relying on them to tell me where to turn. Typically, I rely on one of them or Kim to keep me on course so I don't get lost. This time, I knew to just follow the signs for "MTB100"; they are posted at most places where the trail splits.

Somehow, I completely missed the Hickory Ridge aid station. I thought I had been running for a too long at one point and knew I had passed it. All the sudden I run up on Nick, and asked him about it. He said it was about 2 miles back. Apparently I turned left when I should have turned right or something. The good news is that I got a little extra distance in. We synced our watches and I had 7.4 miles and he had something like 7.2. Whatever, I didn't need a refill or a break by that point anyway. It felt good to just be out on the trail running.

More time goes by and more trails are consumed. Then, by about about mile 11, I'm starting to bonk. I went reaching for my other gel pack, only to realize I had only brought one gel pack! Unfortunately, I had consumed it at mile 4. I was sure I packed 2, but apparently not. This meant that I had to go 4 more miles with no fuel and I was on empty. Stupid, stupid, stupid!

As I rolled up on the Covered Bridge I saw Nick for the last time and he pointed me to the (obvious) water jugs. :) I filled up my two water bottles and headed down the Hemlock Gorge Trail. This is a beautiful trail that follows the Mohican River for about 2 miles. Absolutely gorgeous... and pretty technical at parts. This meets up with the North Rim Trail which goes along the Camground A site. I think I might have screwed this route up because I remember there being a really steep climb on the end of this section. However, I didn't see that at all on this run. I think I know where I screwed though, so next time I'll be sure to keep going strait instead of turning right. Besides, I was spent on this one anyway and McDonalds was calling my name. :)


After my run, I stood around to talk with Mark Carroll for a while. He and I talked about various races and our goals for 2009. Mark was there on my very first Mohican run (along with Nick, Kim, and Rob). I'll never forget it! I showed up for a 15 mile run with a bunch of people that I'd never met. I had never heard of organized trail runs before that run. The only way I found out about that particular run was because I had subscribed to Trails and Tribulations podcast, and one of the hosts of that show was Kim! Somehow, I found her blog and she posted something about a training run up at Mohican. I thought... what the hell, and the rest is history. It was great to see Mark again. Apparently, we've crossed paths at a few races (Pinckney Trail Marathon & Indian Run 60k) and we didn't know it until afterwards. :) Great seeing you again, Mark!

Before heading home, I stopped at McDonalds and devoured a BigMac value meal in record time. When I got home, Jen and I took the girls up to Blackhand Gorge and we walked 2 miles while the girls rode their bikes. What a perfectly perfect day!

Culligan Testimonial

Update: Tuesday March 24th (the next day)
Let the record show that my blog entry was discovered by a manager at Culligan this morning, named John. He called and spoke with Jennifer for quite a while about the two incidents. He was very professional and handled our problem rather well. John offered a lot of advice for Jennifer on what to look for when considering the used Water Softener (ie. Was it left out in the cold for an extended period of time? Things like that..). He did say that the water softener that we have now is out dated and he understood why the other "Culligan Man" that came to fix it couldn't fix it. Thank you, John!

Jennifer hadn't read this post yet and was astounded that I even posted the problem on my blog at all. I guess this shows that there is power in blogging. My plan worked... perfectly in this case. Had I not posted this entry, we would still be upset about yesterday's experience. However, as it stands now, John is going to get to the bottom of it in hopes that it doesn't happen to someone else in the future. Kudo's to John for finding my entry and handling it so fast... I guess I've done my duty as a consumer / blogger. :)

Anyway, I've updated the text below to remove some (not all) of my emotion about the two incidents. The facts are still there, but the anger has been "piped down" a bit.

Outcome: Culligan is OK by my book. :)

Original Post (minus the anger)
I'm not one to speak negatively of those (persons or companies) that don't deserve it. However, I think it's fair to post a review (good or bad) of our experiences with the Culligan company. We've had 2 incidents with them and both times they have ended with us being dissatisfied or (just recently) insulted.

Our first experience involved a Culligan man coming to our house to service our water softener. We waited for days for him to come out and fix it (no problem), but when he got here, he looked at it and told me he did not know how to work it... it was too old or something. I know it's old, that's why I called you. It's a Culligan water softener for crying out loud! Instead, he spent about an hour trying to sell us a new one. The reason I called him in the first place was to "fix" our water softener, not to sell us a new one. When he left, Jennifer and I were dumbfounded and didn't know what just happened. Nothing was accomplished at all and we were still left with a broken water softener. What the Culligan man didn't know is that I called him because I didn't want to bother my Uncle (who knows how to work on it). I called my Uncle after all and had him come and fix it.

Today, Jennifer calls to get information about a softener that she found in an advertisement. She wanted to know if it was going to be adequate for our needs and so forth. I listened to the conversation from Jennifer's' end, and Jennifer was extremely polite (one of the reasons I love her so much). However, the lady on the other end (the Culligan Rep) was very rude to her and treated Jennifer like she was an annoying nuisance. Jennifer had enough and finally said "Thank you. Good bye" and hung up. She was pretty fired up after she hung up the phone, and rightfully so. She told me how the lady was talking to her and how she was responding to Jennifer's questions. Unreal!

Here is a note for all people in the 'service' field:
Be Nice! Be Professional!
Here's what should have happened:

Incident #1: When the Culligan man came to our house to fix our water softener, he should stopped and realized that he was "the guy" to fix it. If he didn't know how to fix it, he should have called back to the Culligan headquarters (or whatever) and asked for assistance from someone that knew how my particular model worked. If nobody there could have fixed it, he should have found a way to fix it or referred me to someone that could fix it. The absolute last resort would have been to say "I don't know, good luck" and then walked away from it. Instead he turned to a "salesman" role...

Incident #2: When my wife calls you for information about your products, be nice to her and try to help her. Don't insult her and be mean to her. Who knows, her husband may be a blogger and he could post a negative testimonial about her experience with your company. It could even get indexed on a search engine and found one day. (?) *

* Updated:
It worked! After only 1 hr, my post was the #1 search result on Google for "Culligan Testimonial"...

Wednesday, March 18, 2009

Training Progress and New Shoes

My training is moving forward. This week is proving to be very good, but man... last week was a horrible week of training. I think I accumulated a total of about 20 sloppy miles all together. :(

While I could rattle off a bunch of excuses to myself about why I didn't get them in, the reality was that I simply didn't make time to get out and run, and avoided getting my miles in when I had the free time. I procrastinated until the last possible hour every day and by the middle of the week, I felt overwhelmed. I tried to cram in my miles and this led to a slight pain in my right heal come late Sunday night when I was trying to do my long run. I put my long run off all day on Sunday until it was about 8 pm and the sun was going away for the night. I got my water bottles filled and even went so far as to create a playlist of various podcasts. After I had procrastinated long enough, I headed up to my hill on the back of my property to run in circles for a few hours. About 4.5 miles into my 20 miler, my right heal started hurting really bad, so I listened to my body and hobbled back down to the house. I was pissed at myself because I knew why it hurt; my training was sucking.

So, whatever... I put last week behind me and this week is a new week. On Monday I felt good, so I decided that this week, I'm gonna keep to simple flat surface running to prevent the foot from really getting injured. It's worked as far as I can tell. All this week I avoided the gnarly terrain and focused on just putting one foot in front of the other. I'm back baby. :) One thing I did notice from doing all this pavement pounding is that I'm in need of new shoes again. I know because my knees and hips are yelling at me.

Tonight, I went to FrontRunner and treated myself to a new pair of trail shoes. I tried on all kinds of shoes and decided to get the ASICS Gel-Trabuco® (Black/Onyx/Mustard). It was a toss up between these and the North Face Chin Scrapers. These ones fit the best and had more mesh to let my feet breath. I've never owned a pair of ASICS and I'm surprised at how light and fluffy they feel. :)

FrontRunner Testimonial
Also, I realized tonight that I will be a lifelong customer of FrontRunner. My last 4 pair of trail shoes have all come from here, and each time I go in, my experience is better than the time before. Tonight sealed the deal for me and they will be getting my business as long as I'm buying shoes and as long as they are in business.

Of course, I've tried purchasing my shoes at other running stores, but I always wind up back at FrontRunner. They always take their time with me and custom fit me into the shoe that is perfect for me. It helps that they are all avid runners in there and each of them are extremely knowledgable and outrageously friendly. Last time I went in I met a guy named Mike and he remembed me by name tonight. He said "Yeah, you're Luc the trail guy". I was totally shocked that he remembered me! This time I dealt with an older guy named Kevin and we sat and talked for almost an hour. If you've never been there, I encourage you to give them a try. They're all high class people... Tell them "Luc, the trail guy" sent you. :)

Anyway, I'm anxious to get my new shoes dirty tomorrow. I'm taking a run with an old friend who decided she want's to get into trail running. I'm gonna treat her to a slow tour through Marie Hickey trail.

Oh yeah, I'm heading to Mohican again on Sunday to run the Red/Green loops with Nick again. We're hoping we'll have more success this time, than we did last time. If you're free on Sunday, you should come join us. It's supposed to be beautiful this weekend; great time for a trail run.

Tuesday, March 17, 2009

Pearl Jam - Ten

Store | Pearl Jam - Ten Club: "2008 TEN SUPER DELUXE EDITION"



Jennifer, I hope you're reading this because I really want it. :)

Self-taught programmer from Shoreline now cutting-edge game developer

It's nice to see a non-violent game getting high recognition from the gaming community. I'm not a gamer, have never been a gamer, and probably will never be a gamer. It surprises many of my friends that I spend so much time on the computer and don't play games. Odd, yes.


Anyway, this caught my eye because this guy was a self taught programmer who "made it". I have some friends that wish they could write code. Well, here's proof that you can. You may have to get a make over first, so that you can look like one of us, for example this (John Edwards) has that look. :)

Read on: Self-taught programmer from Shoreline now cutting-edge game developer | Seattle Times Newspaper

Monday, March 09, 2009

GE | Plug Into the Smart Grid | Smart Meters

I love my family so much, but there is a serious issue going on with our energy consumption. I literally walk around all day and turn off lights behind my girls. If someone walked into a bedroom at 8am, the light would still be on at 5pm, for no good reason. It's sad really. :(

Jennifer and I's "song" is "Every Light in the House is On" by Toby Keith. I want that song played at my funeral, because it is literally the story of my life. It goes like this:
Every light in the house is on
The back yard is looking like the crack of dawn
The front porch looks like runway lights
Kind of like noon in the dead of night.
Anyway, while I was going through my blogroll yesterday, I read about this Smart Grid technology by GE.

Here is a quick video that shows an overview of what it is:


What caught my attention was a new meter that you can hook up to your house that literally lets you see how much money is being spent at any given second of the day by a little display unit inside your house. This is totally what my family needs! Here is a link to all the information: GE | Plug Into the Smart Grid | Smart Meters

Sunday, March 08, 2009

Mohican Fun

Today was a fun day. I woke up at 4am (after a 2 hour "nap") and got ready to head up to Mohican State Park to meet up with Nick for a 21 mile trail run. We were going to run the Red/Green loops. We had planned on meeting around 6:30 so that we could drop off some water and feul at various spots around the forrest. I left the house around 5am so that I wasn't late.

Torrential Down Pour
It poured down rain the whole way up. I was wondering what the hell I got myself into as it rained harder and harder the further north I got. I arrived at Campground A around 6am, so I still had 30 minutes before Nick would be there. I tried to catch a quick cat-nap, but that didn't happen.

Placing Drop Bags
Nick showed up and I hopped in his car so we could go to the various drop off locations before we started our run. This is where things got interesting. :) We dropped off some water and brownies at Rock Point, and then headed to the Bridle Staging area to drop off a couple of bottles of water. All the sudden, Nick's car jolts and he is stuck. I mean STUCK! He put his car up on a cement culvert that was surrounded by thick juicy mud. We tried to get him out and saw that was going nowhere, so he said a few choice words and then hopped in my car so we could get started on our run. It was around 7:15 at this point and the sun would be coming up soon. Oh yeah, it was still raining pretty good.

Rainy Start

We started from the Covered Bridge and ran up the Red loop in the dark with our flashlights. About 2 miles into the run, the sun was peaking out and the fog was rising. The trails were very soupy and sloshy. It was perfect! When we got to the Bridle Staging area, we tried a few more things to get Nicks car unstuck since we had some daylight now, but to no avail. We didn't do anything but cover ourselves in mud.

Red Loop Mud
We trekked down the course and made our way to a river crossing which was pretty damn cold, but fun. We were completely soaked by this point (head to toe). The goal was to stay moving at this point because the weather was dropping, but the rain was still steady. This means that you only stop when you have to otherwise, hypothermia would set in. Each time we stopped for even a minute, the cold would get into my bones and I would start to shake profusely. Once we got moving again, the blood would start flowing and I would warm up though.

Rock Point
We decided to cut out run short so that we could have enough time to call AAA to get Nick's car unstuck. When we got to Rock Point, we completely destroyed some yumalicious brownies that Nick brought and then decided to skip the Green loop and just run the Red loop back to the Covered Bridge. As it turned out, this was the best thing to do all around: it was cold and pouring, we were not well dressed for the weather, his car was stuck-stuck, and I wanted to get home and hang with my girls.

Done
We trudged back to the Covered Bridge and finished our run at only 12 miles. It was a hard 12 miles though if that counts for anything. :) Anyway, I changed into some warm/dry street clothes and we called AAA. While we were waiting on the truck, we headed to McDonalds and ate like we hadn't eaten in weeks. We each got a Big Mac meal and I barely remember tasting it; I think it was strait to my stomach and bypassed my mouth. So good!

Nick and I had a great time, despite the car problems. It was fun sloshing through all the thick mud and just getting out in the elements. We'll be doing this again soon!


Monday, March 02, 2009

Training on the Trails

I'm still diligently training for the Forget the PR 50K. This week was a down week and I only did ~24 total miles. It was kind of a nice change of pace because toward the end of last week, I was feeling pretty beat down; I'm sticking to the "10% rule" but I was just getting burnt out. I was ready for the break. So this last week was 100% easy Blackhand Gorge running. I posted some cool pics that I took from my runs this week below:

Marie Hickey - Snow Covered

Marie Hickey - 30 Feet Above Licking River

Chestnut Trail - Hill From Hell

Chestnut Trail - All Alone

So anyway, as I'm moving into my last 6 week surge of miles, I'm due for some different variety. This week, I'm hoping to get down to Dillon State Park and learn some of those trails to get away from my mundaine mileage at Blackhand Gorge. I love Blackhand Gorge, but I only have 3 real options for mileage and I need more. I don't like running on pavement that much, and since most of my 2009 race schedule is all trail races, I really need to put my training in on the trails, not the road.

I'm scheduled for a 22 mile long run this coming weekend and I'm hoping get up to Mohican and run with some trail buddies on the Red / Green loop. Rumor has it that they're awful purdy. I'm also planning to get in a few long night runs this week as well, because I got some new reflective gear along with lots of new energy jelly beans, shot blox, and oodles of different flavored gel packs. I'm anxious to try some of the new stuff out; silly but true.

Something else I'm looking forward to this week is a family hike. Jen got online and bought a new Sherpani hiking backpack for us to use this summer to haul Daizi around the woods in. As soon as it's warm enough, we're gonna take a big family hike up at Mohican to see Lyon Falls, or down at Hocking to see Old Man's Cave. We're all real excited about getting out and active (and muddy) as a family. :)

I also realized this week that I need to loose about 20 - 25 pounds fast. Hopefully before my 50 miler in June. I'd like to loose about 10 pounds before April 19th (Forget the PR 50k), but we'll see... I've noticed a pattern recently that my knees really hurt after running any distance on pavement. I guess slamming 210 pounds down on each leg over and over and over for hours at a time could do that. Ideally, I'd like to be down to 185 -190 by June 20th. Again, we'll see... Not only for my race, but also for myself and my girls. I kind of commited myself to it tonight at the dinner table when I told Jennifer and the girls that "Starting tomorrow, Daddy is eating healthy." I got no reaction from anybody, but I meant it. :)

Oh yeah, on our little shopping excursion this week (when I got all that cool stuff), we all ended the night at this nice place called Hoggies Barn and Grill up @ Polaris and it was AWESOME!! We all gorged on way too much food and had a blast. Below is a pic of Lizzie and Jazzy drinking their first bottle of Rootbeer at Hoggies. Daizi had milk, of course.

Saturday, February 28, 2009

Steven Seagal

I know there are a lot of tough dudes in the world, but Steven Seagal is still a hillbilly bad-ass in my book:



He makes kicking butt look easy and kinda fun actually.