Barbara Liskov Keynote
Today is the first day of QCon London 2013, and it’s off to a great start.
Professor Barbara Liskov from MIT opened the conference, covering a historical
retrospective on the evolution of programming. It’s humbling that the demo
of duck typing she showed was from 1973, before most of the audience was
born. As well as describing the Liskov Substitution Principle (which i’ve
– which, she notes she didn’t coin – as being a desirable property to allow
subtypes to replace functionally equivalent object types. Of course, as she
noted in her presentation, this doesn’t always hold; for example, both a
Queue and a
Stack have the same signature types but different semantic
behaviour, and clearly the substitution rules only apply for those with
In the corner, Heather Wilems of ImageThink created a mind map of the topics covered in the presentation itself. It made for a good picture with Barabara next to it, though it was something you had to see after the fact rather than providing interest during.
I also had the opportunity to interview Barbara for InfoQ; the interview will appear on the site later this year. The slides for her talk are now available.
Arun Gupta on Java EE 7
Arun (developer evangelist from Oracle) provided a view on what’s coming up with Java EE 7, including a new annotation based message driven bean and simpler setup for enterprise Java applications. Most of the upgrades are evolutionary rather than revolutionary, although a couple of new APIs will provide standard JSON parsing (both in streaming and later object form).
The slides for this presentation are available.
Testing iOS Apps by Graham Lee
Graham Lee (@secboffin) gave a high-level talk through the testing frameworks available to iOS developers. The tools included Calabash, Cucumber, OCUnit (built into Xcode and also known as SenTestingKit) as well as browser-based tools such as Safari’s web inspector.
Graham is also the lead developer of the iOS Discworld App, and I took the opportunity to interview him for InfoQ, covering the testing and optimisation approaches necessary in order to develop the application.
HTTP 2.0 by Mark Nottingham
Mark Nottingham (@mnot) gave an overview
of what’s coming up with HTTP/2.0, including some of the rationale for
providing new protocol layers to save data and reduce the number of packets
required between web requests. The main principle is that between subsequent
requests to the same server, the client transmits most of the same set of
request headers (
Host etc.) which can be avoided
with subsequent requests with a sufficent encoding pass.
However, the transport layer is responsible for stripping and then re-assembling the layers on the other end; the client still sees the same full set of headers from the client that it is expecting to see even if the interim layers don’t actually send those bits.
The slides were delivered in HTML format, and are available here.
Architecting for High Availability by Attila Narin
The ‘Architecting for High Availability’ talk was a sales pitch for Amazon web services. In it, Attila demonstrated the ways services like Elastic Load Balancer and the Elastic Cloud Compute could be used to provide CPU power for a service, whilst back-end data services could be accomplished by using either Simple Storage Service or Elastic Block Storage, or a traditional data store using Replicated Data Store.
Basically, if you were interested in an Amazon sales pitch then this presentation was for you. If you weren’t interested, the presentation was well suited to a period of catching up with e-mail and other such tasks.
Dead Languages by Damian Conway
The hands-down winner of today’s presentations – probably the whole conference – was Damian Conway’s talk on “Fun with Dead Languages”. At the break, I joked to my colleagues that it may include Latin or languages like PHP; unbeknownst to me, I had hit the nail on the head.
The gist of the presentation was that of avoiding language monoculture; by way of example, his first slide was of a type of bananas now extinct having been wiped out by a particular disease some time in the past, and that the current crop of bananas being genetically identical may suffer the same fate in the future. Applied to languages, and more specifically developers of those languages, his argument was working only in a single language necessarily increases the possibility that external changes may make the language redundant or enforce a particular mind set.
His examples of both C++ and Latin were well received; he used operator
overloading in C++ to render a text file with a series of lines like
state1 ------> state2 (having overloaded the
-- operator to return
a partial function, and the
> operator to apply that function) to represent
the source of a state machine. Importantly this also gave the source file
the ability to re-order the lines of text in the source file and not change
the meaning of it, introducing the point of a position independent language.
The final part of the presentation was exploring that point further, by using the concept of Latin’s expressive tenses to represent whether a variable’s value was being assigned or referred to.
This led to the latin execution for both “sudo get me a beer” and the sieve of Eratosthenes to print out the list of prime numbers up to 120 in roman numeral format:
For the purposes of accessibility, this is the text on the Sieve slide; note that the below is copyright Damian Conway:
Atlassian Angry Nerds Party
Atlassian sponsored the end-of-day party in the associated hall, which has the benefit of being right next door to the conference venue as well as a fairly sizable space in which to congregate. There were also several games-style tables, including football table and an air hockey table. The beer was probably more plentiful than the finger food, but none the less was a pleasant way to end the evening, as I talked for some time with Graham Lee about the evoluion of the Nextstep platform and reminscing about ye olden times.
Day 2 up next.