Rants and Ruminations 42 to 48 of 149 articles InfoSyndicate: full/short
Impact of "Balancing Act"   09 May 05
[print link all ]
Marc Evers made me aware that Bernard Notarianni wrote about Balancing Act in his report on agile open. Nynke Fokma said, that this session would have impact on some participants long after the workshop, perhaps even months. I'm still learning from facilitating it. Apparently, impact came relatively quickly for Bernard:
The session was very interesting, however I did not get the "aha!" effect during it. The effect came later:

I always had the feeling that it what not possible to improve my communication or management skills. It was possible to improve the technical skills, but not the "soft" skills: one was a communicator or was not. Actually, this is false. It is possible to improve your communication and your management skills: that's what did the Balancing Act for me.

At agile open, we ran only part of Balancing Act (the part on congruent action, how to actively balance self, other and context ). . I'm working with a group of facilitators to co-market this as a self-contained course. We're now working on making a description that is more suitable for marketing it. Seeing the feedback we got from the trial run, this seems time well spent.

Wording Agile Open feelings   02 May 05
[print link all ]
I'm recovering from two fun, intensive and moving days at Agile Open :-) . During the conference, at one of the temperature readings we held, there was a little discussion about the usefulness of session writeups. Since there were many experiential sessions, it is very hard, or maybe impossible, to put into words how it felt to have been there. The same probably holds for this conference as a whole. I'll try to give my impressions here, with quoted conference photos kindly collected by Marc Evers.

The closest I could come in one word is special. In the closing temperature reading participants appriciated the open atmosphere, where they listened and where heard, as well as respected. Seeing the level of engagement of everybody inside and outside the sessions, we succeeded in creating an open environment, safe for experimentation and risk-taking.

To my pleasant surprise, the conference turned out to be even more self-organizing than I hoped. Before the conference, we weren't exactly sure on how to run the opening session. The main goal of that have all participants to co-create the conference program. One of my biggest fears beforehand was that not everybody would have noticed that Agile Open is an open space conference, where the participants are responsible for the program. In a way, we created a sort of hybrid between an open space and a planned conference, by creating an ideas for sessions space on the conference wiki.

It turned out that my fear was on the mark, as about five people reported they weren't aware of the open space character. Pleasantly enough, they didn't feel this was a problem. It feels natural to start an agile conference with a planning game. They immediately took to the idea and participated actively in selecting the sessions.

photographg of participants reading the session descriptions

Deciding which sessions to vote for is hard...

The way to vote and prepare the program emerged during the opening session. We envisioned this would be the moment to create the program for Friday as well as Saturday. After arranging sessions for the first day on two tables (one table per room) we found that the most popular sessions were scheduled on day one. The participants decided to have another planning game at the beginning of day two, so we could use what we learnt on day one, and choose the sessions we felt most strongly about on that day.

I facilitated the opening session on friday, the temperature reading in the afternoon and co-facilitated a few track sessions. I was quite exhausted after that, and excellent conversation at the bar. As Rachel Davies points out in her weblog we succeeded in moving the usual bar conversation to the sessions. I partook in conversations on music, fashion, philosophy, history and friends that couldn't make it to agile open, amongst others.

On Saturday, I overslept, falling straight back to sleep after switching of the alarm clock. I believe this turned out to be a good thing, as the conference became more self-organizing. I couldn't facilitate the planning session like on day one. On the other hand, I was scheduled to co-facilitate two of the most popular sessions on day two - Balancing Act on thre of the Satir tools and Structured Crystal Ball Gazing, on scenario planning. Vera Peeters phoned me to ask what I wanted to do. Both Nynke Fokma and I didn't have the energy to do a long session, so I asked Vera to put on either one of the sessions.

What happened, was that one session was planned in the final slot, but not decided which one, so we could delay the decision whether to run Crystal Ball Gazing or Balancing Act to the last moment. That was cool. We felt that the playful, experiential and active nature of Balancing Act would fit most at the end of the conference. I'm glad we did that, since it was a lot of fun!

photo of flipovers with the saturday schedule

Balancing Act / Structured Crystal Ball gazing session back to back on the lower left

I gained some more experience in facilitating with several Satir tools. On Friday and Saturday we held a temperature reading to appreciate each other and things that were accomplished, as well as to gather information to steer the conference, and the future after it. For me it was a good exercise to facilitate more temperature readings.

