<<< Previous speaker next speaker >>>

Sam Aaron

 Sam  Aaron Sam is interested in the aesthetics of programming languages, domain specific languages and the more general concept of language oriented programming. He received his Ph.D. in Computing Science from Newcastle University, for which he designed a domain specific language to represent interests within virtual environments. Sam has also worked as a technical reviewer and essayist for Rails books, written Ruby news articles for InfoQ, co-founded the Newcastle and Amsterdam Ruby user groups, and works at Innovation Factory in Amsterdam.

Training: "Advanced Ruby"

Track: Tutorial

Time: Tuesday 09:00 - 12:00

Location: Henry Moore Room


Ruby describes itself as a dynamic programming language with a focus  

on simplicity and productivity. It has an elegant syntax that is  

natural to read and easy to write. These properties allow beginners to  

quickly become acquainted with, and effective in using, the language.  

At the same time, Ruby's flexibility and remarkably dynamic nature  

enables experts to harness its true power - the power which is at the  

heart of Ruby's success stories such as Ruby on Rails, RSpec and  



This tutorial will provide an overview of the advanced concepts within  

Ruby. Together we will venture through the essence of what makes Ruby  

so flexible and dynamic. We will explore the power of open classes,  

meta-classes and modules and take a look at some of Ruby's many useful  

hook methods through the use of a series of examples. For those  

interested in interoperability, we will also look at communicating  

with other languages such as C, Java and Objective-C. Finally, we will  

bring many of these concepts together and look at a real world example  

illustrating the ability to fold Ruby into readable Domain Specific  

Languages, allowing us to express business logic in a way that is  

readable to clients.


No prior knowledge of Ruby is necessary to appreciate this tutorial,  

although a good understanding of Object Oriented concepts would  

certainly come in handy.

Training: "Aesthetic Programming"

Track: Tutorial

Time: Tuesday 13:00 - 16:00

Location: Henry Moore Room


Aesthetics is a concept that has influenced the thinking of creators  

of all forms including mathematicans, physicists, designers,  

architects and artists. How can we try and interpret this concept  

within the context of software? Is it purely an academic notion, or is  

there real value to be gained from considering the role of aesthetics  

in software practices? Is it possible that aesthetic programming can  

help produce more understandable, readable and maintainable code while  

still meeting performance requirements?


This tutorial will ask all of these questions and more. Together we  

will closely study the roles of perspective, context and language  

leading us to examine the notion that software is, not just a form of  

code, but a form of communication. We will consider our potential  

audiences and the varying importance of different readers, such as the  

computer, yourself, your pair programmer, the tests, the domain expert  

- and even your client.


We will discuss the importance of language, not only as a means of  

communicating with the computer, but as a means of communicating with  

our many, intentional and unintentional, audiences. We will discover  

that just as a good choice of algorithm can optimise performance, a  

good choice of language can optimise our communication and therefore  

help decrease mistakes, and increase our confidence that we are  

discussing the same concepts.


This tutorial will contain both discourse on these matters and  

associated material from academia and real world solutions.