September 2007 Archives

Of late, I've been reading a number of things by Theodore Schatzki. In particular, I have just finished reading:

Schatzki, T. R. (2002). The site of the social: A philosophical account of the constitution of social life and change. University Park: PA: Pennsylvania State University Press.

I am continually struck by the subtle, but important, differences in the use of language in difference 'genres' of academic writing. This fact will come as no surprise to those who study discourse.

Schatzki, has a propensity to use two words that I rarely come across in my usual reading. He likes qua and pace.

Qua:
In so far as; as; in the capacity of
Example:
When considering people qua strategists, one needs to distinguish 'strategic practices'.

Pace
With due deference to; despite
Example:
Pace, those who study discourse, discourse is just another practice.

I wonder how pretentious it would be to use those words in my own writing -- after all they aren't really part of my 'genre'.

Chintaka put me on to Going Private. He rate's this as the best blog on Private Equity. It certainly is worth a read.

In my quest to sort out what I think might be international bandwidth limitations, I've been passed on to level-2 support (whatever that is).

Anyway, in case I forget their number it is 0800 55 2000

I notice that in Orcon's Terms and Conditions for broadband, there is a paragraph that says:

6.1 You acknowledge that any claims made about speed of service are best effort peaks and not guarantees. Speed claims are line speeds only and no guarantees are made for national and international traffic, or any particular type of traffic.

