Search Engine Ranking Factors

By hagrin - Posted on 08 May 2007

Although this article is already a month old, I have to applaud everyone involved at SEOmoz who created an extremely comprehensive list of Search Engine Ranking Factors. They provide you a great checklist of search engine optimzation factors to keep in mind and rank them according to what some of the more respected voices in the SEO industry deem as "important".

There isn't much "new" content here as much of what is covered should be pretty basic to the seasoned SEO, but it does provide a prioritized checklist for SEOs to follow and use to review client sites. Keywords in TITLE tags, inbound links, domain age and other factors are noted (obviously) as major factors contributing to SEO success. This SEO checklist provided me a valuable tool for performing site evaluations.

Convert .Net Code to HTML

By hagrin - Posted on 03 May 2007

When you're writing a development related blog, you're eventually (hopefully) going to write some code snippets that you want to share with your readers. However, in order to get the most out of that code snippet, you should make it easy to read and color coded so that potential users can quickly read through your code and evaluate its worth.

That's where CopySourceAsHTML will solve all your problems. CSAH is a plug-in that integrates directly into your Visual Studio IDE environment and allows you to highlight code, right click and choose "Copy As HTML". The tool is freeware and performs exceptionally - if you maintain a .Net developer blog, I would suggest installing this add-on.

SharePoint v3: Quick Launch Update

By hagrin - Posted on 02 May 2007

Just a FYI to the 3 of you reading this site (Hi Mom and Dad!), I made an update to the Recreating the SharePoint Quick Launch story I posted back in February. I made some code fixes that were mainly introduced with the release of the 40 Free WSS Application Templates made by Microsoft.

Hope the bug fixes help!

Dan Osman Speed Rock Climbing

By hagrin - Posted on 24 April 2007

After going to a bachelor party this weekend in which we did some rock climbing at the Shawangunks Mountain Range in New Paltz, NY, I have an amazing amount of respect for rock climbers. Days afterwards, my forearms are still burning, my body is still sore and I have battle scars all around to remember the experience.

During the rock climbing adventure, we kept talking about Dan Osman. The late Dan Osman, who died cliff jumping, was the closest thing to Spiderman I have ever witnessed. For any of you who haven't seen what Osman could do, watch this video below -

The guy was sick - letting completely go of the mountain face (around the 1 minute mark) with no ropes, no harness, no backup is simply incredible.

2007 Umstead 100 Mile Endurance Run Race Report

By hagrin - Posted on 02 April 2007

Here's my humble recap of my first attempt at 100 miles.

Pre-Race
I drove solo from Long Island, NY for 8 hours on early Friday morning to head towards Raleigh, North Carolina for my first attempt at a 100 miler. However, I had injured my ankle about a month ago which really limited my running to about 20 miles a week, but I continued to do 2-4 hours of elliptical work so I was in good cardio shape, just not good runner's shape. Needless to say, I was a little worried about how my ankle would hold up especially when dealing with the downhills which seemed to hurt the most during my training sessions. I didn't stay at the park (although I paid for a cabin) and decided to make the Comfort Suite on US-1 my home for the night (great hotel btw). When I come back next year, I plan on flying into the Raleigh Airport instead of driving to make things a little easier.

Actual Race
Loop #1
I met up with Jesse Leitner (who finished 11th in the 100 and PRd a 50 time too - congrats!) at the Comfort Suite and we headed over to the race site together. While it was cold the previous night and we were expecting temps in the 30s-40s when the race started, I was surprised to find myself perspiring while warming up in just a tee shirt and shorts (i.e. not a good sign - I'm 5'11", 185 - not exactly the prototypical long-distance runners body). We had heard in the pre-race meeting that most runners go without a flashlight at the beginning, but I decided I definitely needed one after trying to navigate back towards my car before the race (I highly recommend a light if you plan on running alone in that first hour). The race started and I went out at a very comfortable sub-10 minute pace and found myself in the top 25 or 30 I think. At around mile 3, I found myself running with one other runner - Jesse! (odd how I had never met him before and now I was running with him). We kept a very comfortable pace even talking a bit while running as we cruised into the first manned aid-station (right before the 7 mile marker). This was easily my favorite aid station in any race with all the volunteers being extremely helpful (more on that later), but it also signified the hardest part of the course was upcoming. For anyone running this race, miles 7-10 are the hardest in the loop with the steepest, longest hills on the course. Even though I felt good, I started to walk these uphills as everyone cautioned me to make sure to take the uphills easy so I was able to walk easily up the hills and most of the runners behind me followed suit. By mile 10, I started to purposefully slow myself down some as I was on sub 2 hour pace for the loop so a few runners including Jesse passed me. I entered the Start/Finish at around 2 hours exactly and felt great - no perspiring, no heavy breathing, heart rate low, no cramps, no blisters and my ankle feeling great (in fact, I hadn't thought about it once until Jesse actually asked how my ankle was doing).

Loop #2
This loop was pretty uneventful, but again I decided that since my goal was to just finish the 100 in any time (dream goal was sub 22 hours, realistic goal was 24 hours), I decided to slow myself down again and run an even slower pace - especially with how the heat was starting to turn itself up. I ran pretty much by myself the entire time, took my time at all the aid stations to drink plenty (I didn't carry water since this course has water every 2.5 miles and it seemed pointless to me, who didn't really care about my finishing time, to carry water unnecessarily). I ended up finishing this loop in about 2.5 hours - still really good pace, no complaints, no blisters, no cramps, ankle holding up well.

Loop #3
Here comes the heat. By this time, it's about 10:30 and I won't finish this loop until 13:40 or so and while the time is extremely unimpressive, it was more a personal decision to slow down as much as possible while not getting demoralized that runners were passing me (it's hard to go in with a goal of racing against the course and then not being affected by your competitiveness when runners pass you). Everything was working well for me, but by the time I got to the manned aid station at mile 32, a few volunteers noted to me that there were dried white sweat streaks down my face and my hat had a white ring around the top of it. I spent 5 minutes eating pretzels and one of the volunteers gave me a paper towel ice bag to put under my hat and on the back of my neck to cool off some. As I left this aid station, I decided to walk as much as possible because I sweat a lot and it would be smarter to save myself for the cooler hours and not fight a losing battle keeping myself hydrated and fueled properly. I finished this loop without incident, albeit very slowly and headed out for the 4th loop after calling home to let them know I was feeling great. In fact, I think I even said "I call you in about 7.5-8 hours after I finish another 3 loops". Yeah, oops.

Loop #4
Now, I believe the temps are up to 80 degrees and this is easily 30 degrees warmer than any temp I have run in for 7 months. Even still, I was feeling great - no cramps, no blisters and the heat was bad, but not to the point where I was sweating badly so I decided that when permitted I would continue to run to make sure I didn't get tight and to find shade as much as possible. In my effort to find shade, I would run on the edges of the trail where the trail is a little softer. At around mile 41, I stepped in a soft spot, twisted my ankle and it was all downhill from there. I came into the manned aid station slightly lipping and I took my time, ibuprofen and debated what I should do. I figured I would continue to move forward, hope that the aspirin would kick in and try and run the flats and slight upgrades (oddly, the downhills hurt my ankle a lot more so walking the downhills was my only option). The last 5.5 miles of this loop were sheer torture. I didn't see any runners during this time except who I assume was the female leader Jamie and when I saw her coming up from behind, I decided to try and run some which was a huge error on my part. I started to overcompensate for my ankle and the rest of my body didn't like that much at all. I ended up limping the last 2.5 miles into the Start/Finish and was faced with the following decision -

50 miles completed in 10:30ish.
Could I walk 50 miles in 19:30 hours?

I definitely could if I wasn't injured - heck, I could probably walk it in a lot less than 19 hours. However, faced with the tasks of having to drive home alone 8 hours and then recovering from an additional 50 hours on a bum ankle, I decided to drop at 50. Although I was so pissed I couldn't go on that I skipped the aid station and a volunteer actually chased me into the cabin to ask if I wanted anything (the volunteers were so amazing, I didn't know people that nice actually existed), in retrospect it was the right decision as 2 days later my right ankle is so tender I can barely touch it no less walk around.

I ended up finishing 33rd of 107 50 mile finishers in a time around 10:25ish - slower than I would have liked, but I was happy considering what I went through for the last 8 miles.

What I would do Differently?
Next year, when I come back I plan on -
1) Flying down to the Raleigh Airport - the driving was way too much to do solo.
2) Bring thicker shoes - I ran with North Face Arnuva 50s which kept my feet in great condition, but the miles directly in and out of the Start/Finish are ripe with rocks that bruised my feet through the thinner bottoms. I almost switched to my XCRs, but decided that they weren't broken in enough and that the risk of blisters was too great.
3) Basketball Taping the ankle - I play a lot of basketball and I should have taped the ankle in much the same way I do for basketball to prevent rolling it. I was worried that running 100 miles with it taped would be a bad idea, but maybe it would have slowed me down even more while offering me protection.

