Posted by Matt at 10 February 2010

Category: GreaseMonkey, Programming, browser extensions, facebook, javascript, web

better_facebook_large I have officially released BetterFacebook.net to house my "Better Facebook" greasemonkey script and Firefox add-on.

The script has been updated to work with the new Facebook layout, and also now supports Chrome!

Check out the site and the script. I hope you find it useful!

BetterFacebook.net

Posted by Matt at 19 January 2010

Category: browser extensions, web

better_facebook_large Today my Better Facebook Firefox Add-On was approved to go public. It took a while (feels like the Apple App Store!) but after a few revisions it was finally put through the process.

This is just a re-packaging of my Better Facebook Greasemonkey Script that does the same thing.

The functionality includes:

  • Mark your Live Feed as "read" so old posts are hidden by default. Quickly and easily only see new posts
  • If new comments are found on old posts, they will be shown and highlighted for you
  • Hide or minimize by story type. For example, stop seeing all notifications about who your friends became friends with!
  • Pin the notifications panel to the upper right, so it is always easily visible
  • Track your friends, and if someone unfriends you it will automatically tell you who it was!

This script and add-on will continue to improve as I add more features. Enjoy!

Better Facebook Firefox Add-On

Posted by Matt at 5 January 2010

Category: fun

This is Sandy, a relative of mine. She is trying to win a local Ugly Sweater contest, and needs your vote! She would appreciate it if you would take a few moments to register and vote for her.

Click here to Vote!

Here is her sob story:

My husband and I are are wearing matching vests that I embellished with tulle, pom-poms, metallic ric-rak, and holiday buttons. The flashing pins and my light-up necklace aren’t visible in the picture. Look closely to see my Santa earrings and matching headband. I drug my husband to the packed photography studio to have these pictures taken. He wasn’t very excited to put on his vest with everyone watching. We handed out the pictures at our family Christmas party, hoping to garner some votes for the ugly Christmas sweater contest. It must have worked, we won!

Thanks!

Posted by Matt at 29 December 2009

Category: google, html, javascript, web

With the upcoming release of Google Caffeine and the importance it will place on page load time when it ranks results, now is as good a time as any to learn about optimizing your site. This recent blog post by kangax is a great primer for getting rid of common, unnecessary bloat.

Perfection kills » Optimizing HTML

Posted by Matt at 25 December 2009

Category: fun

A special message from our dog Pancho…

feliznavidadbitches

Posted by Matt at 31 October 2009

Category: fun, jquery

For Halloween this year I decided to go full nerd and create a jQuery pumpkin. I’m sure no one else understood what it was, but it was unique!

PA318807

PA318762

Posted by Matt at 13 October 2009

Category: fun

On Google Maps…

tina_feys_house

Posted by Matt at 7 October 2009

Category: GreaseMonkey, Programming, browser extensions, javascript

Example

This script was born out of a simple problem: I wanted to find out which movies have been released to theaters or DVD lately, and add them to my Netflix queue. Unfortunately, Netflix doesn’t provide an easy way to browse "major" movie releases by release date. However, IMDB always has a nice interface for this. Further, I’ve found myself at IMDB before, looking at a movie that I would like to add to my Netflix queue, but I had to go to Netflix, search, find the movie, then add it.

Solution? A new GreaseMonkey script!: Netflix Links on IMDB

I created this simple GreaseMonkey script, which adds a little red "+" next to movie titles on imdb.com. Clicking the image pops up a new window that searches on the movie name, usually finding the movie you want as the first match.

Easy! Hope it helps!

Posted by Matt at 28 September 2009

Category: running

26.2 After 19 weeks and almost 500 miles of training, I am proud to have completed my first marathon, with a time of 4:09:34.

Surprisingly, this is just 7 seconds off from my "predicted" time that I had arrived at by estimating my pace on different legs of the race and what I could realistically accomplish. To me this means that I had a good feel for where I was at in my training and set a realistic goal. Although I didn’t reach my "dream finish" of under four hours, I also didn’t bonk and come in a half hour later than I wanted. This, to me, was success.

The race went very much how I thought it would, with a few little surprises thrown in. It was an absolutely perfect day weather-wise, which I was very thankful for. I arrived at 6:45am, 45-minutes before the 7:30am start. This gave me time to visit the restroom once, do some jumping jacks and stretching, and make sure everything was set. Then I got in line to the restrooms again, "just in case", and I was near the back of the line. As it turned out, I made it to the starting gates just as the crowd was starting to move. In retrospect I probably should have given myself at least another 15 minutes and gotten there a full hour before the start.