For sometime, I have been experiencing significant 'slow-downs' at peak periods for international traffic. For example, most of the time for national traffic I get about 4,000kbs downstream and 500kbs upstream (I'm on their max/max plan, so that seems reasonable).

At off-peak, I get similar speeds (using SpeedTest) to Australia and the US.

Alas, at peak times, my downstream speed is often lower than my upstream speed (i.e. less than 400kbs). In other words, I'm getting at least a 90% reduction in speed.

I've been talking to Orcon for sometime about this, and I'm not sure I'm making progress. They seem to be taking the line about there being "no guarantees are made for national and international traffic".

However, what they don't seem to be talking about their "best efforts" at all.

My feeling is that a 90% reduction is well beyond what might reasonably be expected--on any plan, let alone a max/max plan--and there is little evidence of them using their best efforts.

Oh well, we'll see how this plays out.

This evening Lisa and I went to a diner party hosted by Giles Burch and Catherine. It was a most enjoyable evening.

Giles' parents were at the dinner too. As always, they were very convivial company. Afterward, I thought I would Google his father as he has a number of achievements to his name -- but I came up somewhat empty. I wonder if his generation is the last generation whose past won't be written indelibly on the web.

Lisa and I went to see The Pillowman tonight.

It was marvellous. We both enjoy a black comedy and this was very black and very fun. The crucification scene was particularly well done--and particularly harrowing. Hat's off to Brooke Williams for a great performance.

I also thought that Jonathan Hardy was very drole as the policeman Tupolski.

All in all, I recommend this play.

Some time ago, I played around with Django. Having spent far too much time with writing my own blogging platform, I gave up. In some ways, this was because I couldn't get Django working on my current host. However, today, I spent a little time getting Django working at A2 Hosting, and this is how I did it.

(A big thanks to Jeff Croft and Seamusc -- they laid out pretty much what needed to be done)

First of all I set up www2.petersmith.org (which is basically a sub-directory on my host). Let's call the directory $DJHOST/www2

Into $DJHOST/ww2 went .htaccess

AddHandler cgi-script .cgi
RewriteEngine on
RewriteRule ^(cgi-bin/.*)$ - [L]
RewriteRule ^(media/.*)$ - [L]
RewriteRule ^(admin_media/.*)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(dj\.cgi/.*)$ - [L]
RewriteRule ^(.*)$ /cgi-bin/dj.cgi/$1 [QSA,L]

I had enless problems, which I eventually traced back to the AddHandler line shown above

Next, I created a cgi directory, i.e.

mkdir $DJHOST/www2/cgi-bin 

and in cgi-bin went dj.cgi

##!/usr/local/bin/python
# encoding: utf-8
"""
django.cgi

A simple cgi script which uses the django WSGI to serve requests.

Code copy/pasted from PEP-0333 and then tweaked to serve django.
http://www.python.org/dev/peps/pep-0333/#the-server-gateway-side

This script assumes django is on your sys.path, and that your site code is at
/home/mycode/mysite. Copy this script into your cgi-bin directory (or do
whatever you need to to make a cgi script executable on your system), and then
update the paths at the bottom of this file to suit your site.

This is probably the slowest way to serve django pages, as the python
interpreter, the django code-base and your site code has to be loaded every
time a request is served. FCGI and mod_python solve this problem, use them if
you can.

In order to speed things up it may be worth experimenting with running
uncompressed zips on the sys.path for django and the site code, as this can be
(theorectically) faster. See PEP-0273 (specifically Benchmarks).
http://www.python.org/dev/peps/pep-0273/

Make sure all python files are compiled in your code base. See
http://docs.python.org/lib/module-compileall.html

"""

import os, sys
# insert a sys.path.append("whatever") in here if django is not
# on your sys.path.
sys.path.append("/home/psmi045/public_html/www2/django")
sys.path.append("/home/psmi045/public_html/www2/psc")
sys.path.append("/home/psmi045/public_html/www2")
import django.core.handlers.wsgi

def run_with_cgi(application):

    environ                      = dict(os.environ.items())
    environ['wsgi.input']        = sys.stdin
    environ['wsgi.errors']       = sys.stderr
    environ['wsgi.version']      = (1,0)
    environ['wsgi.multithread']  = False
    environ['wsgi.multiprocess'] = True
    environ['wsgi.run_once']     = True

    if environ.get('HTTPS','off') in ('on','1'):
        environ['wsgi.url_scheme'] = 'https'
    else:
        environ['wsgi.url_scheme'] = 'http'

    headers_set  = []
    headers_sent = []

    def write(data):
        if not headers_set:
             raise AssertionError("write() before start_response()")

        elif not headers_sent:
             # Before the first output, send the stored headers
             status, response_headers = headers_sent[:] = headers_set
             sys.stdout.write('Status: %s\r\n' % status)
             for header in response_headers:
                 sys.stdout.write('%s: %s\r\n' % header)
             sys.stdout.write('\r\n')

        sys.stdout.write(data)
        sys.stdout.flush()

    def start_response(status,response_headers,exc_info=None):
        if exc_info:
            try:
                if headers_sent:
                    # Re-raise original exception if headers sent
                    raise exc_info[0], exc_info[1], exc_info[2]
            finally:
                exc_info = None     # avoid dangling circular ref
        elif headers_set:
            raise AssertionError("Headers already set!")

        headers_set[:] = [status,response_headers]
        return write

    result = application(environ, start_response)
    try:
        for data in result:
            if data:    # don't send headers until body appears
                write(data)
        if not headers_sent:
            write('')   # send headers now if body was empty
    finally:
        if hasattr(result,'close'):
            result.close()


  1. Change this to the directory above your site code.
    os.chdir("/home/psmi045/public_html/www2")
  2. Change mysite to the name of your site package
    os.environ['DJANGO_SETTINGS_MODULE'] = 'psc.settings'
    run_with_cgi(django.core.handlers.wsgi.WSGIHandler())

And that's pretty much it. The rest was a matter of following Jeff's instructions. Well amost it. Alas, A2 Hosting has several versions of Python lying around and not all of them have the necessary libraries; when I was using /usr/bin/python the MySQLdb module wouldn't load. But that was fixed by moving to /usr/local/bin/python.

This sounds like a fun course:

The past decade has seen a convergence of social and technological networks, with systems such as the World Wide Web characterized by the interplay between rich information content, the millions of individuals and organizations who create it, and the technology that supports it. This course covers recent research on the structure and analysis of such networks, and on models that abstract their basic properties. Topics include combinatorial and probabilistic techniques for link analysis, centralized and decentralized search algorithms, network models based on random graphs, and connections with work in the social sciences.

Enjoy this at Cornell

About this Archive

This page is an archive of entries from September 2007 listed from newest to oldest.

August 2007 is the previous archive.

October 2007 is the next archive.

Find recent content on the main index or look in the archives to find all content.

Powered by Movable Type 4.3-en