Who Gives a Crap About “The Cloud”?

Posted by Nessa | Tags: | Posted on February 11, 2010


That was my question all through HostingCon last year. Almost every pillar seminar had some mention about “the cloud” outside of any context that meant anything other than finding an excuse to talk about cloud hosting.  But really, who cares about cloud hosting?

No really — I’d like to know who thinks cloud hosting is really worth its hype and would benefit a hosting provider offering shared hosting services.

You need special hardware and software to efficiently support a cloud hosting platform. It’s not like a cPanel server you can turn on and set up – and I so far haven’t come across any [good] user-side control panels available for cloud hosting. That means that you’re going to have to find a way to come up with your own.  Since the hardware is also specialized, I’m sure the scope of vendors is limited, and those vendors probably take full advantage of that by cranking up their prices.


The purpose of cloud hosting is expandability and reliability. You have multiple servers working in tandem serving sites, so if one server has a problem, the others pick up the slack. Then if you plan on doing what other hosting providers so, you’ll charge your clients based on how much system resources they are using instead of changing their hosting plan every time they have a burst of traffic. The part about the stability is great – but the same can be achieved by load balancing.  And not limiting a user’s resources but charging them for what they actually use is great too – until they use too much, especially in conjunction with other users on the system who are coincidently “overusing” resources as well.  But you’re probably losing money, and fooling those customers into thinking that they can get away with running that junk on a shared server.  Thank you, Mr. Over-Cloudy Shared Hosting Provider, for providing a false sense of need to your customers so they cause a problem for the rest of us when they decide to switch hosts.  

I don’t know how they do it in the cloudy wonderland up there, but in the real world of hosting, if one of my customers is burning an excessive amount of CPU cycles, they’re not going to be on one of my shared servers – they’re moving to a dedicated server.  If a site gets enough traffic to warrant VPS or Dedicated hosting, why would you willingly keep them on a shared server? You’re stunting your revenue by 1) allowing high resource customers to pay for shared hosting, even if the cost fluctuates based on their usage, and 2) decreasing your shared server capacity so you end up needing more servers to accommodate users that shouldn’t be on them to begin with.When a server runs out of resources it runs out of resources – whether it’s one server or 10 servers “clouded” together.

Cloud hosting tends to only beneficial to the customer, who is certainly getting the better end of the deal by costing you money.  I’m just going to put it out there that while customers probably like the concept of cloud hosting, most probably have no idea what it actually is, and wouldn’t notice any change in hosting quality from that of a standalone or clustered hosting solution.  So I’m sure you could actually just run their site off a crap dedicated server with 100 other customers and randomly change their hosting bill every month to make it look like they’re getting cloud hosting, then laugh while they talk about how awesome it is to be on the cutting edge of technology.  Heh.

That also brings up a customer service point about cost.  I checked a few pricing points for cloud hosting providers, most of which charge on a percentage of RAM and CPU cycles used per month.  To me, that just screams customer service problems. Most of the time when I try to tell a customer that they are using too much CPU on a shared server, the first thing they do is either deny it, or blame it on us.  You can imagine what would happen if a customer’s traffic quadrupled one month and they look at their bill, suddenly realizing that they were charged more.  A majority of your customers are likely non-technical and therefore not going to understand why their hosting charges changed.

Don’t get me wrong – I’m not against cloud hosting, I just don’t care for it, and I’m tired of hearing about.  If you’re a hosting consumer and looking for hosting and your site is as massive as Google, you could benefit from a dedicated cloud hosting solution. But otherwise, just stick with the simple stuff. Standalone and clustered servers have been used for years, and tend to be very reliable if managed efficiently.

I mean, people thought the iPad was going to be the next best thing but it turned out to be a piece of shit.

Fun With cPanel Mailing List

Posted by Nessa | Tags: , | Posted on February 10, 2010


Last month cPanel hosted a webinar for cPanel 11.25 where there were reportedly over 2000 attendees from all over the world. One thing I guess they didn’t realize is that the list email address for all the attendees, webinar[at]cpanel.net, has a reply-to that posted a reply all to anyone on the list, unmoderated. Oops.  It all started this morning when I checked my email, to find an email from the webinar mailing list to the webinar mailing list, apparently directed as a reply to someone else:

Mario,thank you, appreciate it :)
You aren’t by chance attending webhosting day in Germany, are you ?
I pre-registered, but am not 100% sure to attend yet.

