The last day of QCon, Friday, had already started with a keynote, Resilient Response in Complex System, John Allspaw. The general advice was concentrate on recovery rather than attempting to avoid failure. The talk emphasized the need to train developers and operators in failure situation, following the model of military or emergency services. The idea of a post-mortem, retrospective, learning from the forensics of situations, are needed in order to provide a resilient response. I think Allspaw’s core message was to practice, learn, analyse, and then improve.
Professor Philip Wadler takes the stage
Friday sessions began on the Scala and Functional language Track. I went to see Faith, Evolution and Programming Languages: From Haskell to Java with Professor Philip Wadler of Edinburgh University. What followed was short history of functional programming and mathematical logic, beginning with the Gerthard Gentzen (1935) , who devised Natural Deduction and sequential calculus.
Natural deduction was the idea that rules of logic come in pairs, with that it is possible to simplify Proofs – in order to prove A and B, then I need to prove A and also prove B, then work on A implies B or vice versa.
Next, came the achievements of a certain Alonzo Church (1932), who invented Typed Lambda Calculus. The lambda calculus permitted construction of functions and records from constituent parts. Phil Wadler introduced a constant running theme throughout his talk – that is, it always two people who appear to make a significant breakthrough in understanding computing and mathematical logic. So in the case of Alonzo Church, it was not until the year 1980 William Howard – Curry Howard Isomorphism – conceived the idea of partial functions calling another partial function in order to combine together a real function. Haskell Curry had discovered an artefact in the 1950’s, called combinators and isomorphism. Howard was also influenced by Curry. The main type system used in Haskell is called Hindley-Milner type system, discovered in the mid-1970’s. Robin Milner wrote a seminal paper called Polymorphic Types. Jean-Yves Girard derived System F and John Reynolds found discovered Type Interference for the polymorphic lambda calculus.
The great ideas are so great, that you discover them twice.
[R] Professor Philip Wadler, Edinburgh University and dressed in his “Lambda-man” tee-shirt
For the second part of this talk, Prof. Phil Wadler spoke at length on the influence of Gottlob Frege (1879), who formalised mathematical quantifiers as the upside down A “for all implication – assumptions”. It talked about John Reynolds (1974) – who discovered type Polymorphism/ Reynolds was interested in data abstraction, which meant he did not care how you represent on the type entity, but has a certain behaviour. Girard showed that the lambda calculus program can be written to terminate.
From the polymorphism, he introduced his own mark in history Odersky and Wadler (1997) – Pizza Parameteric polymorphism, which told the story of modern times, Igarashi, Pierce, and Wadler – featherweight Java, Gosling, Joy, Steele, Bracha (2004) – Java 5, and Naftalin and Wadler (2006) – Java Collections
The final part of the talk was about Haskell: Type Classes. and some recent ideas, such as finding a canonical language concurrency, search for description that transform one object to another object (parametricity?). Phil Wadler saved the very best for last with two assertions.
Lambda calculus is universal programming language.
Lambda calculus is Omniversal
[L] Sadek Drobi and [R] Guilluame Bort of Zenexity, co-authors of the new shining star, The Play Framework
I went to the Play Framework presentation: Non blocking, Composable Reactive web programming with Iteratees in Play2 with Guilluame Bort and Sadek Drobi. With Play Framework version 1.x they decided not to use the WAR file, any part of the Servlet API, because of the typical implementation of Java EE web application servers were one-request-per-thread which did not scale. Bort and Drobi knew in order to scale significantly as web platform: a thread did not need to be blocked when doing I/O and with the Servlet API the thread is blocked all the time. Instead, Play version 1.0 was based on reactive programming techniques and the promise to avoid the blocking of Java thread. They also went to templating scheme and followed a Ruby style convention-over-configuration philosophy.
One part of their talk that the authors discussed at length was the quick iteration feature. Developer did not have to deploy to an infrastructure. Instead, the designer and the developer, working together, could just code and watch what happens to the application at runtime, without having to stop and start an application. This idea of quick iteration of change is fundamental to allowing designers to experiment and create better designs.
Zenexity had to work around also the implementation of java.io.InputStream and the read call, which will block the thread if there is no data. These methods block until input data is available. A reactive model had these characteristics 1) inversion of control, 2) the source controls the execution and 3) holds onto the control without loosing it.
The architecture of Play Framework version 2.0 brings in the idea of composable streams and stream handlers Iteratees. An Iteratee is a consumer. It is just something that consumes the input and it produces a value from the consumption. In combination with Iteratees, Bort and Sadek, also provided Enumerators, which are all about producing streams of a data. Enumerators also have adaptors called Enumeratees!
Overall, this could have been a seriously great talk, because all of that was missing was some tantalising demonstration of the Play Framework for beginners. I would have love to have seen that amazing user interface demo using these brand new Composable entities. New starters may well have been left confused and slightly bewildered by the lack of Scala code explanations.
Off the beaten track, I went to a talk in the Working Distributed track. It was given by Ola Bini and was called Anarchy, Cooperation and the Bazaar. This was a very good non-technical talk on the subject of open source software and its development. It delved into Eric S. Raymond’s classic paper about the Cathedral and the Bazaar. Ola Bini also delved into business of open source, how it is distributed, how developers work and why it has been a success. He also pointed why certain corporations and entities have failed at open source. There was a purest view of open source GNU and Richard Stallman discussed and contrasted against the pragmatists, Apache, Linux and Mozilla.
I found this talk rather a fascinating diversion and emphasised the learning I have had to do with communication between individuals and teams.
Ola Bini did cover the amazing success stories such as Linux, SourceForge, Codehaus, Github, RapidFTR, to name but a few. He concluded that it will be essential to notice the very low barrier to entry in creating a brand new open source project online with the help of Github. Such GIT developers can easily create an open source project. It is the best way to get people to look at your work, and if they really like what they can read and see, they can branch the code so easily and mash up with their own ideas, and of course they may contribute back to your source. The owness is you and your skills as a source code manager to pull in other contributions.
Caching, Grids, and No SQL
The final talk of QCon London 2012 was Caching, No SQL and Grid: What The Bank’s Can Teach Us? by John Davies. The talk started with the discussion of the data statistics of banks. Trading requires lots of data, lots of connectivity and lots of throughput and low latency. The latter two points are finely balanced.
John Davies declared that we need change the programming model. He stated the hardest thing to drill into a programmer is to think about programming for a distributed architecture, which to my mind was a bit sharp and harsh. These thought require techniques and much learning through coaching and mentoring. He spoke at length on the EJB model, which was a start but scalability was limited to the server or cluster of server
After the EJB model. we were offered up the topic of Virtualisation, where Davies announced that we can take any physical location and split it up in order to better share a resource. Each Virtual Machine would independent from the other – all VMs on the same physical machine relied on the same hardware.
He compared the typical way of deployment applications in any business, including banks with Amazon EC2 (30 minutes). Unfortunately the banks did not at the moment support cloud environment, because of concern data privacy, intellectual property, trade secrecy, auditing, and mainly because of security reasons. John Davies said virtualisation and cloud environment are the way we must go, it is the future, even for investment banks.
The next topic was Local data storage versus Grid storage versus Cloud storage. Davies declared if we can distribute to a local VM [virtual machine] we’re most of the way there. He said that the big problem was provisioning these environments to the next level, from local VM to the local grid VM, especially if we move the VM to other networks. Davies compared strategies:
Local – very fast, perfect for developing and testing
- Private Cloud / Grid
- Very secure – perfect for banks & governments
- Very scalable but there is a slight latency
- Costly you have to invest in the physical boxes
- Pay for what you eat
- Extremely scalable
- Latency and security can be an issue
- Service provider license could be difficult in a competitive market (when the tide flows it affects all boats in the sea)
- Terracotta (Big Memory)
Many other technologies overlap in area, predominately the caching side, these too are viable alternatives EHCache, Memcached, JCache.
- No SQL databases
- MongoDB is pretty popular, HBase with Hadoop and Cassandra occasionally too. Others are rarely seen by John Davies in his context and environments.
- GemFire – originally an OOD, now has a pure Java implementation, recently acquired by
- Terracotta – uses Java VM replication, recently acquired by Software AG. It originally came out as a clustering solution, about 10 years ago, and Terracotta became very good at that clustering. Technologies move up.
- GigaSpaces – originally the only viable implementation of Sun’s JavaSpaces, which was created by East-coast Sun Microsystem. JavaSpaces never really took off since EJB was favoured by the West-coast Sun Microsystem. GigaSpace has the concept of a “Space”, you can write something into a space, read it, take it, and be notified something changes. Perfect implementation of MASTER/WORKER pattern.
- Coherence – formally “Tangasol”, now owned by Oracle, entity beans had a particularly way of writing to a database, it was originally conceived as a cache. Once people figured out that cache was distributed, you could effectively remove the dependency on the database.
- Neo4J – The wild-card, a graph database. It is an interesting technology, it is a graph database with fluent and relationship queries, which is quite unique. For instance, “find all the friends of Sarah Plumber that are related to her Mother and over 25 years old.”
I also think that there is some type of standardisation that will come through the cloud development provider. It may be a Java EE 7 specification, if they want to tie together with Oracle and/or it could be separate organisation that does this, particular, like an OSGi for the Cloud PaaS providers. Well the future is bright. Cloud and PaaS will eventually be a requirement for enterprise developers for sure.
I enjoyed my two days of work related training at QCon Conference 2012. I would like to thank my employer IB Boost for making my presence available. It was really good to see some familiar faces, and I know I missed somebody. Software development in London is changing, it is optimistic, there are interesting projects going on, despite the economic downtown. The vector of progress is still moving onwards one way or the other. When I go to a conference I intend see just where this vector is pointing, I have some ideas of what to look in the next 12 months. I see you at QCon London 2013.
Shout outs (in no particular order)
- Robert Smallshire – Dear Fellow, thank you very much indeed
- Barbora Nasincova – Zero Turnaround
- Simone Barbieri – application manager at BWin
- Oliver White – Zero Turnaround
- Baruch Sadogursky – JFrog Developer Advocate
- Alex Blewitt
- Liz Berstock – QCon
- Yaov landman– JFrog
- Chris Richardson – b
- Floyd Marinescu – b
- Professor Phil Wadler
- Sadek Drobi – Xenevity
- Guilluame Bort – Xenevity
- Kresten Krap Thorup – Trifork
- Aino Vonge Cory – QCon
- Steve Freeman
- Geeta Schmidt – QCon organiser
- James Strachan – awesome talk
- Michael Brunford Spall – Guardian
- Alex Russell – I still want to get into HTML 5 😉
- Adrian Cockcroft – Netflix
- Gil Tene
- Ola Bini
- Rich Hickey
- Barry Cranfield – London Java Community
- John Davies – Incept 5