Cathy J. Fitzpatrick

Hi there! I'm Cathy, and I solve difficult problems in a variety of fields. This website contains links to a few things that I've worked on in the past.


About me

I'm pretty awesome.

My writing

I write articles on various topics.

Your shared host might be insecure

(13 Sep 2013)

A description of some potential security shortcomings with shared hosting.

Some thoughts on making backups

(07 Sep 2013)

How to isolate your backups in case of compromise.

Local servers can get you compromised

(06 Sep 2013)

Many developers find it surprising, but services can get you compromised even if they aren't accessible over the internet.

The effect of capitalisation on reading speed

(26 Mar 2009, with David Stone)

A study of whether the use of capital letters in English enhances reading speed compared to lowercase text. We had 317 participants.

Brawl dynamics: velocity, forces, knockback

(18 Jan 2009)

This paper discusses some dynamical aspects of Brawl (i.e. the physics of forces and character movement).

Brawl mechanics: damage & knockback formulae

(13 Dec 2008, with Chris Immele)

This paper describes a number of mechanical aspects of Brawl, most of which were new results at the time. Most notably, we were the first to determine the game's stale move damage mechanics.

My software

All of my software projects are free and open source.

Pokémon Showdown

As a lead developer, I helped this browser-based HTML5/JavaScript Pokémon fan game reach its current level of success, with millions of visits per month.

My significant optimisations reduced client-side lag, cut bandwidth, and allowed the program to scale from ~1200 to over 4200 concurrent users at peak hours. I also implemented a system for monitoring user load and created an analytics viewer that tracks and reports concurrent user statistics.

I audited the code for security issues, fixing various JavaScript injection vectors in the client and privilege escalation issues in the server. I changed the user authentication system to a challenge-response scheme in order to avoid certain kinds of attacks, and I safely expanded the game's SSO system to work across domains.

I also fixed bugs in the server (338 commits) and client (528 commits), improved the website, implemented new features, set up and maintained the servers, created an email notification system for errors, resolved crashes and other critical issues in real time, established a logging infrastructure, rewrote the hotpatching framework, and regularly deployed server updates with no service interruption, among other contributions.

Prior to my work on Pokémon Showdown, I created the following projects.

Pokémon Lab


I co-founded Pokémon Lab (originally known as Shoddy Battle), a free and open source Pokémon simulator. Released in July 2007, it shaped the course of the competitive Pokémon community for years to come. Since 2011, it has been superseded by other simulators, such as Pokémon Showdown.

I created the present web site in December 2012 in order to provide interesting information on the history of Pokémon Lab and the advances it introduced to the Pokémon community.

Shoddy Sense

Shoddy Sense is a cross between Battleship and Guess Who? and is similar to the esoteric board game Sixth Sense. Shoddy Sense is a client-server multiplayer game.

Brawl Physics Simulator

This program provides a basic simulation of the physics of Super Smash Bros. Brawl.

Pokémon Switching Statistics Generator

This program generates statistics regarding Pokémon switching.

Shoddy Sticks

This is an IRC bot that implements a variant of the game of Nim.

Other projects I've contributed to

I've contributed to some other projects.

RPG Toolkit

Between 2004–2006, I was a lead developer of the RPG Toolkit. I designed and implemented the compiler and virtual machine used for the embedded scripting language.

I make minor contributions to various projects, including: