This is the first part of
two
blog posts about Euruko 2005, the European Ruby
Conference that took place on October 15th and 16th 2005 in Munich.
On Friday evening, the guys that already were in Munich met at
“Ristorante Ai catelli”, which is an excellent Italian restaurant in the
night-active heart of Munich. We probably talked (and drank!) there
until half past twelve.
On Saturday morning, after everyone had introduced himself, the talks
were collected in an “agile” way and we decided the order of
presentation.
These were the talks of Saturday in chronological order:
Kingsley Hendrickse: Agile Testing with rubySelenium
Kingsley first gave an quick overview of the agile process
and acceptance test driven development for the people that didn’t
know about TDD yet. He outlined the use of stories, how to practice
test-first and that stories are accepted when all tests pass.
Then, he explained the testing phases used by him,
iterative testing, system integration testing, regression testing,
performance testing and, finally, wider user acceptance testing.
He told that his web testing framework, which is by the way called
rubySelenium because of
the competitive, commercial, system Mercury, was especially good for
test-first development. Also, it is easy to use for people of
different levels of ability and, unlike Mercury, free of licensing
restrictions. It is available as a gem.
He also explained that they use exploratory testing, which is
essentially unscripted testing performed by humans to find potential
bugs that were not considered during design and development. However,
bugs get scripted and added to the test-suite when they are found.
According to him, agile testing covers three parts of testing:
development interface testing, quality assurance and system
integration testing.
The main benefits of the agile process are to have fully automated
regression tests, get immediate feedback about bugs and the state of
development in general, create tests with minimal training and feeding
back (production) bug fixes. In the end, you have a far higher
confidence in your quality.
All in all, agile development helps building the application around
the customer’s criteria, have bugs ironed out by constant feedback,
being able to better estimate due to constant feedback and allow for
early integration tests with mock interfaces.
Kingsley finished his talk with an demonstration of rubySelenium,
which probably is best described as a kind of DSL for declaring
assumptions about websites.
Armin Roehrl, Watir — Web Application Testing in Ruby
Armin Roehrl continued demonstrating how to test web applications,
this time using Watir, which is
essentially a library to drive Internet Explorer to make it look like
a user is using it. Watir makes this possible by providing full
access to the DOM of an Internet Explorer instance over COM. The
benefit of this is that Watir allows for having control structure in
Ruby, whereas Selenium is purely declarative.
Paul Battley, Using Unicode in Ruby
Next, Paul Battley had a talk on how to make use of Unicode in Ruby.
After an quick introduction of Unicode, it’s pros and cons and how it
is encoded (UCS-4, UTF-32, UCS-2, UTF-16, UTF-8, not to forget the
thing with endianess) he elaborated on the advantages of UTF-8.
Then, he also informed us about the “banana skins” of Unicode,
according to him: the Byte-order Mark, differing operating system
capatibilities, confusion about byte/char/codepoint/glyph, sorting and
casing Unicode, normalization and Microsoft—which tends to
handle some Unicode issues in a different way.
After this, he explained how to be careful in Ruby as String
s only
are arrays-of-bytes, so, for example, there is no reliable []
and
the length
is returned in bytes. He also explained how to use Iconv
and showed a nice trick with //IGNORE
that I didn’t knew about Iconv
yet. He taught the audience a lot of tips and tricks on how to deal
with Unicode.
Paul ended his talk by looking at the future of Unicode processing in
Ruby. There probably will be bindings to ICU, a library to deal with
many Unicode issues, and Oniguruma, the future Ruby regular expression
library with better Unicode support. Last but not the least, he also
showed how to do mischief with Unicode.
Sven Koehler, Introduction to Wee
Sven Koehler now did the first of IIRC three talks on Wee, a web
application framework that aims to be a clone of Seaside, which is
written in Smalltalk. Wee is continuation based and features
convenient HTML generation by code. He says Wee can be described as
“dynamics on the server side” and contrasted it with AJAX, which can
be used to implement this dynamicity on the client side.
He went on with demonstrating basic Wee usage.
Rob McKinnon, Ruby Editor Plugin
The next demonstration was by Rob McKinnon, which presented his JEdit
Ruby Editor Plugin. I can’t say too much
about this, actually. :-P
Sven Koehler, Monitoring Enterprise Applications
After Rob, Sven had his second talk today which was about enterprise
environments and how to deal with them.
Sven is using Ruby and Wee at BMW to get an better overview about a
really complex legacy system they run there and quickly demonstrated
how he did this.
They have two systems there, a procurement application (which can be
described in terms of User, Requisition, Catalogue, Account, Order
that are all from different systems) and a ticket application which is
like Bugzilla. The probably most amusing thing was that some old
applications do kind of “RPC over SQL” for inter-process
communication; that is, they insert a record into a database and a
different process looks for new entries, does some calculation and
inserts another record with the result. What a hack. :-)
Christian Neukirchen, Dynamic Scope and Context-oriented Programming
The last talk on Saturday was mine about Dynamic Scope and
Context-oriented
Programming.
I have put the
slides
and accompanying code
online, so it’s probably best you see for yourself. :-)
All I can say is that people probably really liked it, at least quite
a few people told me how impressive they thought it was.
Dinner at Aumeister
After my talk, we all walked to the Aumeister beer garden and
continued discussions there about various things. Ain’t nothing
better than to hack code after dinner. :-) I, for one, had an
interesting conversation with Stefan Schmiedl on various programming
languages. Especially Forth was quite popular there, almost everyone
talked about it somehow… how will this influence the future of Ruby?
To be continued on day two.
NP: Rolling Stones—Ruby Tuesday