Thanks goes out to everyone involved in pulling off this race - it's highly organized, the trail is amazingly easy to follow (only in one spot did I see runners stop and get confused which was right by mile 4 or 5 where you could either correctly go left uphill or right downhill and there were pink signs down both directions), the aid stations were incredible and everyone was super friendly. I'll be back next year without a doubt.

withEvents variable Header conflicts with property ... Error

By hagrin - Posted on 26 March 2007

Today, as I was converting some web applications from .Net 1.1 to .Net 2.0 I received the following error on the source pages of most of my ASPX pages -

withEvents variable 'Header' conflicts with property 'Header' in the base class 'Page' and should be declared 'Shadows'

Huh? That's what I said. However, the fix is relatively easy. What the error message is saying is that you probably have some element in your HTML code/script that has a value of "ID=Header". By giving this element a new ID name, the error message will be resolved.

Custom Homepages

By tom - Posted on 22 March 2007

I've been using Google IG since it was first released. There have been several updates and addition over time, such as different methods to add items, tabs, and the newly released themes. However, the basic functionality never really changed.

In any case, I recently heard that Netvibes.com received a major update, so I figured I'll check it out. I was pretty impressed with the default set-up and design and decided to give it a chance. After using it for a few days I decided to make Netvibes my new default custom homepage. There are several reasons why.

First of all, aside from one 'module', everything I used on Google IG was available on Netvibes. The only exception is Google Calender. While there is a Google Calender module it doesn't have anywhere near the functionality of the IG module. Everything else was available, and in many cases the modules were superior on Netvibes--from better/simpler designs to superior configurability. For example, items like Notes, To-Do-lists, and box.net additions are much better for Netvibes.

Netvibes is also superior when it comes to feeds. Not only can you receive tool-tip like pop-ups that show a summary of a specific story in a feed, it also acts more like a standalone feed-reader. Although a little difficult to explain, you can click on a feed story and it will change to a window where it lists all the stories and (not just the few you selected to display on the home page) on the left hand side, and the summary on the right (assume one is given).

For now, the only downside I've noticed is that for Gmail module it only lists UNREAD messages and not READ messages. I prefer the Google IG module in that respect, but it's not a big deal. Secondly, I find that Netvibes loads 1 second too slow (seriously!). I've set this page as my homepage, and the tiny delay is more noticeable as one might imagine. Finally, as previously mentioned, the lack of a better Google Calender module is also a downside.

Nonetheless, the shortcomings explained previously are fairly minor and outweighed by the superior modules, configurability, and feed options. I haven't done any rigorous research regarding all modules, but the ones I used were available. If you use some more complex modules that may have only been designed for IG, it's definitely more difficult to consider Netvibes a viable alternative.

In any case, if you use custom homepages and haven't tried Netvibes recently, you may be pleasantly surprised.

March Madness: Day 1 Evening Games

By hagrin - Posted on 17 March 2007

The Day 1 night games, outside of the Duke game were chalk central as the favorites took care of business and were able to "survive and advance".

Vanderbilt took on George Washington during the non-televised game here on the East Coast and it was probably a good thing for GW fans as Vandy lit up the night sky with threes and GW failed to set their alarm clocks and got run off the floor. As I watched the game online through CBS Sportsline, I couldn't believe that this was a 6v11 game and not a 1v16. Vandy just dominated GW in every way and should prove to be an interesting match up against the contrasting style of Washington State.

