These Are A Few Of My Favorite Memes

In honor of the holiday season, and in true i-have-nothing-original-to-blog-about-so-i’ll-do-a-top-X-list-post style, here are my favorite internet memes from days yonder. From my tubes to yours (there’s a joke about an surrogate motherhood in there somewhere), enjoy:

5. The Rick-Roll (a family favorite). Have you ever been tricked into clicking a link that led to a video clip of the Rick Astley video “Never Gonna Give You Up”? If so, then you’ve been Rick Roll’d! Why anyone would ever be annoyed by this is beyond me…I love Rick Astley and that song is an anthem to my youth.

More after the jump… Continue reading

Pro Tip Of The Day – Apache Startup Error

I run Apache on my local machine so I can develop web applications in a self-contained environment. I encountered a strange problem the other day when tried to start the Apache service:


First of all, what an incredibly un-helpful message. The details also proved less-than-enlightening:


Mmmkay. Thanks for that. I know exactly what the problem is now and I can easily go about fixing it…NOT. msvcr71.dll is the C++ runtime library so it’s not like that narrows down my problem at all. I do know however…that it has something to do with the C++ code. Gee thanks.

Well if anyone is experiencing the same problem, let me save you the hours of fruitless Googling that I had to endure and just tell you what the problem was. I had a VirtualHost whose DocumentRoot pointed to a networked drive that was not currently connected. All I had to do was re-connect the network drive and bingo! Apache started up without a complaint.

A plea to application developers everywhere: Please, for the love of Blaise Pascal, write more informative error messages! How hard would it have been to say: “Hey idiot, you’re trying to use a network drive that isn’t currently connected!”. Instead I get all sorts of useless (but awesome) information about ModVer’s, AppVer’s and Offsets! I love geeky error dumps as much as the next guy…but for crying out loud…toss me at least one piece of useful debugging information along the way.

My Web Developer Toolbox

I realized today that I am very dependent on a few really nifty tools to get my work done. As a developer I am inherently lazy so I need tools that let me get things done quickly and efficiently. I assume many of you are also developers and lazy so today I’m going to open up my web developer’s toolbox and show you what’s inside in hopes that I can inspire you to reach your full laze potential.


If you’re not developing your web sites in Firefox, you should be.

Firefox AddOns That Rock My SocksAddons

Everyone has their list of “best Firefox addons ever”. I’m no different from them except I’m way cooler. So here is my list:

  • Web Developer Toolbar – The swiss-army knife of toolbars. It does everything including page validation, real-time CSS editing, form pre-population, DOM inspection etc etc etc. Trust me, you need this.
  • Firebug – Ever tried to debug JavaScript without it? Are you a sadist? Seriously go download this right now if you don’t have it already. When you’re back go read this and this.
  • QuickProxy – There are a few sites that I work on routinely that are only accessible through an SSH SOCKS proxy. I use QuickProxy to easily switch the Proxy on/off. Fewer clicks = more lazy (this is a good thing).
  • GreaseMonkey – Ever since I wrote my first only GM script I’ve been hooked on phonics GreaseMonkey. For those of you who have been living under a rock for the past several years, GreaseMonkey lets you inject your own JavaScript code into any webpage so you can customize your user experience. Check out all the cool scripts at
  • Adblock Plus + Filterset.G Updater – I seriously cannot remember the last time I saw an Advertisement on a webpage. I know there are a lot of people who don’t like ADP because they make their livelyhoods from web advertising. I am not one of those people.
  • FavIconize Tab – Real estate on my tab bar is a precious commodity so I use FavIconize Tab to only display the favicon of sites I visit frequently. Cool.



Need a complete WAMP solution without all the hassle of multiple packages, configuration woes and perhaps even *horror* compiling stuff? Look no further than XAMPP from Apache Friends. Their package contains the latest and greatest Apache, MySQL and PHP (both v4 and v5 support) all in an easy-to-use installable package. They also throw in some other goodies like an FTP server and PHPMyAdmin. Ever since I discovered XAMPP I do all of my testing and development locally before deploying to a staging server.

A Desktop Shortcut to Edit Your HOSTS File

What do you mean you don’t have one of these yet? Any good web developer needs to edit his/her HOSTS file frequently. Why are you still doing it the hard way: Explorer > C:/ > C:/WINDOWS > C:/WINDOWS/SYSTEM32 > C:/WINDOWS/SYSTEM32/drivers > C:/WINDOWS/SYSTEM32/drivers/etc > Right-click hosts > Open With > Notepad. Whew! Instead try something like this:


Double click that baby and your off and editing! BTW I use gvim instead of notepad because it makes me feel good. If you’re confused about what you’re seeing above, do this: Go to your Desktop. Right click > New > Shortcut. Enter “notepad c:/windows/system32/drivers/etc/hosts” as the location then click Next. Give it a name and you’re done! Double-click when you need to edit your HOSTS file.

A Good IDE

I use Zend Studio but I wouldn’t hold it against anyone for using Eclipse. The point is you need a good IDE to develop quickly! There are probably some purists out there that will extol the virtues of “Notepad coding” — or typing everything by hand. This is complete crap. Get an editor that does auto-completion, tag insight, tag highlighting and sports a full debugger.


Simple but awesome. How often do you need to find out what color that was on that site you just visited. Enter Colorpic. (Not on my list but also cool is Screen Calipers from the maker of Colorpic)


You need screenshots! You need them in your documentation, you need them to attach to emails, you need them to post on your blog, you need them to corroborate your stories. ScreenHunter is an unobtrusive screen capture utility that sports full-screen capture, area capture, timed capture, JPG, GIF and BMP support amidst a whole slew of other features. Did I mention it’s free?


Nevermind…I’ve decided I don’t like Launchy all that well.

So there you have it. My toolbox opened for the world to see. I hope this post spawns an army of eager web developers ready to code the next killer web two-point-oh site.

Jon Gale is currently employed by nextSTAT and spends his days looking for tools and tricks that will let him express his inner slackitude. He enjoys rousing games of badmitton and has had a goatee for over 10 years.

Google Stole My Tagline!

<disclaimer>I work for NextSTAT. I am NOT an impartial bystander</disclaimer>

For a company whose unofficial slogan is “don’t be evil” Google has just made their most evil, diabolical move to date. THEY STOLE MY (employer’s) TAGLINE! So what gives Goog? I let slide the fact that your cookies don’t expire until 2038. I turned a blind eye when you purchased Urchin and gave away the service for free (future blog post incoming on this one). I pretended I didn’t hear the news that you wanted to buy DoubleClick. But this…this has gone too far!

Allow me to introduce my evidence:

Exhibit A: The NextSTAT logo that has been around for at least 2 years. Note the TM appearing next to the logo and tagline.

Not Evil

Exhibit B: A screenshot from the Google Analytics product tour.

Google is evil

“the next generation web analytics tool”? I cry foul! That’s my line…and you stole it! I demand justice! Can you tell from my excessive use of exclamation marks that I’m morally outraged?

Google, as much as I enjoy your well-engineered products (especially Google Reader <3 <3), I can no longer remain silent in the face of your evil deeds. My blog, and the 13 people who have ever read it, will fight you to the bitter end**.

That is all.

** Jon Gale has not received the support of his blog audience in his crusade against the evil-doings of Google.

Monitoring Entries In A MySQL Table With MRTG

At work last week I set up some MRTG reports to monitor our MySQL servers. I used the handy mrtg-mysql-load utility to get queries/slow queries information but I also needed to monitor the number of records in a particular table and graph it using MRTG. For those unfamiliar with MRTG, graphing “custom” data is very simple. All you need to do is write a script that outputs 4 lines:

Line 1 -current state of the first variable, normally ‘incoming bytes count’
Line 2 -current state of the second variable, normally ‘outgoing bytes count’
Line 3 -string (in any human readable format), telling the uptime of the target.
Line 4 -string, telling the name of the target.

So I created a simple script to get the record count from a particular table:

echo 0
mysql -h $1 -uwww -e "SELECT COUNT(*) from injector" nextstat_injector | tail -1
echo 0
echo "Queued Records"

Which I would call passing the MySQL database host as the first argument. Once I had the script I added a new MRTG target like this:

Target[injector]: `/etc/mrtg/injector-stat` + `/etc/mrtg/injector-stat` + `/etc/mrtg/injector-stat`
MaxBytes[injector]: 500000
Options[injector]: nopercent,growright,nobanner,nolegend,noinfo,gauge,integer,transparent,noi
Title[injector]: Injector Records Queued
PageTop[injector]:&lt;h3&gt;Injector Records&lt;/h3&gt;
YLegend[injector]: records
LegendO[injector]: records

You’ll notice that I’m adding the totals from 3 different servers to graph a single sum value in MRTG. Any mathematical expression can be used to generate your graph values. From the manual:

You can also combine several target definitions in a mathematical expression. Any syntactically correct expression that the Perl interpreter can evaluate to will work. An expression could be used, for example, to aggregate both B channels in an ISDN connection or to calculate the percentage hard disk utilization of a server from the absolute used space and total capacity.

For a graph like this you’ll want to use similar options to the ones I used above. nopercent disables percentage display, growright tells the graph to read from left to right instead of the default right to left, gauge tell MRTG that the data points are “current status” measurements rather than ever-increasing counters, noi tells MRTG there is no “input” data to compare against “output” data and a few cosmetic display options. The resulting graph looks something like this:


So there you go…a quick and easy way to monitor entries in a MySQL table using MRTG.

Living on the Edge

There’s quite a little uproar going on about the release of a certain hex key that can be used to decrypt HD DVD movies. Apparently the AACS doesn’t like it when you publish that particular key on your blog. Desperate for anything to drive some attention and traffic to my blog, I have decided to post that key here; however, I’m going to disguise it as a poem so no one will recognize it for what it really is!

Oh Nine, Eff Nine
One one zero two!
Nine Dee Seven Four,
Ee Three Five Bee.
Dee Eight
Four one
Five Six, See Five?
Sicks Three Five Six,
Eight eight See ZERO.


So welcome AACS, MPAA and other industry watchdogs! Hope you enjoyed my poem.

Dueling Banjos…errr…Blogs!

Dueling BlogsMy wife started blogging. I’m not sure how I feel about it just yet…on the one hand, the internet needs more blogs. On the other hand, what if more people read her blog than mine? Does that make me less of a man?

The truth of the matter is, more people should read her blog because she’s a much better writer than I am. So here’s the deal…if you have enough time to read two more blogs, read us both. If you only have enough internet tube-width for one more blog, choose wisely.

Good News Son, You Can Go To College Now!

And by “go to college” I mean you can go to a college campus and ALMOST purchase a candy bar from the cafeteria vending machine.

Check out this little gem that arrived in my INBOX today:

Thanks GoDaddy

Never one to look a gift horse 63 cents in the mouth…let me be the first to say: Bob, ICANN…thank you! That $0.63 (or 1/14th of a domain name registration) of GoDaddy store credit is truly a generous gesture.