Saturday, July 31, 2004

A day out...

After a rather pleasant late lunch at the Veritable Quandary I actually got out of the city. This isn't something that happens a lot at conferences...

A local friend of Frossie's drove myself, herself and Kynan out of town into the Columbia River Gorge region where we stopped to see Multnomah Falls.



Multnohmah Falls in Oregon

The water plunges 542 ft in the upper falls into a pool, before it drops another 69ft into the river below. Very impressive, and well worth the trip out to see it.

Returning to Portland, it was time to pay a final call to Powell's.

For those of you not familiar with Powell's it's one of the world's great (in almost every sense of the word) bookstores, with seven stores in the Portland metro area. The largest, the City of Books, is the largest used and new bookstore in the world and takes up an entire city block. I was good and only bought some second hand paper backs, titles I'd been wanting for a while but couldn't track down, Frossie was somewhat less restrained...

Friday, July 30, 2004

Final Session

Finishing up, an eclectic mix of stuff. The session opened with Stormy Peters, who awarded the HP Photo Contest winners.

The bet between the Python and Parrot teams was finally settled, Python doesn't run on Parrot as fast as it does natively, so Guido van Rossum got to throw a pie in the face of Dan Sugalski, one of the Parrot designers. He also won $10 and a case of beer.


Pies for the Parrot guys...

Them the final keynote was given by Milton Ngan, the Digital Operations Manager at Weta Digital, talked about much cool stuff...


Milton Ngan talking at OSCON

The Return of the King preview...

The future of Weta Digital is Peter Jackson's King Kong, but after that?

GRASS, an open source GIS

Schuyler Erie and Rich Gibson talking about GRASS.GRASS is hard to use, instead you should use Qt-based GIS (qgis) unless you really need the power of a real GIS system. It's a collection command line tools, equivalent to the commercial offerings costing thousands of dollars. But it's hard to use, I think they mentioned that before...



GRASS georectifying a digital elevation model and a population map

GRASS is just UNIX. The GRASS commands extends the UNIX tools philiosphy; they have man pages, you can pipe the output between commands, and have all the UNIX goodness you'd expect. Apparently the useability isn't that much worse that the commercial systems, although according to Gemma that probably isn't saying much...

Sufficiently Advanced Technologies

You have to wonder how Damian Conway makes it through OSCON, he spent the first two days giving tutorials, and he's talked several times a day during the conference proper. However a Conway talk is always interesting, you normally spend it either sitting in awe of his achievement, his presentation style or just his raw energy, if you aren't frantically trying to write down every word he says...

Damian starting talking about Perl magic, for instance

package MyClass

use Sub::CallAsMethod;

sub foo
my $self = shift;
bar(); # rather than $self->bar();
}

The interface to Sub::CallAsMethod is as minial as possible, non-existant in fact, the module's effect is as indistinguishable from magic.

The existance of these sorts of modules isn't new, it's been around for some time. The main problem with them is use strict which normally breaks, although of course use diagnostics is worse "not only are you executed for your sins, you're given a long lecture about it first".

A good example of a magical module is IO::All which is definately sufficiently advanced, it's magic, but given a sufficently easy mind there isn't any technology that can't be pushed too far. Damian has extended IO::All to do this,

use IO::All::Pulp::Fiction;

my @array = <~/file.txt>;

Also Perl6::Say which will add the newline automatically to print statements so long as $/ isn't definied. If you want to find sufficiently advanced technology, look in the Perl6 namespace.

Sufficently advanced technology doesn't have to appear our of thin air, find the bits of your code that annoy you, and then auto-magically hide them so you'll never have to do it again. For instance look at Damian's IO::Prompt module

use IO::Prompt;

while( prompt "next: " ) {
print "Ypu said 'S_'\n";
}

Also, comments, comments are passive and boring. they don't really pull their weight. So Damian decided that comments should be interactive and useful, last year he demo'ed a module IO::Progress to construct progress bars, but he hasn't used it, it wasn't sufficiently advanced. The interface wasn't magical enough. So he wote Smart::Comments. Here you comment each initialisation step with a picture of what you'd like printed out to the progress bar (while loops even have exponential slow downs). Smart::Comments uses source filtering since tehre aren't any hooks in Perl 5 to interogate the comments.

use Smart::Comments;

for my $i ( 1..10) { ### Looping... done
...
}