This email was obviously referring to Mario Rodriguez from cPanel/r1Soft . The best things about this is that it seemed like there was an actual conversation going on, as there was a good flow of sequential events. Here was the initial response to the mysterious emails:

Why am I receving this email ??

Well, duh, you’re on a mailing list. Obviously one that is not configured properly to moderate posting. Now we’re starting to realize this:

Looks like this is a mailing list which is circulating replies!

Exact! In fact, it is a mailing list bad configured…that is sending replies to all members !!

This someone set up a bad forwarder =)

It seems cPanel listing is sending reply to all members.

Looks like a group mailing list to me =) Perhaps an oversight on cPanel’s part?

Let’s also keep in mind that most of these people are technical staff from various hosting providers. Naturally, now that we know there’s a problem we’re going to take full advantage:

Hello from Russia! :)

Hello from Brazil :¬)

A bit of spam before it gets fixed then….http://amplicate.com/rocks/cpanel

Personal Spam also? You can follow me on Twitter at www.twitter.com/******** Cpanel and systems administrator for over 10 years ;)

Greetings from Greece too :))))))) Should I spam this list with an incredible offer for .eu domain registrarion for 5EUR/yr exclusively for list members? :)))))))

I took it that they wanted me to come to Germany…boss said no, though =(

Awww, where’s the fun in that?

Anyone in London Fancy meeting up for Lunch this week?

I’m not in london but I wouldn’t mind lunch. a/s/l? just kidding =)

I can’t make it to London but if anybody is in Aruba lunch is on me! (playing the odds here ;)

By now, cPanel acknowledged that there was a problem:

I am working on this right now, my apologies for the inconvenience.

Yes, sorry for the confusion and mass emails. We will have it fixed shortly.

And then you have the people who start to get a little pissed:

Please DO NOT send any more replies.

Seriously, stop sending emails to the list. It’s obvious no one knew about it and it’s obviously not correctly setup since no one opted in and there isn’t an opt out link.

It does look like it is configured to relay email to everybody if you send an email to the list. Just hold off sending emails and in a little bit somebody from cPanel will fix it. I am sure they didn’t mean to set it up so that everybody gets emails from the list. No reason to flood the inboxes of everybody else :)

Man my blackberry is going to go off every minute now with twitter spam and .eu domain spam. Bah Thanks cPanel ;)

And then the emails stopped so cPanel appears to have fixed the problem. Kind of fun while it lasted…

Software Development: Outsource or Open Source?

Posted by Nessa | Tags: | Posted on February 2, 2010


There are a lot of aspects of my job that I feel could be better automated to save me some time. It gets to the point sometimes where I generally end up writing my own scripts to perform the more repetitive tasks, but when it comes down to it, every large company needs an internal application of some sort – whether it’s to track data, house documents, or just make information available. In my case working at IMH, getting an application to manage our servers, IP address allocations, and almost every aspect of our systems, was fairly impossible, so I had to to write it myself. The application I designed over a year ago is still in use today, and has widely expanded as our needs became more defined.

So that brings up the question – when should you purchase, outsource, go open source, or develop your own?


Purchasing would fall along the lines of buying software that was already developed to meet the needs of general buyers. For instance, WHMCS is targeted specifically for hosting providers who would have a general need to manage hosting accounts and billing.  When you purchase an application, you’re usually getting it “as-is”.


It tends to be cheaper to purchase software than outsourcing or “in-housing” its development. This is because the company you’re getting it from already has the software, and now they’re pretty much sitting back and making money from it. Keep in mind though that a lot of paid software has open source alternatives, which will be reviewed later in this article.


One of the main reasons companies choose to purchase software is for the security of knowing they get support for it from the company itself, assuming that support actually comes with the software. You’ll want to check on your support options before buying anything, as some companies do not include support as part of a software purchase, or limit the support to a certain timeframe.

Updates and Expansion

Generally the developers of purchased software will be responsible for updates and security patches, which will either be a good thing of a bad thing. The bad part is that you have to wait for them to do it, as their software will most likely be closed source to where only they can update it. The good part is that you know that they are responsible for fixing the problem, and you can usually hold them accountable for doing so.


Outsourcing would basically entail hiring a third party company to do software application development for you. You’d need to describe exactly what you need the application to do, and hope that the company you’re hiring is on the same page.  I generally recommend using caution in outsourcing software development that your business may be fully reliant on for its operations.


Developing an applications tends to be very costly. A custom CMS can cost you hundreds or even thousands, so you’ll want to be sure it’s actually worth spending money on. You also need to have all your ducks in a row – in other words, you need to know exactly what you want the application to do while keeping in mind that if your needs change, you’re probably going to spend a good amount of money getting your application changed by the company that wrote it, if they’re even willing or able to change it.


Before outsourcing application development, make sure the people doing it are able and willing to support it as well. This means, if there’s a bug, security issue, or a problem with the application itself, they are able to address it.  That being said, you’ll definitely want to know what kind of support you’re going to get when you outsource application development from a third party.  Are they willing to help you if you have a problem?

Updates and Expansion

I’ve seen a lot of our customers get stranded with insecure or buggy software because they purchased it from a third party that either went AWOL or isn’t willing to update it. The first thing you’ll want to check on when negotiating development is whether the company is able to accommodate your changing needs as a company, and if they will be responsible for software updates and security patches if needed. This means that you’ll really want to choose a reputable software developer or an actual company, rather than an individual that you know nothing about that was hired as a freelancer.

Going Open Source

Open source software is a huge thing nowadays – almost any major enterprise software has an open-source alternative that is just as functional, without the cost. For example, you can easily save a few hundred bucks by opting for Open Office instead of Microsoft Office, 0r using Gimp instead of Photoshop. While this may not be practical for everyone, it’s certainly something to take a look at. You’ll also probably find that your company’s CMS needs are already met by the open source community. So you might want to check around sites like osalt.com or opensourcecms.com to find something that’s right for you.


Open source software literally costs nothing. You may at one point need to pay for addons or modifications from third parties that build on the application’s functionality, but those are completely optional.


One of the things about open-source software is you basically get the support you pay for – none. The license that the software is released under generally covers the fact that the producers of the software can stop development of it at any time, that the software is provided “as is”, and there is no official support for it. The good thing is that so many people use open source software that you can usually find answers in the documentation, support forums, or online support groups, which are actively maintained by thousands of people. Just keep in mind that there is no guarantee of support, but getting support is generally not a problem.

Updates and Expansion

Open source software is essentially managed by the open source community, so and people make changes to it all the time. The advantage to open source software as opposed to proprietary or outsourced applications is that the source is literally out there – anyone can update it and fix bugs and security issues, and release it either independently or through the developer. Most open source software (WordPress is the best example) has a large user base that develops plugins that can be easily used to expand the functionality of an application. Therefore, problems are generally fixed very quickly since everyone has access to the code, as opposed to waiting for the developers to fix it themselves.

I could really go on about open source software, but that’s not the focus of this article. You can read on about there here:



In-House Development

At some point during your research on software solutions you may become aware that your needs are too specific to your business’s design to where there’s literally nothing already out there for you, and you don’t want someone else to manage your application for you. This is when you either hire an in-house developer that works specifically for your company (not outsourced) or use a skilled person you already have, to create an application for you.  Most of the internal applications we use in the system administration department at IMH are either internally developed, or open source. It gives us complete control of what features we need.


It’s hard to calculate how much internally-developed applications cost to make. I’d say that if you have a full time developer that you pay $45,000 per year, that’s how much your application costs per year, which is probably too much. Our systems department at IMH is not dedicated to development, but most of us have programming skills so we spend an average of 1-2 hours a day on development among doing our other work.


The only really annoying thing about application development is that you always have people nagging you for changes, features, and bug fixes. The good thing is that if I wrote something, I can fix it. But no one else can…and that tends to be a problem if I’m busy or not around. I them become the go-to guy whenever there’s a problem, and I’m also the person that is held responsible if productivity, security, or anything else is messed up as a result of a problem in my application. Therefore, if you’re going to invest in custom development, be prepared to have to support it and accept criticism and suggestions from picky users – though that doesn’t mean you have to indulge them.

Updates and Expansion

The biggest advantage to in-house development is that you really have complete control. You know what the applications needs to do, and if those needs change, you can do it yourself. This tends to provide the most value for companies that have needs that are too specific to be met by commercial/proprietary or open-source software.

10 Things Blogs Do That Annoy the Sh!t Out of Me

Posted by Nessa | Tags: | Posted on January 24, 2010


Since having started a blog of my own a few years ago I’ve become acquainted with hundreds of blogs. I can usually tell within 3 seconds of visiting whether or not I’m going to bookmark it or go elsewhere.  After a while I kinda figured out what it is that makes me tick about the practices of other bloggers:

10.  The massive and unnecessary use of stupid and pointless plugins

I’m going to say that I hate snap, or anything else that disrupts my ability to enjoy my visit to a website. Unless the plugin is providing some kind of useful functionality, it’s considered pointless, and a waste of resources and precious website space.

9.  Sites that just link to other sites

There are blogs, and then there blogs that think they are blogs.  When all you do for your ‘articles’ is link to other blogs that you wish you’d written yourself, all you’re doing is telling your readers that you royally suck at being a blogger.

8.  Ugly Themes

Ugly bloggers make ugly blogs…it’s a fact.  If you don’t know much about design or how to theme, just use one of the bazillion free themes for your blogging software available online.  With all the high quality themes available (for free at that), there’s no excuse for having an ugly blog.

7. Posting stuff that everyone already knows

If you’re looking for PHP blogs, chances are you already know and take an interest in the PHP language.  What I don’t like to see is “Hey, I’m a PHP expert…and this is how you use the phpinfo() function”.  Building on the basics to enforce functionality is good, but when the content of your site matches the content of, say, a dictionary or manual, it raises the assumption that you really don’t know anything about your niche. Post things that you think will be of interest to your readers, that they can’t find on hundreds of other sites.

6.  Animations

When I see animations I look back at this one site that I created in eight grade where I used this bright green HTML template with a floating genie and a bobble head moving across the page.  The site is actually still up and running with Angelfire after almost 7 years, surprisingly, and with no way for me to remove it since they obviously don’t clean out their servers.  Any who, unless the overload of animations is pertinent to your site or one of your posts (or you’re 6 years old), no one cares to see them.

5.  Forced flash intros

Have you ever had to site through the previews at the movies?  I mean, seriously, can I get a skip button or something?  If you force people to watch your irritating Flash intro so you can remind people what website they went to, who you are, and the fact that they want to kill you, they won’t stick around for it to end.  Unless there’s porn afterwards.

4.  The “i p0wned you” sites

Real hackers don’t brag about what they do… they usually post their findings for educational gain.   Most of the hacker sites out there are just script kiddy junctions full of general information that doesn’t help anyone, or hacks that never happened.  Honestly, unless you hacked Google or something, no one really gives a shit unless you’re willing to share the wealth and educate others on how you did it.

3. Music

We’ve all done it – you have that little music player in the corner of your site blasting away songs from the 90’s that you think your visitors want to hear while they’re reading about toilet seat covers.  Well let me tell you something – they don’t. Especially for those of us who surf the Internet all day when we’re supposed to be working, there’s a bigger inclination to turn our speakers off than listen to your music.

2. Talking advertisements and greetings

“Congratulations. You’re won an IPOD nano…” is all that comes to mind with this one. No one is winning anything, and I don’t need you to talk to me about how happy you are for me to visit your site.

1. Popups

It’s a universal truth – people hate popups. Obviously there’s some issue there when browsers are now stocked with popup blockers to keep that crap from hitting the screen.  It’s even worse when you get a popup that launches other popups, forcing you to acknowledge that you did in fact close the previous one.

The LA Experience

Posted by Nessa | Tags: | Posted on October 5, 2009


The company let me come to Los Angeles at the end of September.  Before you continue reading I should let everyone know that I’ve never been outside Hampton Roads without a parent or sudo guardian present (this includes our trip to DC for HostingCon in August 2009).

So I land in LA on Monday night off of a delayed flight from Cincinnati. I checked into the Westin airport hotel and after dropping off my stuff, I changed and then left the hotel to explore the area and see what’s around. Now don’t get me wrong, the hotel is really nice, but the area around it is pretty scary. This is where I learned that I shouldn’t have picked an airport hotel. Within 20 minutes of leaving the hotel I got hit on four times – One guy asked me if I wanted to make $200 in 30 minutes, another guy followed me three blocks into a bar, one couple stopped me on the sidewalk and asked if I wanted to come with them to have some “fun” and another guy tried to get a copy of my room key.

Then the next day I go to pick up my rental car and since I lost my wallet the weekend before, Bank of America issued me a temporary debit card, but it doesn’t have my name on it and therefore the car rental place wouldn’t take it. I ended up having to call our EVP Sunil to bail me out. Then I got to the LA office and it was such a relief. Keeping in mind I’ve never personally met most of the LA office staff, I didn’t want to leave the office because, f***, LA is scary.

That night Jeremiel and I hit up the Standard in downtown LA which is so far probably the sexiest non-nightclub bars I’ve ever seen. The place is a hotel but the roof is a cute little bar with a ton of sofas, water bed pods, a bar, a pool, and a fireplace.  Basically like an upscale boom boom room.

But then the next day….

I was on my way from the hotel to the office and the GPS drained the battery on my cell phone.  Not having anything other than printed directions from Map Quest and no way to call anyone, I ended up cruising the streets of LA, Hollywood, and various other mexican-sounding cities before a gas station attendant led me back to Marina Del Rey, where I coincidentally stumbled upon Glencoe Ave and got to the office. Apparently everything thought that I got wasted the night before and was passed out somewhere or that something bad had happened (what would make them think that?), and people were worried because my phone was off.  A few minutes after getting to the office Shelby and I left to go to the LA datacenter.

download Gosford Park

The nights following, me and various people from the LA office went out to some neat places, including Liquid Kitty, Bigfoot Tavern, Don Antonios, and C&O Trattoria, probably the best Italian place in the US that I’ve been so far. I also saw Donna from That’s 70’s Show standing outside some bar down the street from C&O but I didn’t even recognize her until Sunil and Shelby were like “dude that’s the chick from that 70’s show.”  On Sunday, my coworker Paul took me through Hollywood and the beach areas. I got a picture with Edward Scissorhands, and a tour of the homes in Beverly Hills. Afterwards we went to this Korean Restaurant which was so far the best Asian food I’ve ever had.

That night at the airport though I hear the guys in front of me mention that James Franco was “over there”, so I glance around and sure enough, there was James Franco and two security guards a couple bag check lines over. I almost freaked out but I’d heard that it’s not cool to do that in LA since celebs are around all the time, and I didn’t want to look like such a girl.

I got home and it took a week to get used to VA Beach again, especially the traffic. I’m glad to be back though…I’d definately visit LA more, but living there is another story…

download Heavy Load

my phone died, and

Mozenda.com Will Scrape Your Data

Posted by Nessa | Tags: | Posted on June 14, 2009


I was looking around for some web data scraping software and came across Mozenda.com, which is a [paid] Web Scraper and web data mining software that parses web data in a variety of formats, like CSV, RSS, and XML.  I signed up for the trial and the software really did do what it claimed to, and was really easy to use.  The guy that heads the service offers a cool demo here:


Only real downside is the pricing…most code gurus can probably come up with a more basic yet less costly way of doing the same thing.  Pricing starts at $49.95/mo and goes up to $1995/mo, but also has an option to pay as you go.  For  a business this would probably be petty cash and worth the expense, but for the average blogger like me, it’s a little out of the price range.  However, I probably could never code an application or service as feature-rich as the product that Mozenda provides which is why I was considering them.

For those of you wondering WTF I’m talking about, data mining is simply the process of collecting and organizing data, in my case, from other websites.  When you have a handful of 100+ sites, it’s more efficient to have a bot do it for you, kind of like what search engines use to index millions of sites on the Internet.

v-nessa.net is de-Googled…again

Posted by Nessa | Tags: | Posted on June 14, 2009


So I now know what happens when you don’t upgrade WordPress for half a year.  Yes, I admit that my site’s theme was hacked with some nasty Javascript inserts that ended up getting me tagged by Google for the second time now.  Luckily nothing was that much out of place,but a couple of my posts were altered to become permanent stickies, and the dates were changed. No worries, everything is should be back to normal now.

…But…my Twitter account was suspended for “strange activity” and has yet to be reinstated by the Twitter staff.  I also found out that my roommate hates me because I party with his ex-girlfriend who happens to have been a friend of mine since high school.   To top off the week, I finally get to the beach today only to find out that there are no wave. This week has just been full of fun.

daybreakers move

What a Responsible Work Environment Looks Like

Posted by Nessa | Tags: | Posted on June 2, 2009



In case anyone out there was wondering what we at InMotion Hosting do here in the east coast office when the sun goes down:

Nerf Guns!

Nerf Guns!

book eli movie

Simple API Writing, Part I

Posted by Nessa | Tags: ,, | Posted on February 9, 2009


A lot of people don’t realize how easy it is to write an API with PHP. It really is as easy as having a simple PHP script accepting GET variables, and when you add in some security, you can pretty much do anything you want with a single script that accepts variables from any authenticated source.  So a little while ago I posted about the new cPanel XML API and how to integrate that with your own scripts – well now, I’ll use that as an example to show you how to write an API for their API, a.k.a, an API connector.   Though in real applications you wouldn’t need an API, all you’d need is a PHP script that accepts GET or POST input to perform some kind of action. In this example, we’ll have a script that automatically adds DNS zones to a nameserver that runs cPanel as well.

Most APIs do the same thing – you have a script, then that script accepts post/get variables, then does something.

The Interface (addzone.php):

You guy remember the one I posted a while back – well, we’ll use the same one only a tad different.  This is the script that runs statically on the server, which accepts the variables passed through the URL:

// API for adding a DNS zone to ns cluster
$isinclude = “1”; // specifies $isinclude for xmlapi.php
// GET & POST definitions

$key = “098f6bcd4621d373cade4e832627b4f6″;
$domain = $_GET[‘domain’];
$ip = $_GET[‘ip’];

// Validation – make sure that we have the right information

if($_POST[‘key’] != $key){ echo “Invalid key!!”; die(); }
if(empty($domain)){ echo “Domain value missing!!”; die(); }
if(empty($ip)){ echo “IP Value missing!!”; die(); }

$theServer = “ns1.v-nessa.net”; // the server to connect to
$apiPath = “/xml-api/adddns?domain=$domain&ip=$ip”; // the xml api path

$user = “root”; // use to connect to whm as

// ns1 hash (whm > remote access)

$rhash = “e9917f16b3fda69137192725a06b68e7
–edited out for sake of length–

// Include the API connector

// Output XML Result

echo $xmlObject->result->statusmsg . “\n”;


The file that is called via include() is the basic xml function file which constructs all of the variables from the outser script (shown above).  You can get a copy of of xmlapi.php from here, but for this example you need to comment out the output.

Now all we need to do is pass the variables that the script needs in order to know what information to process, which is $ip and $domain.  Therefore, in order to successfully call this API, you would enter the following in a browser:


This will pass the ‘domain’ and ‘ip’ variables to addzone.php, which uses the XML API to connect to WHM and add a dns zone on the nameserver ns1.v-nessa.net.  This is a problem though – what’s to keep outsiders from finding this and abusing it?  Well, there are several forms of non-interactive authentication you can use, such as:

  • Have an allow list of ips that can access the script (look up environmental variables at php.net)
  • Requiring a key or token

I generally use a key, though there are better ways to do this.  The way I’m about to show you is simple and secure, but slightly limits the way your API can be called.

First, I generated an md5 hash and defined it in the scipt (remember $key = “098f6bcd4621d373cade4e832627b4f6″; ?).  Then all I need to do is make sure that key is used whenever I call the API. Notice that in addzone.php it’s defined as a POST variable?  That is mainly for preference but you can just as easily make it a GET variable and just add it to your URL line.  Here I want it to be posted, so I can call the API through cURL as follows:

curl -k http://v-nessa.net/api/addzone.php?domain=test.v-nessa.net&ip= -d key = “098f6bcd4621d373cade4e832627b4f6

And there you have it! A very simple way to write an API using POST and GET.

Capone is Blood-Hungry Part II

Posted by Nessa | Tags: ,, | Posted on December 27, 2008


So if you read my post a little while back about my lasting suspicion that my roommates and I are giving room and board to a few unwanted furry little bastards, I can now confirm that my suspicion is correct. On Christmas eve I was doing some dishes and I noticed that Capone was staring blankly at a cabinet by the refrigerator. After Harley joined him and they both sat and stared at one for a good 10 minutes, I figured they just wanted something in the cabinet so I opened it up to see what was so appealing. I swear as soon as I did that Capone stuck his face in there and Harley pushed him aside and just dove in, pulling out something in her mouth as well as a shelf full of vases that came crashing to the floor.

It was about then that I heard this squeaking noise like what you hear in dog toys, and realized that she was carrying a big stinkin’ rat in her mouth. Though the thing had just gotten caught in a rat trap that our exterminator put in and was well alive and dangling out between Harley’s teeth, the entire kitchen started to smell like someone microwaved a dead fish wrapped inside a tortilla filled with pickles.

You can thank my sister Torie for wanting to document this experience by taking pictures:

So what do blood-hungry puppies do after catching furry intruders? Well, Capone says, “Please sir may I have another” :

Then they both pass out from a hard night’s work: