Introducing: BitGirl

BitGirl is a fully pluggable IRC bot which allows dynamic command and module loading, unloading, and reloading on the fly, without rebooting. This allows for highly dynamic behavior with seamless updates, granting the plugin developer an extremely high turn around rate for the code-compile-test cycle.

BitGirl was written as an entry to the Dream.In.Code IRC Competition.

Creating New Launchers in GNOME 3

GNOME Shell, the core user interface for the GNOME 3 desktop environment, has done away with a lot of the customization and management tools in favor of a refined, developer-curated experience. I appreciate the change from GNOME 2 and I find the new user interface is very appealing, but I do miss the many of the tweaks and customizations that I was able to add in previous versions. One piece I find sorely lacking is the ability to create custom lauchers through the UI. Despite having removed the "Create Launcher" one can still create new launchers using the command line:

Faces in The Cloud: High-Throughput Data Processing with Message Queues, Part 1

As the title of this post alludes, this tutorial will guide you though the process of setting up a grid computing cluster, leveraging a high-performance message queue for task arbitration. This particular example will perform face detection on a number of images using Python, OpenCV, ImageMagick, and leveraging beanstalkd. My hope is that by the end of this tutorial you will understand a little bit about message queues, image processing, and grid computing.

Bridging Networks in Pure Python

Every now and then I find myself in a situation where the tools at hand are inappropriate, impeded, or impotent for the task at hand. Whether I am on a machine with insufficient privileges, behind a vindictive NAT, or under the opression of significant egress filtering, from time to time I find myself needing to bridge networks in order to get my work done.

Genetic Algorithms the Python Way - The Basics

Ages ago, I came across a post by Chris Eigner that succinctly delineates the genetic aglorithm based programming method, exemplified with a terse, no-frills example written in Ruby. Impressed by the simplicity of his code, I quickly whipped up an implementation in Python. Weeks turned into months, as I continued to put off posting the code here.

Basic Server Monitoring with Python

Uptime is an important statistic for anyone in the internet business. For a system administrator to keep track of uptime, a reliable method for monitoring servers and services is key. A reliable, offsite shell acount like lends itself to this task quite naturally. In this post, I will demonstrate:

  1. How to write a simple script that connects to a server
  2. How to make scripts report to you via email
  3. How to set scripts and programs to run at a scheduled time

SOCKS Wrapper, Compatibility Improvements, and PyLoris 3.2

Almost a year and a half ago, I wrote a program called PyLoris. Inspired by a proof of concept tool written by RSnake, PyLoris demonstrated the efficacy of connection exhaustion as a vehicle for a denial of service attack. While the initial release of the tool was buggy and featureless, I began to imagine new ways to augment the attack, improving its ability to work unimpeded. SOCKS support was one of the improvements. By coupling PyLoris with SOCKS, the attack signature could become obfuscated, split across many different machines in geographically disparate locations, making mitigation a nightmare.

Using Python to be the Man in the Middle

I've started working on a private project which is on par with the type of programming I like to do. The basic premise is that the program acts as a man in the middle, routing traffic between client and server, occasionally altering or injecting data into the stream each way.