The module can also do things like,

###check: $i == 10;

they aren't smart comments unless they're smart.

Then he started talking about his new version of Lingua::Inflect which has so much magic I can't even fit the explanation in the space provided.

Perl's stringths are that it does the heavy lifting for you. Damian argues that you should make that the strength of your own modules, we should think about what we can remove from the interface of our modules to make them simpler to use, almost magic infact.

Keynote Speeches

The keynote speeches began with David Rumsey talking about open content and how online digital libraries will provide access to cultural information in the 21st century. He discussed emerging technologies is opening up the collected content, and revealing "the source code of cultural systems". He drew analogies between the issues facing the open source movement and the growth of the online libraries, such as intellectual property and fair use rights.


David with sample data from davidrumsey.org

David has collated his collection of maps and made them available online at davidrumsey.org via a variety of methods, including a GIS. The first step with providing a GIS interface to historical maps is to georectify the maps, however they also found that they had to provide their own client software as the available software that could do what they wanted to be able to do was very expensive.

University libraries focus on preservation rather than distribution, in his view this is a bad thing. He makes his collection of historical maps available via geographynetwork.com amougst other access routes.

The second keynote speaker of the day was David Patrick a Novell VP talking about Novell's open source renaissance, and what they're doing to make open source software more mainstream. He talked, not so much about Novell, but about how open source is affecting big business.

Final Day

The final day of OSCON...

NASA's Mars Rover Mission

Talk by Jeff Norris and his team from NASA about how they used Open Source software for the Mars Rover programme.


The NASA guys



Spirt and Opportunity images

ADC Reception

Apple provides some free food and beer for the masses...


Free food and beer...


Apple kit just looks beautiful!

XQuery

Jason Hunter (co-creater of JDOM) talking about what he considers the next "cool thing". XQuery is a standard language for querying XML, or anything that can appear as XML such as relational databases, HTML pages, SGML, anything with some structure...
  • XQuery is easier to read and write than XSLT
  • Better for jagged hierarchical data than SQL
  • Better than procedural access since the engine can optimise
Open source implementations are eXist, Saxon, Qizx/open and Qexo. Jason hopes it'll be an XSLT killer (at least for developers).

Parrot in the Real World

Point of the presentation was that you can move from a custom 4GL language to Parrot fairly easily. Larry Wall pointed out that this is exactly the Perl 5 to Perl 6 strategy as well. Thankfully, while we have a lot of legacy software, even Starlink isn't stuck with a 4GL database language, so while interesting this wasn't a particularly relevant session for me...

Thursday, July 29, 2004

The Apache Project(s)

Apache isn't just Apache anymore. The Apache Software Foundation is now involved in alot of different projects. Everything that follows is in Java unless otherwise stated,
  • Xerces - Java and Perl wrappers for the C++ library providing APIs to SAX DOM XNI, XNI-based pull. Validation DTDs XML schema support relax NG support. Use Xerces everywhere. In Java 1.5 Xerces will be the default parser in JDK
  • Xalan-J - XSLT processor, converts one kind of XML to another using a stylesheet (Java and C). Use it to convert XML to HTML, or use one XML source for multiple outputs.
  • FOP - XSL processor, convert XML with XSL elements into XML formats.
  • Batik - Scalable Vector Graphics (SVG). Vector drawing commands using XML, declarative animation, imperative animation. Use it for graphical output (static or dynamic) and flash-like user interfaces.
  • Xindice - Native XML database, XML:DB API, searchable by XPath, use it for storing XML documents.
  • XML-RPC - Use XML to mark up RPC cals, deliver the XML via HTTP, use it when you need to talk to another XML-RPC application.
  • Axis - SOAP, WSDL TCPMonitor. Use it when you need a SOAP sevice, when you need to talk .NET
  • XML-Security - XML digital signature and XML Encryption for whenyou want to sign pieces of XML documets (rather than the whole document). Use it in XML-based workflows.
  • Cocoon - web publshing framework.
  • Lenya - Content Management System for Cocoon.
  • Forrest - Documentation platform based on Cocoon, content templates, skins, forrestbot.
  • XML Commons - Reusable components such as SAX, DOM, which (tool that lets you doagnoses the state of your system), resolver
  • WSIF - Allows you to invoke services via a WSDL document. Use it if you need a uniform interface to services implemented using different technologies, if you need isolation from the services APIs.
  • XMLBeans - Populate JavaBeans from XML
  • JaxMe - Store JavaBeans into a database, query that database. Use it when you need to use JAXB.

