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.
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.
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.
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.
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 Devio.us lends itself to this task quite naturally. In this post, I will demonstrate:
How to write a simple script that connects to a server
How to make scripts report to you via email
How to set scripts and programs to run at a scheduled time
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.
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.
My friend Jeff from { ParsedContent } and I were discussing the techniques one could use to surreptitiously download files from and FTP server using Python. Jeff has made a posting on Dream.In.Code looking for some quick guidance, and I jumped at the chance to flex my programming muscles.