As I was quite enthusiastic about last year's SPA, I decided at the end of last year to submit a session about Model-based testing and Haskell, and more generally about the use of Haskell as better tool for veriyfing programs and prototyping them. For some unknown reasons, it happened the session was accepted and Christophe Thibaut accepted to pair with me in this adventure.
So here are my notes about the conference and its sessions. Contrary to the tradition, which I am aware of through various hearsays, this year's SPA was not residential, and it seems to have been on the verge of being cancelled. It finally took place in the British Computer Society's office, near Covent Garden in the "center" of London, if such a thing exists. The hotel I slept in was conveniently located just on the opposite side of the street from the conference's location.
I have mixed feelings about this year's conference. Half of the sessions I attended seemed to me like guided or scenarized discussions, with the implicit assumption that something should happen when provoking interactions between various groups of people debating over a subject they are passionate about. And as it happens, while discussion is fun, it is often vain and vague, leaving conflicting issues in the dark, especially among people sharing a common interest and a community. Debates may happen but it is always on things that would appear as negligible from the outside, like classical Java vs. Ruby vs. Python vs. ... issue, web or testing frameworks selection.
Yet I gathered ideas and met new folk, including french people that happened to join the conference for the first time, Laurent Morisseau and Sebastien Brunot, Matt ??? an Ruby enthusiasts that fell in love with Haskell, and others I cannot name. I met "old" friends like the benelux connection: Vera Peeters, Rob Westgeest, Marc Evers, Willem Van den Ende, Pascal Van Cauwenberghe and Portia Tung, or people I have met and discussed with last year, like Peter Marks, David Harvey, Mike Hill... And most of all, I had the oppportunity to talk, code and think about Haskell more in 4 days than during the preceding year !
Sunday's tutorial about meta-programming in Java. First talked about various tools that existed for the task, among which there was:
We then moved on defining some problem to work with. We settled on a quite simple yet interesting problem: Allowing some lightweight syntax when defining anonymous classes instances that mimic some form of closures. An example code we would like to be able to write is:
Function<Foo,Bar> fun = new Function<Foo,Bar>() {{ return arg.doSomething(); }}; ... Bar bar = fun.apply(foo);
Actually, the problem we tackled was slightly more specific, but this is the general idea we would naturally move to. The problem is that we want to use the syntax for argument-less constructor code (ie. the nested curly braces) for defining code that should not be called at constructor time.
None of the pairs we formed to tackle the problem managed to reach the solution, yet some were pretty close to it, through a combination of jboss-AOP for intercepting constructor calls and objenesis for constructing objects without actually calling constructors.
An introductory session about Google Web Toolkit programming. The session was really well prepared as the presenters provided a bootable USB key containing a Ubuntu OS with an evaluation copy of IntelliJ IDEA containing all the necessary stuff: GWT plugins and example projects to work with. Everything is available on the web
All in all, an interesting coding session which unveiled some of the mysteries of GWT. It is really very easy to produce some complex web application with it and the development process is quite smooth, except for some duplication that is needed between server and client classes. The overally structure of the project is still a little bit unclear, particularly about the requirements and possible variations for the client part, but this was a 3 hours only session !
The first keynote was given by Simon Peyton-Jones, well known for its work on the Haskell language and Glasgow Haskell Compiler. His talk was entitled "Pure Programs have Tractable Tests" and was a nice introduction to our own session. It presented the principles behind Haskell: purity, laziness and strong-typing that allowed programmers to partially control effects, something that will raise in importance for the next 10 years, or so he said.
A large portion of its talk was dedicated to presentation of QuickCheck, with a small demo of a program for computing simple properties on lists.
Simon is really a great speaker, lively, enthusiastic and fun !
A session run by Willem Van den Ende and Rob Westgeest, from QWAN, on functional testing. This session aimed at investigating the audience's experience on testing and at producing some questions/roadmap/knowledge to improve the current state of affair.
The session's process was the following:
This was quite fun, with lot of interactions with people, but the output may be questionnable. We ended up with classical questions (and expected solution) on classical topics like automated tests, customer-facing tests expressiveness, CI...
This Bird of a Feather session was proposed by CHristophe. It was a standard Haskell Kata on the LAGS problem: Rent Your Plane and Earn Money and I paired with Christophe (in french and in english). The room was quite crowded and Simon Peyton-Jones honored the dojo of its presence, which was something quite intimidating, at least for me, although Christophe did not seem to pay attention and went straight ahead in the coding affair.
We did not solve the problem, but the dojo was fun and lively, with lot of questions on Haskell and TDD. Particularly interesting were the reactions about fakes used in source code to make tests pass as quickly as possible.
This session was one of the most interesting I attended at SPA this year. Its purpose was to try to extract principles underlying patterns. I was part of a group that included Vera, Rob and Alan, and there were about 20 people attending the session. We followed the process outlined in the programme. Alan raised early in the process the question of the goal, the motivations behind the use and design of patterns. We could not agree on a specific and precise set of principles, as most of them seemed to be overlap somewhat.
In our attempt to classifi and organize things, we settled on the following structure:
A session run as a goldfish bowl. I never had the opportunity to participate in such kind of session and really found that it's great way to run a lively meeting with lot of people. I am not sure however what operational outcome we produced in this session. We ended up with the classical emphasis on trust as a way to get out of the estimation trap.
"A plan is useless, planning is essential"
Yet another Haskell coding dojo, this time proposed by Rob Westgeest and in the randori style. We tackled the mastermind problem, and as usual it was fun. We managed to reach the solution IIRC. THere were less people than at the first BOF but it ran more smoothly and everybody was involved.
This was a special event coorganized with the Extreme Tuesday Club, a retrospective panel about the 10 years of Agile in the UK. It started with the reenaction of Kent Beck's talk at SPA's ancestor in 1999 that presented eXtreme Programming (or so I think: I must confess I did not get a single word from this talk...). Then the panelists gave an account of their first experience with Agile, their advice on the current state of affair of XP in the UK, and their predictions about the future.
It was something like an old-boys club as Portia said to me afterwards: a bit of whining about "how the spirit of old disappeared" and "it was better when we were younger".
Ian MacCaig is CEO of lastminute.com. Its talk was about how they manage innovation in dire times, when you have to cut your budgets by 25% while doing more, when managers have to keep the morale up while people fear losing their jobs. All in all, crisis times give less room for error, which means fear increase and innovation inevitably suffer.
I got two interesting ideas:
He gave us a couple examples of products that are now on the site and which were born out of hack days or labs.
A session about simulating the problems that may arise within distributed teams. The session was run with a game where people formed teams and were asked to perform some task while communicating only through emails (simulated by sending hand-written messages to people in the room). The game was fun but no so much about distribution than about communication barriers and impediments. It needs quite a lot of polishing to be really usable.
See here