Perl 5.8.5 was boring...

Nicholas Clark from Fontango talked about the Perl 5.8.* release.

Things to note,
  • Perl 5.10.* will not be binary compatible with 5.8.*
  • No pseudohashes in Perl 5.10.*
  • No 5005 threads in Perl 5.10.*
He talked about the Perl 5.8.0 and 5.8.1 releases which were too far apart, but had a "2 weeks to launch" mentality, which meant that there were too many changes and too little testing time. Also, the vendors didn't wait and shipped release candidates, this was bad. Also, Perl 5.8.1 introduced hash randomisation and changed the Threads API. Neither of these were binary compatible with 5.8.0. Needless to say, the Perl 5.8.1 final release was exciting.

At this stage Nicholas took over as the pumpkin holder, already committed to a regular release schedule, which of course would hopefully make things a bit calmer.

So what's happened since?

Perl 5.8.2 fixed the binary compatibility problems with hash randomisation, making it binary compatible with both 5.8.0 and 5.8.1. Threads were returned to being binary compatible with 5.8.0.

Perl 5.8.3 added features (Tie::Hash SCALAR), this was a bad idea, but it was backwards compatible.

Perl 5.8.4 had no new features, and was getting to the stage where there weren't that many utf8 bugs anymore. But did introduce an optimisation to the sort code which was buggy. Perl 5.8.4 was a near miss, there was a major bug which was not found by the release candidates and only found by Debian testing.

Perl 5.8.5 had no new features, and no new bugs (so far)...

In the future Nicholas will drop to a 4 month release schedule, away from the current 3 month schedule. The release candidates aren't picking up problems so Fontango will be introducing a CPAN autobuilder to spot problems (which will be released to CPAN).

Cocoa Programming under Mac OS X

The speaker talked about using Perl as a glue language under Mac OS X, rather than programming graphical applications as some people seemed to be expecting. He briefly discussed AppleScript and the Mac::Glue module, but argued that it is better to use the Cocoa APIs directly by using something like CamelBones or PerlObjCBridge (which ships with Mac OS X 10.3.* by default).

He then went on to talk about scripting the Address Book as way of illustrating his points by accessing the Cocoa API using PerlObjCBridge using the Foundation module, which is a low level module which talking to the generated C code rather than the ObjC code itself.

use Foundation;

my $frameworkpayj =
NSSString->stringWithCString_(
'/System/Library/Frameworks/AddressBook.framework'
);

my $framework =
NSBundle->alloc->initWithPath_( $frameworkPath );

$framework->load();

There is documentation in the /Developer/Documentation/ directory for the ObjC interface, and there is perldoc for the PerlObjCBridge.pm module (but not for the Foundation class itself).

Looking at the presentation, the ObjC wrappers look to be very low level, suprisingly so... perhaps I should look at CamelBones if I actually want to start writing Mac native applications using Perl as the glue.

CPAN for In-House Development

Started with the two people giving the talk performing a rap, err, okay.


CPAN Tools In-House

They talked CPAN and how it is the Perl killer application (which it is unquestionably), and how you could (should?) use the CPAN infrastructre (see CPAN::Site) in-house to distribute and archive your own code (and of course eventually release them on CPAN proper). They also talked about how refactoring is a good thing.

Amougst a bunch of othe topics (the session was a collection of lightning talks) they talked about the PAR module which is something I've looked at for eSTAR before, but couldn't get to work, presumably due to the complexity of our code base and the presense of XS and (especially) Fortran. I should probably take another look at it as it loks far more mature than last time I tried to get it to automate our installation.

In the news...

I've just noticed a picture of me turned up in the official news coverage of the conference. It was titled "You can use any device you want, even a handheld, to access the 802.11 network available thoughout the conference facility", which is odd, because it's a picture of me with my Nokia 3650 which doesn't have any 802.11 capability. I think I was actually sending a text message...


Why didn't someone tell me I had a double chin these days?

Keynote Speeches

The Dyson keynote speech, with Freeman Dyson and George Dyson (Esther Dyson is currently stuck in Texas) opened with the Star Trek episode where Picard discovered a Dyson sphere.


Nat Torkington in yet another bright shirt

Freeman Dyson talked about biotech, which he called "the technology of the 21st century" drawing analogies with the computer industry which has become an integral part of peoples lives, and become domesticated. He envisages that in the coming century biotech will do something similar...

The Dyson Keynote

George Dyson continued the theme talking about "hacking the physical world", with both Dyson's then going on to talk about the quantification of risk in society. Freeman Dyson said that the way we're going to avoid the dangers presented by biotech is probably down to luck, presenting the idea that this is pretty much how society makes it through every new challenge. After all, "do you want to live a risk free life?".


The session was opened up for questions from the audience

During the question session Freeman Dyson drew an analogy between open source and the free transfer of genetic material through the emerging biotech technologies. Wierd!

Perl Lightning Talks

A series of rapid fire talks...

Morgan Stanley Infrastructure APIs - they currently hide all their services behings SOAP, use variety of languages Perl, Java, C/C++, etc. MSDW::Eclipse does authentication, the application has no knowledge of what's happening behind the scenes uses pure message passing. MSDW::Quasar does common alerts, simple templates to make objects. Now generate all of the API's for all the languages (including Java) with this code.

CGI::Prototype - Generic CGI engine based on Class::Prototype which allows your data and your subroutines to live in the same name space.

Perl is too slow - Our managers tell us that Java is fast, and that Perl has a high compile overhead, this has been solved in mod_perl but what about everyone else? PPerl is a package that does this, #!/usr/bin/pperl is about ×10 faster than #!/usr/bin/perl. But this is still too slow, reimplementing string matches make them go ×150 faster (see Text::Qsearch module coming to CPAN soon).

Aegis - Want direct acess to CVS without letting people break your archive. Instead of committing straight back in, the changes have to build (Aegis knows how to build the module) and you need added tests (which your change needs to pass. The change then going into a "awaiting review" stage, a reviewer then approves the diff. Down side is that Aegis doesn't work well over a network. But hopefully this should reduce the number of patches being mailed around.

NGO in a box - A meta-distribution of open source in an actual physical box you can give to people.

Introducing the Package Factory - Work flow tool providing multi-platform packaging and distribution, uses ZeroG InstallAnywhere and MSI packages (doesn't seem to actually be released on the net?).

Start using prove - Designed as a development tool and is part of Test::Harness, it's like make test but more flexible and now included with core Perl. It's better for two reason: (1) Prove shows results (doesn't Test::More do this?), (2) Prove gives you control.

Parrott Licensing - Put copyright notice on you files, shouldn't say "All rights reserved", the files should be under the GPL or the Artistic License (or the Clarified Artistic License). You need to copyright assignments under U.S. law on bits on actual physical paper.

Wednesday, July 28, 2004

Python Web/Grid Services

Joshua Boverhof from LBNL talking about their Python Web and Grid service toolkits pywebsvcs and PyGridWare respectively.

GLOP

A language written in Perl to help make game programming easy,

#!/usr/bin/perl
use site;
use Glop;

GLOP::Draw->circle();

In GLOP Glop::Draw->Circle() means the same as Glop::Draw::Circle->draw(), used in many subsystems due to the small module quanta. But thats too easy, lets do something good,

#!/usr/bin/perl
use site;
use Glop;

Glop::Actor->Menu(
[ Start => sub { ... } ], [ Quit => sub { ... } ] );

Going a bit further, Actors are things that stay on the screen and the kernel keeps track of them (they are fire and forget) , four methods: new, make, step and draw. The step and draw are called every frame with step being called before draw.

#!/usr/bin/perl
use site;
use Glop;

view( -16, -12, 16, 12 );
Circle->make();

package Circle;

use Glop;
use Glop::AutoGL;
use base 'Glop::Actor';

sub new { ... }
sub make{ ... }
sub step { ... }
sub draw { ... }

Similar to Actors, Transients are things that are continued actions that eventually ends, and are placed in TransientQueues.

All input is via $KERNEL->input(), e.g. $KERNEL->input->Keyboard, and is registered in the make() method (a "kind of" constructor).

What about speed? Perl is interpreted, not good. But there are ways to fix it, there are always places to optimise your program, you'll always run into speed problems no matter what language you're writing in. You'll be able to write your game in 1/100 th of the time, even if it runs at 1/2 the speed.

But what do you do if you do run into speed problems? Try to move things into display lists (rendered directly by the graphics card). For instance to move the rendering of our circle into a display list, we'd use invar { Glop::Draw->Circle() }, but don't do anything that changes inside it as it won't happen. This works suprisingly well!

Available at SourceForge CVS glop.sf.net, but not yet on CPAN.

A Language for Games

Okay this has to be a good session, the entire room is packed and Larry Wall is sitting on the floor down at the front.

Free Lunch

There is such a thing as a free lunch and today it was provided by Microsoft...

 
Lunch Break at OSCON, the search for free stuff...

Enterprise Perl

James Duncan talked about enterprise software. Programmers don't actually use the term "enterprise", it was invented by marketing people, but effectively its software that doesn't make money and it isn't the product itself but instead is deployed behind the scenes as an enabling tool.

The thing about enterprise software is that it has to work, and should fail as gracefully as possible. Historically Perl is described as a swiss army chainsaw, highly versatile but distressingly inelegant, and was used as an automation language.

He argues(!?) that unquestionably,
  • We should be writing object orientated code
  • You shouldn't repeat yourself (copy & paste is bad)
  • Cargo cult programming is bad
  • Use small or one concept methods
  • Contents of loop should be a method call
  • Constant should only appear in one place (common blocks?)
  • Config files are bad things (really?)
  • Logging should be at an appropriate granularity

More contraversially, we should all be using proper exception handling,

sub UNVIERSAL::exceptipn {
my $class = shift;
no strict refs;
@{$class . '::ISA' } = qw ( Error );
}

exception Foo;

and also,
  • Object orientated programing is about message passing
  • Data driven development is bad (use mechanisms)
  • State is a bad thing (creates tightly bound components)
  • But being stateless is a bad thing (implied knowledge)
  • Strike a balance between state and stateless-ness
  • Don't hardwire class names (why?)
  • Don't use arguements to constructors (really!?)
  • Better to call methods (what about overhead!)
  • Use method chaining to replace constructors (return $self)
  • Recompose types, subclassing in Perl is poor, so use tie'ing
  • Recompose builtins, better as methods (eek!)
  • Objects are rarely true as a result of constructing it
  • Conditionals are bad (confuses method names?)
  • Use value singletons and compare references

Some of which I agree with, and alot of which I don't...

Finally he argues that as a programmer you should ask who you're talking to, you aren't talking to a computer (we'd be writing in assembler), instead you're writing for other programmers.

Perl 6

Damian, ability heckled by Larry, talked at length about Perl 6 mainly focusing on the new object orientated syntax. Something new to me this year was roles.


Perl 6, are we theeere yet...?

We use classes as "types", but also to add functionality to existing classes unsing multiple inheritance. Perl 6 supports a cleaner way to do multiple inheritance, allows us to insert a framgment of a class into another classes code.

class Vector::Identifiable {
is Vector;
does Identifiable;

...
}

So the compiler effectively takes the contents of the fragment of the class and unifies the builds. This should lead to a more unified design (component libraries). Roles are not classes, they are just fragments. However, if you declare methods without defining them, you basically have a Java interface. Roles are therefore a superset of traits.

Keynote Speeches

For those of us managing to get up in time, which looking round the (huge) main theatre is just about everyone, this is the first morning of the conference proper rather than the for-pay tutorials of the first two days. To start the day Tim O'Reilly is giving the keynote speech, discussing how open source software is changing the software industry.


Nat Torkington in his traditional bright shirt

Tim O'Reilly giving his keynote speech

Tim is putting forward the proposition that the internet itself, rather than the desktop, is the platform people should be developing software for and that the killer apps of the next few years are things like Google and Amazon. He's saying that these "applications" combine user added-value and commodity software. Even if you had the software behing Amazon, you wouldn't have their added value, the user contributions to their database. He's drawing a comparison with MapQuest, which could have done the same, has become commodity itself, and the people making the real money are NAVQUEST which own the data behind MapQuest (and it's imitators). If MapQuest had, at the start, built a participatory layer around their commodity data it could have locked people in to their service in a similar manner to Amazon.

The second, and final, keynote of the day was Robert Leftkowitz talking about the Semasiology of Open Source and how the big companies may be using open source but that they don't really understand the implications (or perhaps we don't understand it?). It seems that the denotations of the words "open source" mean very different things to big corporate IT and the open source community itself. This can cause wierd and wonderful problems and misunderstandings.

Tuesday Night Extravaganza

Attended the Open Source Awards which was followed by Larry's State of the Onion talk. Larry, as usual, gave an amazingly off the wall speech with all his "slides" consisting of different screen savers. He touched on subjects as diverse as attention deficit disorder, random walks, bilateral symmetry, tumours and many other wierd and wonderful things, managing to relate them all back to the design of Perl 6 (somehow).


Nat Torkington chairing the session

Larry Wall and the State of the Onion

Following with the State of the Onion we had Paul Graham, author of Hackers & Painters, who talked about the number of hackers who would voluntarily use Java over (say) Python, and that he doesn't know any. He also talked about how to get the best out of hackers, and that if you want them to be productive you need to provide what they need: a lack of cubicles, the right tools and the ability to choose their projects freely. Getting good hackers to work on projects they find boring is, in fact, very difficult (unless their families are going to starve).


Damian Conway talking about just about everything...

Finally we had Damian Conway talking about Life, the Universe and Everything, who Nat wheeled in (one day, I will need a favour...) at the last minute to replace Jon Orwant. Damian is always an entertaining speaker, and well worth going out of your way to hear, this time he talked about the Game of Life (and that other Conway).

Amougst (many) other things, he discussed Paul Rendell, who implemented a Turing machine inside a Game of Life, which is pretty scary. On the other hand this inspired Damian to write a quantum superposition version of the game using Perl6 Junctions. He then went on to use this module to prove the 2nd law of thermodynamics (no, seriously!). This is perhaps slightly more scary...


Damian proving the 2nd law of thermodynamics

Tied Variables

We're covering tied variables, in detail. I'm confused, I use these all the time, but alot of people appear lost. Perhaps I'm on my own here. How odd...

Tuesday, July 27, 2004

Globs

Okay, so I finally understand how Exporter works. I really should have known this one,

package Module;

sub import {
my $caller = caller();
*{$caller . '::subroutine'} = \&subroutine;
}

sub subroutine {
...
}

Tricks of the Wizards

I'm spending the afternoon session listening to Mark Jason Dominus talk about the tricks of the wizards. It's the first session where I'm actually having to listen to what's being said all the time. Excellent!


In Tricks of the Wizards session

More of the same?

Well the morning session is almost over, and I think my view of patterns has been reinforced if anything. It all seems to be (mostly) common sense. So why do people make a big deal about it? Very puzzling!

SubEthaWiki

O'Reilly is experimenting with SubEthaEdit and Kwiki integration. In the process they broke all the non-CamelCase (external) links on the conference wiki front page. I've just spent the coffee break fixing it for them because it was starting to annoy me...

Polymorphic Subroutines

A nice Perl hack that allows you to do (even more) complex polymorphism inside the eSTAR agent code base than I was already doing, I'm sure that this will scare my postgrad Eric quite badly.

my $stub = q(
my $stmt = $dbg->prepare("SQL");
$stmt->bind_columns(@_);
$stmt->fetchall_arrayref();
);

while ( my ($name, $sql) = each %queries ) {
my $body = $stub;
$body =~ s/SQL/$sql/;
eval "sub $name { $body }";
}

There seems to be some people objecting to the above in the session on maitainability grounds, but I rather like it.

Code Snippets

Okay, I like the way Adam is presenting this stuff, he's using small code snippets to illustrate his points. This always makes alot more sense to me than generic hand waving which is what alot of people do when trying to talk about patterns.

Patterns in Perl

My morning tutorial is being given by Adam Turoff about design patterns and how you can apply them in Perl. Seems like it should be okay, I was a bit worried that it'd be an evangelical approach, but unlike alot of people who talk about patterns he seems to be rational on the subject.


In the Patterns in Perl session

I've never really thought much of the usefulness of (strict adherance to) patterns in Java, I've often wondered whether was a reflection on how much I didn't like the language, or whether it was actually my opinion of patterns. Hopefully getting a Perl slant on this will give me a fresh outlook on the entire thing.

Sleep is good...

I must have been tired, as I slept right through. I woke up briefly around midnight, but other than that I didn't stir. This of course meant I missed dinner, the evening session and valuable drinking time. On the other hand I feel alot better today than did yesterday. I must be getting old, I never used to get jet lagged going west.


The "river view" advertised by my hotel
I'm sure some rooms have a nice view, just not mine.

Nap time...

I was going to go to the SCO Moot Court, but I think I need a nap before finding some dinner. Still not entirely recovered from the flight out I guess, after all it is 03:45 back in the UK right now even if it is only 19:45 here on the west coast.

Monday, July 26, 2004

Rendezvous Programming

I spent my afternoon in the Rendezvous tutorial given by Stuart Cheshire. I got alot out of this one, Stuart pitched the tutorial exactly right, taking a evangelical approach to explaining the "zeroconf" philosophy, and then showing us how to get our hands dirty with the C and Java Rendezvous API.


Rendezvous JAR building in XCode

I had trouble getting the Java JNI wrappers to build using XCode, which eventually came down to having a space in my path something which should have been blindingly obvious to someone who'd recently spent a week pushing the autoconf boulder uphill, and Stuart took the time to sort things out for me after the tutorial session.

I'm really enthusiastic about Rendezvous, I can see alot of applications for the new (next) generation of web services Starlink is thinking about. I can also think of a couple of applications inside the eSTAR agent code where this sort of technology will come in handy.

After coffee...

That's better, Mike is now doing more examples rather than just ploughing through the PowerPoint slides, it all makes alot more sense now that I can see how it works in practice. It's all still a little dry though, I think he's tried to pack way too much into this tutorial. Despite the title Mike is giving a fairly high level overview, whereas I think would have appreciated a "get your hands dirty" introduction where not so much got covered, but you definately ended up knowing how to do the simple stuff.

In other news

I've just got a text message from Frossie to say that Damian Conway's tutorial Best Practice Perl is excellent. Having heard Damian speak before, I'm not really suprised.

Learning XSLT

I'm about half way through my first tutorial on XSLT given by Mike Fitzgerald.


In the Learning XSLT session

Unfortunatley I'm not getting much out of it, Mike's approach to going through the stuff doesn't really fit well with the way I learn. I'd prefer more of an example based approach to learning something like XSLT but he's going through the different types of templates, nodes et al. heavily relying on PowerPoint and bullet-pointed lists. We did get a CDROM full of examples, so perhaps going through them later and sleeping on things will make things clearer for me...

Arrived in Portland

The Four Points turns out to be a reasonably nice mid-range hotel with free (I think?) broadband in the room. There must be a few OSCON people staying here because I can currently detect two different WiFi networks that have nothing to do with the hotel.

Totally shattered after getting the red eye from Heathrow straight through, via Washington D.C., to Portland.

However the worst of it was the 2 hours it took me to get through immigration, customs and baggage recheck. Which was followed by another half and hour trying to go through security (we were still air side, so why did we have to go through security again?). I almost missed my connecting flight, and I wasn't alone, several people did infact miss their flights. Apparently this is pretty normal for Dulles, so I think I'll strike it from my list of "aiports to enter the U.S." for the future.

Sunday, July 25, 2004

TomTom Go

While I was in transit I spotted a rather nice toy, the new TomTom Go in-car GPS navigation system which Dixons was pushing in the Heathrow Departure Lounge. To be fair it looked rather nice, too nice, it does infact look like the first affordable, fully featured, standalone GPS nav system. In summary, I think I want one...


The TomTom Go


Update: You can find is cheaper elsewhere...

Heathrow

Arrived bright and (too) early at Heathrow for my flight out to the States. United seem to have seriously overbooked their flights, everyone arriving was given a slip of paper offering $800 of flight vouchers if they went on a later flight. Unfortunately I was on the last flight into Portland that would get me into the conference in good time, so decided not to take them up on it unless they started offering actual money. In the end they didn't.


The queue on the right is for economy passengers.
The lack of queue on the left is business and first class.

Saturday, July 24, 2004

In transit...

On my way to OSCON which is going to be in Portland, OR., again this year.

I'm currently holed up in the Marriott London Heathrow staying overnight here before flying out to the States tommorrow. This is a taste of things not to be, as I missed the deadline for the conference hotel (yet another Marriott) and ended up in the Four Points near Pioneer Square. I've got a funny feeling I just traded a very nice hotel for a mid-range one. Can't have everything I guess...

For those of you who want to arrange to run into me (odder things have happened!?) I'll be going to the following tutorials over the first couple of days: Learing XSLT, Cross-Platform Rendezvous Programming, Patterns in Perl and Tricks of the Wizards.