All about web programming (except programming)

Author: Ian Bicking
company:Imaginary Landscape
Or, Programmer v. Sysadmin: Fight!

what I'm gonna talk about

Web development process:

the eternal battle



System administrator VS Application programmer

the eternal battle

Fight!

VS

the eternal battle

Programmer Sysadmin
Get it running Keep it running
Receive praise Avoid blame
Emacs vi
Working code Documentation
Self-documenting code Why do I care about your code?
Write new stuff Maintain old stuff

dark side vs. light side



fight-images/drawning-vader-vs-luke-in-dagobah.jpg

like in the movies

Then I realized... the man I was battling was...

da-da-dum!



MYSELF

so what this will be about

Apparently I am going to talk about:

who I am

Imaginary Landscape:

why that is good

Ian

-v-

Ian

Q: Who will prevail?

why that is good

(please ignore Ian's inevitable loss)

my two hats

my two hats

organizations

Conway's law:

Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.

how we got here

where we try to improve ourselves

need to do more than just start

let's just not deploy...

well that was all wrong...

the problems...

now what we do

the result

What does it look like?

Start a new project:

paster create --template=iscape \
  --svn-repository=http://our-repository \
  NewApp

Now we have:

testing

This is what our tests start out like:

from fixture import *

def test_root():
    app.get('/')

test-driven development

Test driven development:

configuration

Configuration surprising central to deployment design

vc layout

then we code

The next step is writing the application...

This presentation is not about programming

then we deploy

The deployment process looks like:

$ paster setup.py svntag --version=1.1 --next-version=1.1.1
$ cd ../NewProj-1.1/
$ python setup.py iscape_dist

then we install

Installation:

paster deploy NewProj

installation steps

other problems

versioned installation

versions

Python setup

Python setup

isolating environments

isolating distutils

disutils.cfg

Sample distutils.cfg:

[install]
prefix = /iscape/web/SITE

[easy_install]
install_dir = /iscape/web/SITE/lib/python2.4/
site_dirs = /iscape/web/SITE/lib/python2.4/
script_dir = /iscape/web/SITE/bin/
find_links = http://internal-repository
zip_ok = false

isolation problems

future tools