photo of the temperature reading on friday

half of the circle during the temperature reading. I'm the only one not laughing, on the left. Probably focusing...

In the last block on Saturday afternoon, we ran the Congruent Action part of the Balancing Act session. We had a blast during this session. I had prepared it with Marc Evers and Nynke Fokma, and they asked me to be lead facilitator. Scary. Exhilarating. Rachel Davies agreed to be co-facilitator as well. We were well supplied with facilitators :-) about one in five. And then we had Vera Peeters, who spontaneously performed some skillfull covert facilitation, keeping participants on board who otherwise might have left.

Make no mistake, this was a scary session, since it involved mime acting with strangers. We first let the participants explore coping stances in pairs(blaming, placating, superreasonable, irrelevant and loving / hating) as described by Virginia Satir. The facilitators demonstrated most of the stances, and then we let the other participants experiment.

photograph of participants trying out coping stances, Marc Evers and Rob Westgeest in front

Trying out the coping stances. Not sure what Rob and Marc are modeling here, but it looks fun

After this round, I was not completely convinced we had everyone on board. That changed after a round of questions. I asked how miming the coping stances felt, and if the participatns experienced a 'favourite' stance - some stances feel more relaxed or natural than others. In the final round, everyone was very much involved, even though it was more difficult. We asked the participants to we split in two groups to model the eXtreme Programming values. Below is a picture of one of the groups modeling an XP value. After twenty minutes rehearsal we let each group perform, and have the other one guess which value was shown. Can you guess which one is shown in the photograph below?

photo of participants standing in a circle, looking in one direction, waving their hands in that direction as well

This would look better on film, where you'd see the hands waving...

That was great fun! After this, it was time for the closing. I felt a bit sad that it was over, and at the same time very glad for having co-organised it. Marc is already thinking about follow-on events, and judging the reactions of the other participants, this seems worth wile to do.

Agile Open reflections   02 May 05
[print link all ]
I'm ruminating on a largish entry about Agile Open. It was wonderful. In the meantime, I recommed reading what Rachel Davies wrote in her trip report or having a look at the conference photographs posted by Marc Evers during the event.

Subversion authentication   28 Apr 05
[print link all ]
I’m pairprogramming with Rob Westgeest today, in preparation for the eXperience Agile course. I wanted to geve him access to subversion on my webserver in the simplest possible way. As the subversion book explains, svnserve is well suited for that. Before that, I tried svn+ssh, but I got stuck in the mud of unix permissions trying to share the repository. With ssh it is also more work to add users - svnserve doesn’t require unix accounts for additional users.

In hindsight, creating a repository is quite straightforward. I decided to create a special svn user and group, so svnserve doesn’t have to run as root. With -r we can restrict the places where repositories can be, which also makes it easier for clients to specify urls.

  su -c "svnserve -d -r /var/repositories/"  svn

To access the reposotory remotely was easy,

  svn checkout svn://willemvandenende.com/svn/project

Only problem: the checkout is read only by default. Checking out read-write I wanted to do with authentication. Two things are needed for that:

  • add username and password to /var/repositories/svn/paswd
  • supply password and username when doing a checkout of the project
    • subversion will (only?) prompt for a username when anonymous access is set to ‘none’
    • the alternative is to supply —username (seen in ‘svn help checkout’ )

so a working checkout looks like this,

  svn checkout svn://willemvandenende.com/svn/project --username willem

Photographs moved to separate weblog   27 Apr 05
[print link all ]
I moved my photography to a separate photography weblog, as I felt them a bit out of place with the usual agile stuff in my weblog (which is now also syndicated elsewhere). I'll keep posting photographs for events here though.

Testdriving a mailserver   26 Apr 05
[print link all ]
To make detection of the various problems I had yesterday easier, and to build for the future (I would like better spam and virus protection on my mailserver) I created automated tests for my mailserver using RubyUnit. I started out by copying the various addressing tests I did with exim -bt, like so:
def testUser
	result = `exim4 -bt user@domain.com`
	assert(result.include?('user@domain.com -> /home/user/Maildir/'))
end

Please note I changed the username actually used to a fake value, to not attract even more spam. The test above verifies the correct routing by checkng the final delivery to the users mail directory. I've got similar tests for wildcards and a mailing list, because these required adjustments to the configuration in order to work. I didn't add tests for spam yet, if anyone has some feel free to contact me :-).