Ohio State raced to a 21 point halftime lead and never looked back as they wiped the floor with Central Connecticut State. Greg Oden was a man amongst boys as he pulled down 19 points and 10 rebounds and altered numerous shots in the lane during the first half. Again, there really wasn't much to report on in this game as this way a blowout from the opening whistle.

Michigan State, the 9 seed, provided a mild seed upset as they were able to build a 13 point first half lead and hold off a shorthanded Marquette team 61-49. The key for MSU was that they got very balanced scoring and it wasn't just the Drew Neitzel show. With double digit scoring from 3 separate players, MSU, who struggles to score, got enough offense and a supreme defensive effort to shutdown a Jekyll and Hyde Marquette team.

UCLA vs. Weber State was another snooze fest as UCLA won by an impressive 28 points against probably the toughest of the 15 seeds. Aaron Afflalo dropped 22 points and had 8 rebounds which is a great sign from the Bruins best perimeter scorer. More importantly, injured Nick Collison played 32 strong minutes and shot well from the field which bodes well for UCLA having shaken off their unimpressive first round exit in the Pac-10 tournament.

In the other 79-77 game of the night, Xavier, out of the A-10, protected the conference's honor and held off a very game BYU team. BYU got a 24 point effort from Keena Young, but it wasn't enough to outmatch the 17 points from Drew Lavender and 23 from Doellman. Xavier will be matched up in the sexiest 1v(lower seed) match up with in-state rival Ohio State. The end of the game was another example of how you can win close games in the tournament these days with a guard who can penetrate and create his own shot which is what Drew Lavender could do that BYU could not. The dribble penetration was a huge factor in the last 2-3 minutes in the game and we've seen it time and time again in these close NCAA March Madness tournament games.

In what was a revenge game for Indiana, the Hoosiers were able to beat a depleted Gonzaga team and come away with a 70-57 victory. The key to this game was getting the strong scoring production from a third option, in this case, Wilmont for Indiana. Wilmont has 22 points and 7 rebounds which helped supplement DJ White's 16 and Calloway's 11. Gonzaga shot very poorly from the field only hitting on 35% of their shots and getting a putrid performance from Pargo (who shaved his own last name into his head) where he went 1-7 from the field. UCLA should have no problem with Indiana, but if Indiana gets scoring from 3 players, they could be hard to beat.

Eastern Kentucky gave UNC a scare for about a half, but UNC was never really in trouble in a relatively easy 86-65 win. The most important stat from this game is the performance turned in by Tyler Hansbrough who scored 21 and grabbed 10 rebounds for his best game since wearing the mask. With Tyler-like efforts, UNC has a very good chance to advance through their bracket, past Michigan State and on to a potential meeting with Georgetown.

In the last game of the night, Pittsburgh beat up a smaller Wright State team 79-58. Again, like many of the first day games, this was a major snooze fest as Wright State forgot what time the game started and were down 13-0 within a matter of minutes. Pittsburgh got double digit points from 5 players and shot a blistering 54.5% from the field while holding Wright State to 33%.

March Madness: VCU Beats Duke

By hagrin - Posted on 16 March 2007

The upsets were bound to happen, but did it have to happen to my team?

As everyone knows, I'm as big of a Duke homer as there is. Throughout the day I knew that with the lack of upsets that a big one was coming during the night session. Duke, even after being up double digits in the second half (again!), lost on a jump shot by Maynor with 1.8 seconds as the VCU Rams upset the #6 seed Blue Devils. Where as with most of the games I give you just a short overview as to what happened, I have a lot of thoughts about this game.

First, I can't fault the effort - the effort was there last night from McRoberts and Paulus. However, for as good as they played you could only sit there as a Duke fan and think that you didn't get nearly enough from two McDonalds All-Americans. McRoberts had 4 inches on anyone that was guarding him all night long and more athleticism and really should have went for more than the 20+ he had, but you can't fault him because he was rebounding and controlling the paint by himself. Coach K, instead of trying to make the other team play his pace, fell right into VCU's hands and played an undersized 4 all night long to try and play as quick as VCU which meant McRoberts was the only big man on the floor for Duke at times. McRoberts had such a good game that not only did Duke lose this game, but they may have lost McRoberts to the NBA draft next year. If they don't replace McRoberts with Patterson next year, Duke may have a very long season next year.