I crossed the starting line and remembered to start my Garmin watch. I was repeating to myself over and over to not forget this, because I have done that in past races. The crowd started out slow (and I was at the back), but I was careful not to do much swerving or passing. It felt like I was going really slow, but the first mile ended up being 9:16 which was perfectly fine for me. I was annoyed that my Garmin gave me the 1-mile beep a full .05 miles before the official 1-mile mark, so I knew I would be running longer than 26.2!

The start of the race went great. I found my groove and repeated to myself over and over – "don’t start out too fast!" I had to check my watch and slow myself down a number of times. At the beginning of the race I felt strong and invincible, but I knew that wouldn’t last.

In training, I did a gu every 4 miles starting at mile 4, and I walked for 1 minute every 2 miles starting at mile 4. Unfortunately the course wasn’t really setup to make this the optimal intervals, so I had to improvise. I ended up not taking a gu or walking until mile 5.5. I had planned this based on the course map, but it was still different. I had to adjust as the race went on, too.

I had printed out a little chart of time splits at each mile for my 3 different pace goals, as well as where each aid station was along the way, and pinned it to my water bottle (I carried a Nathan insulated bottle as I had done in all my training). Well, I took my first sip of drink from my water bottle at mile 2 and some of it dripped on to the paper, smearing the ink and separating the paper from the pins. Luckily I was very familiar with the map in my head, so I knew where stops were coming. All that obsessive planning to build that cheat sheet turned out to be a waste of time :)

The first half of the race felt great. I wasn’t the least bit tired and I found a few people to chat with along the way. A bunch of hot air balloons were tethered along the course, which was a fun distraction every mile or two. I mostly concentrated on sticking to my pace, thinking about upcoming water/Gatorade/gu stops, and just enjoying being outside running on such a nice day.

Around mile 14.5 is where I first sensed trouble. I stopped for a second to get a full refill of water at an aid station, and my hamstring muscles in the back of my leg started feeling like they might cramp on me. I never got cramps in any of my training, so I’m not sure what might have contributed to it this time. It wasn’t serious, but it got my attention.

At mile 16 is when I first noticed a feeling of being kind of tired. It was my first thoughts of "How much longer do I really have to go?" It didn’t help that miles 14-20 were on an island with almost no spectators or entertainment. Around this time I thought of a suggestion I read somewhere to think of people you admire and assign them each a mile remaining once you start getting tired. When you think of that person, you won’t want to give up. So I had my list of people setup for the remainder of the race, and it did help keep my mind occupied and motivated me.

Just after mile 20, I came off the island and down into the big crowds. Half-marathoners turned right to the finish just a hundred yards away. I turned left for 6 more miles of pain. It’s kind of torture to see the finish line so close and yet know that it’s going to be almost an hour until you get there.

The final 6 miles were an out-and-back, so as I headed out I saw people coming back who were about to finish. Some looked really strong, and I knew they were probably going to finish a little over 3 hours. I was impressed at each one I saw pass me going the opposite direction. They had all faced the same battle as me and had done it so much faster!

At mile 21, I had officially started running farther than I had ever run in my life. That was cool, but I had also lost my motivation. I didn’t care so much about time anymore, and I was ready to accept whatever time I got for whatever effort I could put in for the last 5 miles. My body was really beginning to ache, and the desire to stop and walk had to be squashed with every step. My leg had been flirting with cramping since mile 14, and I knew I didn’t want to push it too hard and have it go on me. That might mean a miserable last few miles. I adjusted, and starting walking 1 minute every mile instead of every two.

There was a lot of struggling going on out there. People were walking, grunting, encouraging each other, and making faces as they endured pain. It was exactly how I had heard it described – the last 10k will test you in a whole new way. Gone was the nice run I had enjoyed for a few hours. It was replaced with an aching back, pain in the legs, and an overwhelming desire to just stop. I’ve heard a marathon described as "A 20-mile warm-up for the hardest 10k of your life." So true.

My pace dropped off until I was at 10:00 for mile 25 and over 11:00 for mile 26. I had predicted a slowing down, but not this much. But since I had been pretty solid for most of the way, I was still within my time goal. I walked for .2 miles at the 26-mile marker, then decided I was going to run the last mile no matter what. The crowds were just out of sight and the finish was close.

I started my slow run and thought back to all the training I had done and how it actually got me to the finish. I was actually going to finish running a marathon! I had imagined crossing the finish line many times in training, but I realized it wasn’t going to be the ear-to-ear smile run-to-the-line finish that I had imagined. It was going to be a slow and steady trot of endurance, and surely a look on my face of someone who just wants this to be over with.

