Name: Christophe Rhodes
Member since: 2001-05-03 06:41:31
Last Login: 2009-07-03 22:19:38
Homepage: http://www.doc.gold.ac.uk/~mas01cr/
Notes:
Oh, that probably isn't what "Notes" means. Oh well.
Physicist, Musician, Common Lisp programmer. Move along, there's nothing to see.
I agreed, at something like the tenth hour, that I would present a tutorial on using SBCL internals; perhaps inevitably, I left it until somewhat past the eleventh hour to actually prepare for the tutorial, with the result that I'm not sure how effective it was – it certainly wasn't the kind of tutorial where the audience follows along each on their laptop, and that meant that I didn't really get any audience feedback during the session. In partial mitigation, the tutorial materials should appear on the ELS website at some point; they're also available from my talks page at work.
My somewhat lax preparation regime meant that I didn't get maximum benefit from the social time, since on Wednesday evening I participated in the steering committee meeting, had a little bit of a drink at the reception, and then went off and worked on my tutorial. I did have a chance to speak to some people later, particularly at the final dinner, but not as much as I would have liked (this was also partly dictated by my travel arrangements, which were extremely tightly placed around the conference's official schedule). The other presentations were fun, though; the accepted papers showed a good range, from very specific aspects of particular lisp evaluation models (stand up, Tom Burdick and OMG1) to using a web browser as the interactive output pane of a Lisp debugging session. I enjoyed the keynotes as well, even those where I disagreed slightly or profoundly with the speaker on the technical or social issues discussed; the debate on the future of CL (the panel: Pascal Costanza, Nikodemus Siivola, Stelian Ionescu, Marco Antoniotti, and Scott McKay) was also a success, I think; there was at least a range of opinions on display.
I'm looking forward to the 2010 iteration (to be held in Lisbon), not least because I will be rather more involved in the organization of it than I was this year. I'll be watching for any other wrapups of this year's event, and if anyone has any ideas for what they'd like to have in the programme for ELS2010, please don't hesitate to get in touch!
I've recently been working on improving SBCL's build behaviour.
Well, perhaps that's not exactly a novel or surprising piece of information for this diary: but maybe this is the last major effort that has to be made. One of SBCL's raisons d'être is to be a Common Lisp compiler, written in Common Lisp, that does not have any dependencies on the host Lisp compiler used to build it (assuming that the host implementation is sufficiently conforming, but not making any unwarranted assumptions about any implementation-defined or undefined behaviour). This method for building a Lisp compiler is sufficiently tricky to wrap one's head around that I wrote and delivered a paper describing it, including diagrams, for the Workshop on Self-Sustaining Systems last year.
So what's new now? Well, given this aim, it would be reasonable for the output of the SBCL cross-compiler, running as an application in the host Lisp, to produce bitwise-identical output files independent of which host Lisp was being used. Reasonable, perhaps, but in practice the state of SBCL until a month or so ago was quite a long way away from this ideal: every output file had a header declaring when and from which compiler it had been generated, which was not going to help bitwise comparisons: and even after such straightforward issues had been dealt with, every single output file from the build process (of which there are of the order of 350) exhibited non-trivial differences when compiled with CLISP from the corresponding output files compiled with SBCL.
The differences between output files that I've observed and fixed in the last month or so – by lavish use of cmp(1), staring at emacs buffers consisting largely of control characters, and the time-old debugging method of Thinking Very Hard – can be broadly split into three categories:
In the process, I also fixed a terribly embarrassing bug in genesis, the Lisp application responsible for taking these output files from the cross-compiler and constructing a Lisp memory image file ready to start up. As has been discussed here in the past, the standard-mandated requirement on arrays in Common Lisp is not sufficient for us to be able to construct the image file in memory as an array of bytes: conforming implementations are permitted to impose a maximum array size as low as 1024 elements. Fortunately it is straightforward to implement a suitable data structure without this constraint; unfortunately, the implementation did not take sufficient care to zero-fill newly-allocated memory, and while most of the time Lisp implementations perform that zeroing, there are circumstances in which they don't.
All of this has now been merged to SBCL's CVS, and is awaiting the 1.0.28 release due on Thursday 30th April. The practical upshot? Well, apart from a certain amount of increased confidence in the implementation strategy, and perhaps soothing the nerves of extremely paranoid distribution package maintainers, these changes should make compilation of SBCL on new platforms more straightforward, as there are now two implementations capable of building SBCL which are themselves buildable starting just from gcc and system libraries: CLISP and Peter Graves' XCL.
My daughter Marianne was born on a highly auspicious date: the 8th August 2008, the most eightish date for 20 years. All went reasonably well; the paediatrician who checked her over at Newham General Hospital detected a heart murmur, but we were given an outpatient appointment a month away and discharged. It took a lot of effort and perseverance to establish breast-feeding, and her weight gain was slow, but she seemed otherwise to be healthy and doing well.
However, at the outpatient appointment at the cardiology clinic at Great Ormond Street Hospital, we were told that Marianne had a heart defect: Tetralogy of Fallot. The cardiologist immediately reassured us that this was an operable condition with extremely good prognosis, but that the operation wouldn't take place for a while, as the bigger the child the better the recovery from the necessary open-heart surgery. In the meantime, the combination of the ventricular septal defect (the ‘hole in the heart’ which caused the audible murmur) and the pulmonary stenosis (a narrowing of the pulmonary artery, the vessel responsible for taking deoxygenated blood to the lungs to be refreshed with oxygen), together with her partially-overriding aorta (the opening to the aorta being over the VSD) meant that Marianne's heart would allow deoxygenated blood to go around the body again without being refreshed with oxygen, and consequently would have to work significantly harder (leading to right-ventricular hypertrophy and also explaining her slow weight gain).
Although we had been reassured by the cardiologist, and also the GOSH cardiac liaison nurse we spoke to, the diagnosis was still a shock to me: I think I spent about three or four days being completely unable to think straight. But the mind is resilient, and after a little bit it settled down, with the reassurance that many medical professionals: health visitors, dieticians, nurses, cardiologists and general practicioners were available to help. Other sources of support were great as well: family, colleagues, friends and neighbours, and even groups on mumsnet were extremely helpful and understanding.
And so life continued. Many of the normal stages of child development happened: first smile, sleeping through the night, not sleeping through the night any more, playing with toys, discovering wrapping paper, sitting up, and beginning to eat food; all this punctuated by visits to the health visitor, cardiology clinic and paediatrics unit. And then, eventually, came the letter giving us a date for her surgery: Thursday 5th March.
First there was the pre-admission hurdle to jump: various measurements to make, various blood samples to take, and the consent form to sign. Except that we couldn't: no surgeon was available, as they were all too busy. Fair enough; we arranged to come in the following week for that. It was at that point, signing the consent form for my daughter's heart surgery, that I experienced shock and panic again, this time for the best part of a week: while the full repair for Tetralogy of Fallot is a relatively well-understood procedure (it's been performed for longer than heart-lung bypass machines have existed) the mortality rates are still of the general order of 1-2%. Because Marianne was outwardly healthy, it was very hard to believe wholeheartedly that this scary procedure was utterly necessary, and so it felt like I was needlessly making her play Russian roulette.
The 4th March rolled around, and we were essentially ready: bags packed, all urgent items at work completed, contingency plans in place. And then the hospital phoned: a more urgent case had come up and so there was no surgical team available for us; we were rescheduled for the following week. To be fair, we had been warned that this might happen – even on the day itself, so having a day's notice was a bonus. Still, there was a lot to unwind: not just the various plans, but also our own emotional preparedness. Back to the normal routine, with an extra week of voluntary quarantine for Marianne (coughs and colds noticeably impede recovery from operations).
There was to be no second stay of execution on the 11th March: we were given ‘starvation times’ for Marianne: no food after 2:30am, no breast milk after 4:30am, and no water after 5:30am. The alarm was duly set for 4am so that she could get a last stomachful. Then we were all set; we set off in plenty of time to get to the cardiac ward at GOSH for 7:30am.
Once there, Marianne was weighed, and then dressed in a hospital gown. She then played with a set of coloured wooden stacking rings, while Jenni and I debated the merits of the various colour combinations that she was inadvertently modelling – well, we had to talk about something. A surgeon came down to assess her: determining whether she was well enough for the operation to take place, and checking that she'd had nothing to eat or drink since the small hours. With a certain amount of humour, she drew a purple arrow on Marianne's chest: it is NHS policy that all surgical patients should be marked up before the operation, because there have been a few too many embarassing errors in theatre (amputating the wrong leg, and similar). As the surgeon put it, though, “there is only one heart”.
Then we waited for the most difficult part: taking Marianne to the anaesthetists and leaving her there. We were allowed to hold her while the nitrous oxide was given; it took hold quickly – without the wriggling which we had been warned might be a possibility. And then we left the room, because it was what had to be done.
Waiting while your child is having surgery is not a pleasant experience. Fortunately, the hospital is aware of this, and enforces a certain amount of activity; they require parents to sort out their hostel accommodation during this period, which involves bureaucracy and therefore takes time. Also, we hadn't had breakfast by this stage, so that was a good thing to do, and we had been given (not by the hospital!) £10 to convert into a grey book. Even extending all of these things as much as possible, it was only about two hours since we'd left Marianne (where the operation was meant to take about four hours in total), so it was an immense relief that, when we returned to the cardiac ward and a nurse was able to telephone the operating theatre, we were told that Marianne had been weaned off the heart-lung bypass machine successfully: in other words, her heart was beating again.
In fact, we were lucky: throughout our stay in hospital, we never really needed to be given any bad news. By the evening of Thursday (the day of her operation), she was taken off the ventilator, able to breathe for herself. The following afternoon, she was removed from intensive care, with her breathing and temperature no longer needing to be continuously monitored. Even the one complication, a buildup of air in her chest cavity, was rapidly dealt with, and her chest drain (a tube attached to suction, drawing fluid away from the chest), pacing wires (to correct any irregularity in the heart rhythm) and intravenous lines (used for delivery of pain relief, mostly morphine) came out at lunchtime on Saturday, leaving her with a single stitch (not the only mark, of course, but the wound on her chest is held together subcutaneously). On Sunday morning she was able to breastfeed, and she did so with enthusiasm and vigour; the nurses then removed her nasogastric tube, and told us that we were likely to be discharged the following day.
And so it proved: after one last echocardiogram, we were given some medicines (paracetamol and diuretics), an outpatient appointment for mid-April, and a discharge letter, and told to go home. And, not without some trepidation, but also with a great deal of optimism, so we did.
All of which is one way to say that, if I have dropped patches on the floor, failed to fulfil administrative duties, or ignored requests for assistance in whatever context: I apologise, but I have had other things on my mind. It seems to be common knowledge amongst parents that worry never goes away, but with luck the worries that I experience will be less acute for a good little while.
I actually went to Bordeaux a couple of days early, partly to meet with old friends (a big thank you to Rachel and Tim Moore for putting me up for the week) and partly so that I could give a talk about my main research project to the Image et Son research group there. Some useful discussion ensued, which was good.
The first day of the symposium had a closed writers' workshop session, run in parallel with Birds-of-a-Feather sessions. I wasn't a writer (so I wasn't at the writers' workshop), but from what I heard it was a useful exercise for those present: the idea is that written work that is in progress is briefly presented to a audience of peers, who then discuss it without reference to the author; the author can then garner a lot of useful feedback for improving the paper. (There are also formal mechanisms for defusing tension, and the reason for closing the session is to make sure that everyone present is on the same level.)
The BoF sessions were probably the thing that need more care in future; they were organized a little bit at the last minute, so session leaders were unprepared (and there wasn't much of a choice: only one BoF at a time meant that people defaulted to that rather than anything else, quite understandably). I attended a session about concurrency, but without paying much attention as I rediscovered the fact that hacking for 45 minutes continuously is much more than three times as productive as hacking three times for 15 minutes. I skipped the next one to talk some more with Pierre Hanna and Matthias Robine about Music Information Retrieval (or “work work” as opposed to “play work”).
After lunch I tried to act as chair of a CLIM / McCLIM BoF session. The problem with it being the default choice was that we spent a lot of time on background rather than on discussing the future – not that that's too bad a thing when Scott McKay is sitting at the back of the room, because we could get a lot of background. The really unfortunate thing, caused mostly because of the short notice, is that almost none of the demos actually worked: I had a CLIM Listener that I couldn't type into; Troels managed to wedge SBCL's threads somehow, and even Andreas and his Classic CLIM demos managed to send keyboard focus somewhere. We agreed that the next release would come with working demos. Still, choice quote from Scott: “oh yeah, I wrote that!”
Apparently there was then a BoF focussing on replacing ASDF, which maybe got further because of better focus. I was in a meeting at that point, tentatively planning (with others) ELS 2009, which will be in Milan, hosted by Marco Antoniotti and chaired by António Leitão – put May 2009 in your diaries now! After that, we went to the mairie, technically as invitees of Alain Juppé, for drinks and a speech about how historical and forward-looking Bordeaux is. Nasty surprise: I got volunteered to do simultaneous translation, which is hard; I learnt afterwards that the mayor's underling who'd been volunteered to give the speech was also a first-timer, so that explains the utter confusion and sentences like “Bordeaux is nice” that came out.
The second day of the symposium was dedicated to the technical programme: a fine set of talks, I think. Mine (work done in collaboration with Jim Newton) suffered from being the third different talk I'd had to give in ten days; I think I was not as clear as I would have liked to be. But I did get some questions, including one from Didier Verna about what good class-eq specializers are, about which more in a later diary entry. I enjoyed Didier Verna's talk a lot; though it didn't tell me anything I didn't know, it was a clear presentation of a problem of expression and how to solve it using CLOS and the MOP; the talk by Sebastián González about Ambient Objects and Context-Oriented Programming was extremely well judged, I think.
And then it was all over bar the banquet, which was nice; plenty of useful discussions with colleagues past, present and future; good food, good wine (well, you'd hope so...) and good company. And then back home in time to perform in the English Music Festival and fall asleep, fortunately in that order.
The call for contributions invited
submissions of high-quality papers reporting original research, or describing innovative contributions to, or experience with, self-sustaining systems, their implementation, and their application.and my paper, as well as the technical details of the SBCL build, essentially argued for considering the user and developer community as part of the system: software is really just a parasite, but its host is not the hardware it's running on, but the humans who allow it to ‘reproduce’. (A related point was made by Ian Piumarta of the Viewpoints Research Institute, about the survival of the species rather than the individual being the important thing, in the talk before mine).
My talk was a bit rushed and confused, I think; it suffered from insufficient preparation time. What I was utterly flabbergasted by was the attendance: I was expecting a complement of about 12 people, maybe mostly the authors and their colleagues. Instead, there were about 70 people at the opening, and while some of those were local PhD students or other easy prey, there were still about 50 people attending the research talks. If I had expected that, I might have adjusted the material and the presentation a little bit, perhaps with a bit more advocacy (a captive audience is valuable, after all!), but at least in response to my audience poll, very few people confessed to being unfamiliar with Lisp, so maybe the advocacy would have been unnecessary.
In any case, I got some fair feedback, and I had the chance to have a nice chat with Kim Rose about the use of Squeak Smalltalk and related tools in education. Luke Gorrie introduced me to some other of his Smalltalk chums – that did seem to be the most popular language, based on a highly informal sample.
Dan Ingalls gave a demo of the Sun Labs Lively Kernel, which frankly makes my idea of writing a web backend for McCLIM simultaneously achievable and passé; a whole Morphic system built on SVG and Javascript, complete with animated stars and clocks with Roman numerals, is just the ticket at 9 o'clock in the morning. “Runs best in Safari 3 or Firefox 3.0 beta 5”.
The other talks were about implementing 3-lisp (a reflective dialect of Lisp), a Squeak VM in PyPy, Huemul Smalltalk, and Pico (an interpreted Lisp). It's very interesting to see the development of these systems; my main problem is that many of the presenters say things like “this implementation is not efficient (yet)” or “this implementation is incomplete at the moment” – this makes it very hard to judge whether the necessary future development will invalidate some of the nice things about the systems, such as their size, speed or dynamicity. I suppose that's in the nature of the research beast, though.
After all that, and some more chats, time to head off home (briefly, to rehearse for Arne's Judgment of Paris in the English Music Festival) before setting off again to Bordeaux and the European Lisp Symbolsium.
crhodes certified others as follows:
Others have certified crhodes as follows:
[ Certification disabled because you're not logged in. ]
FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!