The Quality Without A Name 1
The Quality Without A Name is a phrase coined by Christopher Alexander in The Timeless Way of Building to describe the feeling of satisfaction and contentment engendered by good building. He later went on to call it ‘life’, but a friend of mine described it as ‘The Tao of Building’, which seems rather appropriate too. The Timeless Way of Building is a fantastic, if somewhat overwritten book, introducing Alexander’s themes and ideas about how modern architects and builders can recapture the qualities inherent in great (usually old) buildings.
Alexander later went on to crystallize his ideas about how to lay out cities, towns, neighbourhoods, houses, rooms, windows, etc in his massively influential book, A Pattern Language, in which Alexander and his co-authors attempted to set down a ‘language’ that would enable anyone to design and build somewhere that possessed the Quality Without a Name for themselves. Sadly, as they admit later, they failed in this attempt; efforts to use this pattern language by laymen resulted in interesting, but flawed buildings. Despite the failure (in Alexander’s terms) it’s a great book; the prose can be a little annoying at times, but the analysis is deep, and mind-changing. Here’s an extract from one of the patterns:
208. Gradual Stiffening
Extreme Speaking
Somewhat to my own surprise, I’m at YAPC::Europe in Paris. I pitched up to the early birds session and offered a talk if they’d had any people pull out and it turned out that they had—Ronan Oger was due to give a half day tutorial on SVG-based GUIs on the first afternoon of the conference, but he wasn’t going to make it in time, so the organizers swapped his talk with Dave Cross’s talk on Tieing and Overloading Objects in Perl.
Dave’s talk is an hour shorter than Ronan’s, so Simon Wistow, Richard Clamp and me offered three 20 minute talks to fill the gaps.
There was a catch; all the talks I’d taken to America had been aimed at 40 minutes and for the life of me I couldn’t see how to make them any shorter.
“Never mind,” I thought, “I can waffle about Pixie or refactoring or something, or if all else fails I can brush off 12 Step Perl and get my audience to do at least half of the work for me.
This was my plan, but then I had this idea for a cunning trick to make Perl’s method inheritance system a little more sane.
Downtime
Bah! The only trouble with being in full control of a website is that you’ve got nobody to blame when you screw up.
The Importance of Style
I was talking to Gavin Estey on iChat about the problems inherent in interviewing a new programmer. The cost of screwing up can be enormous. How do you find out whether the candidate is for real? How do you do it quickly?
Well, those are sticky questions, and there’s a discussion of Perl certification and standards coming up once I’ve marshalled my thoughts properly.
Anyway, Gavin showed me one of the quiz questions they used in his organization:
What’s wrong with the following code?
open FILE, "<$filename";
print FILE '$parameter1, ';
print FILE '$parameter2, ';
print FILE '$parameter3\n';
close FILE;
Back from OSCON
A good time was had by all
This was my first OSCON, I’ve usually been unable to make it over, due either to lack of time, finances, or both. This time there was a lack of finances and plenty of time, so we threw caution to the wind and headed off to sunny Portland.
And boy, was it sunny—I thought the Pacific Northwest was supposed to be rainy.
PONIE announced
The conference proper opened with Larry’s State of the Onion speech where he announced Fotango’s sponsorship of PONIE, Arthur Bergman’s attempt to port Perl 5’s underlying data structures to Parrot. The idea is that, if everything goes well, we’ll be able to keep Perl 5’s front end (parser, opcode generation, etc), but use Parrot as the back end. Approaching things in this fashion should mean that the existing CPAN codebase of XS based modules will simply need a recompilation to run on Ponie, which is fantastic.
James Duncan of Fotango points out that sponsoring Arthur to do this work is naked self interest on Fotango’s part; they have nearly 100,000 lines of Perl 5 code which depend to a greater or lesser extent on CPAN modules, the most obvious of which is the DBI family of modules, which provide standardized Perl access SQL databases. By porting Perl 5 to Parrot, Fotango will be able to jump to the new, JIT-enabled engine and then slowly port their Perl 5 codebase to Perl 6 as that language becomes available.
The beauty of Ponie is that, whether the port proves to be a success or not, Perl wins anyway because, in order to know if Ponie works properly, the team are going to have to write a comprehensive test and possibly documentation suite for Perl’s internals, and those tests will be available in Perl 5, and better test coverage is always a good thing.
And Perl 6 wins too, if Ponie succeeds, we get the Perl 5 emulation for free, and the development of such a non-trivial Parrot application should really help shake out the bugs bottlenecks in Parrot, which should help Dan with the Pie-thon challenge if nothing else.
Perl 6 Rules! (or do I mean Perl6::Rules?)
Ever since Apocalypse 5 outlined Perl 6 Rules and Grammars – Larry’s reinvention/replacement of regular expressions, there’s been a good deal of anticipation and muttering. Everyone seems to want them, but the mutterers have doubted whether it will be possible to implement them.
They should doubt no more.
In his last talk of the conference, Damian presented an overview of Perl 6’s rules system. With running code. Okay, it’s not complete, it’s not ready for public consumption, and Damian’s just disappeared off for a well deserved month long holiday. But it will be ready for Christmas. Bets on which Christmas are not being accepted.
There are several amazing things about the module that Damian presented:
- It’s in pure perl
- It’s 700 lines long
- It comes with a comprehensive set of debugging methods
- It was entirely written over the course of OSCON (that’s if we don’t count the months of Damian’s ‘mind time’ it’s taken up while he planned it out…)
It’s not (by any stretch of the imagination) complete, but it’s a fantastic piece of work, I’m eager (nay panting) to see the completed module.
Once the module is released there’s still a good deal of work to be done, but this is a vital step in the process of bootstrapping Perl 6 (in his later Apocalypses Larry has taken to using Perl 6 rules to describe Perl 6 syntax), both the language proper, but also the possibility of more, better, and complementary Perl6::* modules implementing chunks of Perl 6 functionality in Perl 5 where people can experiment with the language before it exists for good.
I have a cunning Plot
On the Thursday of OSCON, inspired by Leon Brocard’s “Little Languages in Parrot” talk and Dan’s “What’s new in Parrot” talk, I attempted to implement a tiny Scheme interpreter on Parrot in one day (we called it PLOT – Parrot gets Lisp on OSCON Thursday, which is a lousy acronym but we were pressed for time). And failed dismally. But we do have the empty list implemented as a closure, so it’s a simple matter of programming from here on…
And there’s more
Of course, that’s not everything, but it’s certainly the highlights from the Perl 6 point of view. I shall probably write about some of the other sessions later.