Right before the finish line I saw my wife and daughter and a couple friends cheering for me. It felt great! I threw my water bottle to them so I could finish without it, and waved for my daughter to come run the final tenth of a mile with me. Unfortunately, that turning motion was enough to finally trigger the cramp in my leg, and I clutched it as it suddenly got tight. But there was no way I was going to stop for that.

I heard them announce my name as I finished, but I honestly don’t remember looking around and seeing the crowd or anything. I was just so relieved to be done. I stopped to have the timing chip cut from my shoe and looked at the milk crate and told the girl, "Are you kidding me, I have to lift my foot up there? Just a second…" She laughed.

I got my medal around my neck and grabbed some water, a banana, some grapes, and some chocolate milk. I had achieved my goal. It felt great.

I don’t have any wisdom to share about training for or running a marathon. I’m an average runner who followed a typical plan and finished near the middle of the pack. I credit my ability to reach my goal in part to all the information and wisdom that I got from others who had been there and done that. They gave me a solid plan to get to my goal, and all I had to do was follow it.

With that said, here are a few observations that I came away with:

  • In training, consistent weekly miles and semi-long mid-week miles after long weekend runs are what really prepares you, not just the long runs that continually up your "longest distance" record. It’s easy to fall into the trap of thinking that going 1 extra mile will somehow leave you more prepared. It won’t. It’s the consistent miles, week after week, slowly increasing, that prepares you.
  • For me, confidence mattered. My longest training run was 21 miles, simply because I wanted to be a little closer to feeling what 26.2 would feel like. You need to figure out the things that will give you the mental edge too, not just the physical preparation.
  • When it comes to race day, trust your training. You did all the work. It will get you there.
  • I planned to look at my predicted time splits every mile, but I never did. They were worthless, especially since I was wearing a GPS watch. I wouldn’t bother with that again.
  • The last 5-6 miles really were a step up in difficulty, mostly because of a sore body to a degree I hadn’t experienced in training. It’s almost a good thing I hadn’t experienced it in training, because going in a little naive kept me from worrying about the upcoming pain.
  • There must be some secret to following the shortest possible path on the course, because my Garmin clocked in at 26.47 miles at the finish. What a rip-off!
  • It’s important to be flexible with your race plan. You can’t plan out every water stop and gu pack in advance.
  • I loved carrying a water bottle during the run. I did it in training and I wouldn’t do it any other way. It didn’t fatigue my hands at all, and I had the comfort of knowing I could drink any time I was thirsty. I also had 3 gu packs with me at the start (I ended up using 2 of mine and 3 of theirs).
  • As many people say, how you feel at mile 16 doesn’t tell you much about how you’ll feel at mile 26. I think that if I had sped up because I still felt good, I would have crashed and ended up with an even slower overall time.
  • "The Wall" isn’t a certainty. Either that or it’s a very subtle wall, because I never hit it. There was a slow change in motivation and energy over a few miles, but nothing more than I would have expected after hours of running. I don’t know if it was proper training, proper nutrition during the race, my unaggressive pace, or just luck, but I never felt like I hit the wall.
  • I was sore after my 21-mile training run, but nothing prepared me for how I felt waking up the day after the marathon. Oh my. My body hurts.

Well, that’s it. Mission accomplished. For me, this was a way to experience something new in life, push myself physically and mentally, and set a goal that would take months of preparation and dedicated training to accomplish.

What now? I don’t know. Certainly relax for a few weeks. Will I ever run another? I don’t know, we’ll see. Right now I don’t have the desire. I hit a respectable time goal that I feel challenged me and reflected the effort I put into it. I don’t have a desire to push for some arbitrary 4-hour goal or beat my friends’ times or anything like that. And I don’t have the desire to dedicate the many hours it takes to train. But sometime in the future, you never know. Maybe I’ll do it again. For now I’ll be happy to stay in good shape, run for pure enjoyment and health, and maybe stick to doing a few half marathons a year.

ps – If you see me shuffling slowly for the next few days or taking a second to concentrate before getting up from my chair, try not to make too much fun of me :)

pps – I can finally relate to this!: http://www.youtube.com/watch?v=m-hCuYjvw2I

Posted by Matt at 27 August 2009

Category: fun, web

 

screenshot

ObnoxiousFacebookHabits.com

This is just a fun little site to highlight some of the obnoxious habits of Facebook users.

I’m sure we have done or currently do some of these things. Don’t be ashamed. Just stop. :)