These tests are not fully end to end, as they test only the routing on exim itself. Especially for the mailinglist software, these tests only check that exim delivers mail to the mailinglist, not what the mailinglist does after that. Therefore, I added two other tests, that use the smtp module provided by ruby , one for an ordindary user, and one for a mailinglist.

For the mailing list test, I set up a special test list, with only one subscriber on it. Letting the mailing list test fail for the first time was interesting, as it fell into the mailinglists error handling. I try to specify as little information as possible in the test mail, so the first one was rejected because it contained an implicit destination - in e-mail, the To: field is optional, so I had left it out for the plain e-mail test I adapted the mailinglist test from. So now I am sure asserting that the body of the message is present is the right thing to test for - the error message from mailman does not contain the message body, only some of the headers.

The mailinglist test (names have been changed, to protect the innocent) looks like this:

def testMailinglist
	`rm /home/user/Maildir/new/*`
	require 'net/smtp'
	msg = ["Subject: Test\n", "To: some_list@domain.com", "\n", "Now is the time for a mailinglist\n"]
	Net::SMTP.start('domain.com') do | smtp |
		smtp.sendmail(msg, 'user@domain.com', ['some_list@domain.com'])
	end
	
	sleep 5 #wait for delivery
	
	dir = Dir["/home/user/Maildir/new/*"]
	assert_equal(1, dir.size)
	filename = dir.first
	contents = IO.readlines(filename)
	assert(contents.include?("Now is the time for a mailinglist\n"), contents)
 end

Note the sleep in the middle - the test has to wait a few seconds for smtp, exim and mailman to do their job and deliver the mail to the directory of the test user.

I'm quite happy with the automated tests - the testscript also auto-generates the exim configuration file for me, so it functions as a sort of automated build for the mailserver configuration. There is nothing as reassuring as

7 tests, 9 assertions, 0 failures, 0 errors

If you'd like to have the full source code for the testcases, contact me directly, as I don't feel like search-and-replacing the e-mail addresses etc. in the test. Feedback on the way I set this up is also very welcome.

Mailserver upgrade surprises   26 Apr 05
[print link all ]
So instead of the hour I hoped to spend, I spent most of my afternoon yesterday getting mailinglists back up and running. Or so I believed. As an old detergent add used to say the detergent is right, but the temperature is wrong. Apparantly, I'm better of working testdriven for systems administration tasks as well. I had e-mail up and running , and according to all the logfiles I could find (and there are quite some in exim and mailman combined) mailinglists were working, only I as a subcriber wasn't receiving any mail from them.

After taking a long break (tip: take a break when stuff like this doesn't work. It's usually more effective than labouring on). My mail cilent kmail is picky in what mail it downloads, depending on which button I press... So, for the next round I'll take the stuff I did on the command line and copy it into a test script, so I can see if the mail is still working (ordinary users, wildcards, mailinglists). Then I can use that as a basis to improve spam- and virusfiltering as well (spam is apparently still sent out over the mailinglists).

Configuring a mailserver is bewilderingly complex. With only an afternoon spent to upgrade about every package on my web- and mailserver a few years into the future, I may consider myself lucky - on other platforms than debian linux this would take quite a bit more work. Much of the old configuration was taken into consideration by upgrade scripts.

Nevertheless, I'm surprised that what I consider to be a fairly standard setup of mailserver, anti-spam and virus protection and mailinglists takes so much manual configuration. Most configuration I do is copy-paste from websites and mailinglists.

For my own memory and possibly your configuration pleasure, I include some of the details below:

Stepping through why the mailinglists didn't work yet, I found out that the *: willem alias wasn't working anymore. Exim configuration is much different from version 3 to version 4... Surprisingly, handling e-mail with a 'catch all' address does'nt work out of the box (anymore). See this message in the debian mailinglist how to create a catch all address in exim4.

Mailserver configuration seems so different, it is best to start over with the mailinglists and antispam configuration.

This installation log shows some useful defaults (including some nifty spam-filtering and anti-virus addons I haven't used yet) and commands to check the configuration.

exim4 -bV
checks the configuration file, and shows which one is used. Take note that debian generates the config file from one or more files in /etc/exim4 depending on if you choose multiple small files or one large file.

Copyright © 2008 Willem van den Ende