Getting ready

You need to register on and and share your public key. If you don't have any, here is the command that generates it, and shows the public key (it's fine to share your public key with others, but never show your private key):

cat ~/.ssh/

System dependencies

To deploy fowler you need to install the following system packages.

Fedora 20

sudo yum install mercurial git python3 python3-setuptools \
python3-numpy python3-numexpr python3-Cython

sudo yum install yum-utils
sudo yum-builddep python3-tables python3-scipy python3-scikit-learn \

Ubuntu 12..04

sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update

sudo apt-get install python3.3 python3.3-dev git mercurial libfreetype6-dev libpng-dev

sudo apt-get build-dep python-scipy

python3.3 -m venv .env
source .env/bin/activate


.env/local/bin/pip install numpy
.env/local/bin/pip install numexpr


Creating virtualenv if numpy, numexpr and other packages are not available

Some packages have to be installed before running buildout. If there is no virtualenv script, install it:

python3 --user
python3.3 --user
~/.local/bin/pip3.3 install --user virtualenv

Now you are ready to create an isolated virtual invironment:

~/.local/bin/virtualenv -p python3.3 --system-site-packages .env


You can access the python interpreter within the virtual envinroment by using:



Buildout is a project deployment tool. Use mercurial to get the configuration:

hg clone ssh://
cd phd-buildout

There are two modes for the project deployment. The base mode installs all the necessary tools. To choose it just copy _base.cfg to buildout.cfg:

cp _buildout.cfg buildout.cfg

However, for the development you will need much more tools, for example test runners. To deploy the development mode, your buildout.cfg should inherit from dev.cfg. So, the head of the buildout.cfg should look like:

extends = dev.cfg


Now you are ready to deploy the project. It will take a while while the code repositories are cloned and dependencies are build. Run this inside a virtual machine, if you want to use vagrant:

# You might need to
# export LC_ALL="en_US.UTF-8"

# Note required setuptools version
grep setuptools versions.cfg
setuptools = 18.1  # 18.1 in my case

# And bootstrap buildout with a required version
python3.4 --setuptools-version 18.1



Vagrant is a virtual machine manager. A virtual machine is provided with all the dependencies installed. You just need to install virtualbox and vagrant.

ssh-add ~/.ssh/id_rsa

vagrant up
vagrant ssh

# Note, that /vagrant (inside the virtual machine) shares files on the host machine!
cd /vagrant
# Now you are inside the virtual machine and ready to deploy.
# python3
# bin/buildout

Running the experiments

There is the notebooks folder which is ment to store the data and the journal of the experiments.

The idea is to create a subfolder for every experiment for it, for example:

mkdir notebooks/chatlogs
cd notebooks/chatlogs
../../bin/corpora-ipython notebook