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