VKitty: 48% Game, 52% Spam Fighter, 100% Awesome

VKitty now has 15 honey pots, a bot trap, a donated MX record, and a fake email generator.

If you want to help Project Honey Pot too, click on the image below and sign up. The fastest way to start is by using a quicklink. Anywhere that you can put a link, you can use a quicklink. Simply put your link in a forum signature, blog sidebar, or other location (hidden using one or more of the methods given when you get your quicklink) and when spammers attack it, they’ll be tracked.

Project Honey Pot

The bot trap is very simple in design. When someone goes to http://vkitty.net/trapeze/, they will be blocked from the site until they solve a simple puzzle like this one. In addition, I get an email telling me a bunch of information about the person who got blocked.

Here’s an example of an email I got when I triggered my own trap:

A bad robot hit /trapeze/ 2009-06-06 (Sat) 21:21:52 address is ***********, hostname is
mke-***********.milwpc.com, agent is Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.9.2a1pre)  Gecko/20090606 Minefield/3.6a1pre (VKitty/6.0)

VKitty also has a random email generator at http://vkitty.net/eeeemail that generates email addresses from a list of known spammer domains. Don’t worry, you won’t be banned by visiting this one.

And now, the other 48%

STATUS UPDATE TIME! Here are a few of the projects the VKitty staff are working on:

The Royal Cat Hotel
Done. It will be released on June 17th to give us a little more time to find bugs.


Fishing minigame
The minigame itself is done. All that it needs is a shop and a few user interface tweaks.


Item images
Just as she redid the cat graphics, Kat is redoing all of the item images with the exception of the Free Cat Certificate. I have no idea how far she is, but I’ll choose a random percentage. She just told me that she’s about 3/5 of the way done, so that means her half is 60% completed and my half is 0% completed.


Mobile VKitty
The speed test and email spam pages are up. That’s about it, though.


Orange Kitten

Cats for stupid browsers like IE that can’t use SVGs
So far, it can generate kittens with different coat colors. I hope to have it able to make cats and old cats, as well as all of the patterns soon.


VKitty speed upgrades, Gears removal

Warning: This article is very techy and may cause unwanted implosion of your brain if you don’t know what caching and HTTP requests are. Don’t say I didn’t warn you.

For browsers that support Google Gears, VKitty had always requested permission to store data on the user’s computer. This has been removed. Although it might cause VKitty to be a bit slower, we’ll scare less people away by asking about data storage.

Most browsers download a capped amount of files from each server at a time. This means that only two VKitty images (affiliate badges, items, etc.) would be downloaded by the browser at a time.

To help VKitty load faster, item images have been split up into 10 different subdomains, and affiliate badges and style data each have their own subdomains.

All affiliate badges go on aff.vkitty.net, stylesheets and scripts go on s.vkitty.net, and item images (unequipped only so far) go on datiX.vkitty.net, where X is the last digit of the item ID.

For a quick demonstration of how much this helps, imagine you’re on the homepage of VKitty and you have twenty different items in your inventory and one cat. Let’s say your browser can only download 2 files per hostname at a time and each file takes one second to download.

On the homepage in this scenario, there would be two stylesheets, a script, 7 affiliate badges, a cat image, and 20 item images, a total of 31 things for your browser to download once it has the HTML of the page.

With a single hostname, it would take 17 seconds to load the page, including the HTML content. With our new system, it would only take 3 seconds to load everything except the affiliate badges and 6 seconds total.

A savings of 11-14 seconds is pretty big. Of course, each file on VKitty hopefully loads in under a second, so the savings will be smaller, but still 18-35% of the total time to load the page, assuming all of the files loaded in the same amount of time.

VKitty status update: June 2009

The Royal Cat Hotel

Fully functional, just needs a bit of debugging.


Fishing Minigame

Well, at least the picture of a cat fishing is done. Nothing else, though.


Item images

12 items have images, and 30 are missing them.


Mobile VKitty

The current mobile VKitty at m.vkitty.net is provided by Mobify.me and does not let the user log in. The VKitty-based version is nowhere near done.



It’s completed. All it needs is a bit of publicity.


VKitty: Not just another cat upgrade

I’m sure just about nobody remembers when VKitties were upgraded from looking like this:


To looking like this:


But we weren’t happy there. I upgraded cats to look like this:

But Kat wasn’t happy. Looking back, I can see that my version of the cat was only marginally better if better at all.

I’ll leave you with a picture of the future on the right and the present on the left.

old cat comparison

Browser rant: IE won’t cooperate.

Internet Explorer: Kitten

Internet Explorer's representation of VKitties

  • Me: Hey, Internet Explorer, can you load an SVG for me?
  • IE: A what?
  • Me: Create an EMBED element with the source ‘/data/kitten.svg’
  • IE: Ok.
  • Me: Now append it to the sidebar.
  • IE: Put what where?
  • Me: *sigh* Create an EMBED element with the source ‘/data/kitten.svg’ as a variable called ‘e’
  • IE: Ok.
  • Me: Put the element represented by the variable ‘e’ at the bottom of the last element child of the element represented by the id ‘sidebar’.
  • IE: Ok.
  • Me: That’s not what it’s supposed to look like!
  • IE: ERROR 6704632: Unknown variable “That’s”
  • IE: ERROR 824893: Unknown variable “AAAARGH”
  • Me: Set the ‘fill’ attribute of the element represented by the id ‘kittenFill’ in the content document of the window represented by the variable called ‘e’ to ‘#f00’
  • IE: Ok.
  • Me: // Nothing changed…
  • IE: Ok.

And now, a few pictures:

Microsoft may harm your computer. This is not a fake!

Microsoft may harm your computer. This is not a fake!

Internet Explorer visits the VKitty Humane Society

Internet Explorer visits the VKitty Humane Society

Firefox visits the VKitty Humane Society

Firefox visits the VKitty Humane Society

VKitty: The story behind the code

There are 72489 lines of code in VKitty: 66170 in PHP and 6319 in JavaScript. The 72489 PHP lines of code can be split into bbPress’ 63837 (the forums and most of the core of VKitty) and the 8652 lines of pure VKitty code

The 6319 lines of JavaScript can be split up into three categories: Vkitty’s 1282 lines, jQuery’s 4231 lines, and the other 806 of assorted “helper” code, one part PersistJS – a caching solution that allows cats and users to be kept in the user’s computer’s memory even after they leave the page (we only store data for up to five minutes, though) and one part miscellaneous styling enhancements.

With 6319 lines of JavaScript totaling over 175kb, VKitty would be extremely slow in loading.  However, I was able to compress VKitty down to almost nothing compared to what it was:

CompressorRater results for VKitty

CompressorRater results for VKitty

It looks like Packer is the best JavaScript compressor for the job.  However, I use the YUI compressor for a few simple reasons:

Packer uses an eval statement when it initializes.  eval reinitializes the entire JavaScript compiler, making VKitty slower.  In fact, it’s twice as slow.

Another reason is the fact that Packer removes semicolons more than YUI.  YUI actually adds them when it feels they are needed.  The filesize might be a little bigger, but a two thousandth of the total size of the compressed code is nothing to worry about when it doubles the loading speed.

VKitty 6.0’s directory structure is (in my opinion) infinately better than the previous versions:

In the previous version, everything was in the root directory except the forums, client-side scripts, and images.

In the earliest known version, there were almost 1000 files, most of them redundant and everything except admin files in the root.

VKitty Directory Structure

VKitty 6.0 Directory Scheme

VKitty 6 brings a whole new idea to the directory structure:

There are 10 files in the root directory.  Three are configuration files, six are the front end, and one is the icon.  Then, there are the j, s, and i directories, for JavaScript, stylesheets, and images, respectively.  The j directory has 5 files, a compressed version of the script, a less compressed version for browsers that don’t support gzip, and three scripts that are used very little.

The data directory has cat vectors and badges, and there’s an includes directory that has ajax, template, and filter files (each type in its own directory).  Of course, there’s also the forums, with its own directory scheme.  However, I did not create it, so I won’t be telling you about it here.

In other news,

You can now adopt cats and kittens from the humane society. If you don’t have a free ticket, it will cost you 5000CC. I have given everyone the newbie kit, with the exception of the free ticket, which was only given to those who do not already have a cat or kitten on the current version of VKitty.