As for Greg Paulus, what else can you say. I killed him earlier this year and, as if he read my article, has played extremely well since that point. Last night, Greg dropped a career high 25 points, but it still wasn't enough as he couldn't stay in front of Maynor on the defensive end. Unfortunately, in a man-to-man defensive system, Paulus is always going to be a major liability with his below-average foot speed and less than impressive height. The only problem is he was recruited at this size and speed and if you're unwilling to change the system, you have to question why you recruited him. How many times does a Duke team have to be beat by a more athletic backcourt being able to penetrate to the rim at will before either the recruits change or the system changes?

As for the rest of the team, well, I just hope that some of the promising bench talent doesn't transfer. It's possible that you could see Pocius, Thomas and Zubek all transfer out of Duke for a lack of playing time.

As for the game, there were a few turning points. First, late in the game DeMarcus Nelson (who really had a terrible end of the season) drove the lane and never looked to pass while throwing up a floater that missed. Only problem with that play was that you could see Josh sitting on the baseline looking for the lob pass which never came. Instead, McRoberts is pushed in the back and misses a free throw so you end up with one point that possession instead of two. Next, the missed free throws killed Duke again. Paulus, who did have 25 points, missed 3 straight near the end of the game which is unacceptable for a captain point guard who is supposedly a good free throw shooter. Next, was there any doubt that Duke was going to lose that game when Nelson rushed down the court to score and leave too much time on the clock? Sure, you can't pull it out there because you're losing, but you just knew that Maynor, who was penetrating at will, was going to be able to get his own shot. Although all of these points make it sound as if Duke played awfully, Duke was up double digits in the second half and let yet another huge lead turn into a last second heartbreaking loss.

It was tough being a Duke fan this year and I fear that next year is not going to be much better.

March Madness: Day 1 - 2PM Games

By hagrin - Posted on 15 March 2007

After a timid opening set of games, March Madness viewers were expecting the upsets to start raining upon the brackets. However, it didn't start out that way.

After an 11-4 lead, Belmont missed a three pointer and the tide turned from there as Georgetown ran away with a relatively easy victory. Belmont was game for about 10-15 minutes, but the height and athleticism was too much for Belmont. Not much to say about this game other than Georgetown took care of business.

Oral Roberts was fitted for the glass slipper by many people filling out their office pool brackets. However, if you followed my advice, you would have been all over Washington State. Washington State was training 26-18 right before halftime and cut the lead to 28-26 on an impressive run right before the break. Going into halftime on the huge run carried over to the second half and WSU never looked back. Oral Roberts seemed out of sync and looked like the tried implementing a game plan that didn't suit their team in an attempt to turn the tempo away from WSU's comfort zone. It's a really good sign that WSU's shooters woke up in the second half and they were able to put up a 70 spot as there are questions about how much they can score.

Butler faced off against Old Dominion in another potential upset game. However, with the game 32-29 ODU winning, Butler hit 4 consecutive three pointers en route to a 17-0 run and just blew out ODU at the end of the game. ODU tried to respond during that run by taking outside shots outside of their system and Butler pounced on the misses. With the way Butler controls the pace, it should be interesting to see if the Maryland pressure can effect the Butler guards.

Finally, Texas A&M got a scare from UPenn, but just as CBS switched their east coast coverage to this game, UPenn forgot to score the basketball, Jones got two follow dunks and Acie Law took over the ball game as the 68-52 final didn't indicate how close this game was with 10 minutes to play. A&M turned up the defensive pressure when it had to, but you would like to see a more consistent effort from the Aggies when they play Louisville. I have A&M advancing, but if I was a betting man, I would say that Pitino's Cardinals could be ripe for the upset in the friendly confines of Lexington, Kentucky.

Hagrin's Picks: 3-1 (5-2 Total)

Recent comments