{"id":623,"date":"2012-03-18T11:48:22","date_gmt":"2012-03-18T10:48:22","guid":{"rendered":"http:\/\/www.xenonique.co.uk\/blog\/?p=623"},"modified":"2012-03-18T22:16:57","modified_gmt":"2012-03-18T21:16:57","slug":"qcon-london-2012-part-2","status":"publish","type":"post","link":"https:\/\/www.xenonique.co.uk\/blog\/2012\/03\/18\/qcon-london-2012-part-2\/","title":{"rendered":"QCon London 2012 Part 2"},"content":{"rendered":"<p>&#160;<\/p>\n<p>The last day of QCon, Friday, had already started with a keynote, <strong><a href=\"https:\/\/qconlondon.com\/london-2012\/presentation\/Resilient%20Response%20In%20Complex%20Systems\" target=\"_blank\">Resilient Response in Complex System<\/a><\/strong>, 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\u2019s core message was to practice, learn, analyse, and then improve.<\/p>\n<p>&#160;<\/p>\n<p> <a title=\"QCon London 2012 by peter_java_pilgrim, on Flickr\" href=\"https:\/\/www.flickr.com\/photos\/8268882@N06\/6837294304\/\"><img loading=\"lazy\" alt=\"QCon London 2012\" src=\"https:\/\/farm8.staticflickr.com\/7040\/6837294304_3903a9c3b0.jpg\" width=\"500\" height=\"375\" \/><\/a>   <\/p>\n<p>Professor Philip Wadler takes the stage<\/p>\n<p>&#160;<\/p>\n<h2>Lambda Belief<\/h2>\n<p>&#160;<\/p>\n<p>Friday sessions began on the Scala and Functional language Track. I went to see <a href=\"https:\/\/qconlondon.com\/london-2012\/presentation\/Faith,%20Evolution,%20and%20Programming%20Languages:%20from%20Haskell%20to%20Java\" target=\"_blank\"><strong>Faith, Evolution and Programming Languages: From Haskell to Java<\/strong><\/a> with Professor <strong>Philip Wadler<\/strong> of Edinburgh University. What followed was short history of functional programming and mathematical logic, beginning with the <strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Gentzen\" target=\"_blank\">Gerthard Gentzen (1935)<\/a><\/strong> , who devised <em>Natural Deduction<\/em> and <em>sequential calculus<\/em>. <\/p>\n<p>Natural deduction was the idea that rules of logic come in pairs, with that it is possible to simplify Proofs \u2013 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.    <\/p>\n<p>Next, came the achievements of a certain <strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Alonzo_Church\" target=\"_blank\">Alonzo Church (1932)<\/a><\/strong>, 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 \u2013 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 <a href=\"https:\/\/en.wikipedia.org\/wiki\/William_Alvin_Howard\" target=\"_blank\">1980 William Howard<\/a> \u2013 <em><a href=\"https:\/\/en.wikipedia.org\/wiki\/Curry%E2%80%93Howard_correspondence\" target=\"_blank\">Curry Howard Isomorphism<\/a><\/em> \u2013 conceived the idea of partial functions calling another partial function in order to combine together a real function. <strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Haskell_Curry\" target=\"_blank\">Haskell Curry<\/a><\/strong> had discovered an artefact in the 1950\u2019s, called combinators and isomorphism. Howard was also influenced by Curry. The main type system used in Haskell is called <em>Hindley-Milner <\/em>type system, discovered in the mid-1970\u2019s. <strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Robin_Milner\" target=\"_blank\">Robin Milner<\/a><\/strong> wrote a seminal paper called <em>Polymorphic Types<\/em>. <strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Jean-Yves_Girard\" target=\"_blank\">Jean-Yves Girard<\/a><\/strong> derived <em><a href=\"https:\/\/en.wikipedia.org\/wiki\/System_F\" target=\"_blank\">System F<\/a><\/em> and <strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/John_C._Reynolds\" target=\"_blank\">John Reynolds<\/a><\/strong> found discovered <em>Type Interference<\/em> for the polymorphic lambda calculus. <\/p>\n<blockquote>\n<p>The great ideas are so great, that you discover them twice.<\/p>\n<\/blockquote>\n<p><a title=\"QCon London 2012 by peter_java_pilgrim, on Flickr\" href=\"https:\/\/www.flickr.com\/photos\/8268882@N06\/6983421431\/\"><img loading=\"lazy\" alt=\"QCon London 2012\" src=\"https:\/\/farm8.staticflickr.com\/7188\/6983421431_37ec78b072.jpg\" width=\"375\" height=\"500\" \/><\/a>     <\/p>\n<p>[R] Professor Philip Wadler, Edinburgh University and dressed in his <em>\u201cLambda-man\u201d<\/em> tee-shirt<\/p>\n<p>For the second part of this talk, Prof. Phil Wadler spoke at length on the influence of <strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Gottlob_Frege\" target=\"_blank\">Gottlob Frege<\/a><\/strong> (1879), who formalised mathematical quantifiers as the upside down A <em>\u201cfor all implication \u2013 assumptions<\/em>\u201d. It talked about John Reynolds (1974) \u2013 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.<\/p>\n<p>From the polymo<sub><\/sub>rphism, he introduced his own mark in history Odersky and Wadler (1997) \u2013 Pizza Parameteric polymorphism, which told the story of modern times, Igarashi, Pierce, and Wadler \u2013 <a href=\"https:\/\/www.cis.upenn.edu\/~bcpierce\/papers\/fj-toplas.pdf\" target=\"_blank\">featherweight Java<\/a>, Gosling, Joy, Steele, Bracha (2004) \u2013 Java 5, and Naftalin and Wadler (2006) \u2013 Java Collections<\/p>\n<p>The final part of the talk was about <a href=\"https:\/\/www.haskell.org\/haskellwiki\/OOP_vs_type_classes\" target=\"_blank\">Haskell: Type Classes<\/a>. 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.<\/p>\n<blockquote>\n<p>Lambda calculus is universal programming language.       <br \/>Lambda calculus is Omniversal<\/p>\n<\/blockquote>\n<p>&#160;<\/p>\n<p><a title=\"QCon London 2012 by peter_java_pilgrim, on Flickr\" href=\"https:\/\/www.flickr.com\/photos\/8268882@N06\/6983418013\/\"><img loading=\"lazy\" alt=\"QCon London 2012\" src=\"https:\/\/farm8.staticflickr.com\/7180\/6983418013_0e15614364.jpg\" width=\"500\" height=\"375\" \/><\/a> <\/p>\n<p>[L] Sadek Drobi and [R] Guilluame Bort of Zenexity, co-authors of the new shining star, The Play Framework<\/p>\n<p>&#160;<\/p>\n<h2>Let\u2019s Play<\/h2>\n<p>I went to the <a href=\"https:\/\/qconlondon.com\/london-2012\/presentation\/Non%20blocking,%20composable%20reactive%20web%20programming%20with%20Iteratees%20in%20Play2\" target=\"_blank\"><strong>Play Framework<\/strong><\/a> presentation: <a href=\"https:\/\/qconlondon.com\/london-2012\/presentation\/Non%20blocking,%20composable%20reactive%20web%20programming%20with%20Iteratees%20in%20Play2\" target=\"_blank\"><strong>Non blocking, Composable Reactive web programming with Iteratees in Play2<\/strong><\/a> with <strong>Guilluame Bor<\/strong>t and <strong>Sadek Drobi<\/strong>. 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 <em>one-request-per-thread <\/em>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. <\/p>\n<p>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.<\/p>\n<p><strong>Zenexity<\/strong> had to work around also the implementation of <font face=\"Courier New\">java.io.InputStream<\/font> and the read call, which will block the thread if there is no data. These methods block until input data is available. A <em>reactive model <\/em>had these characteristics 1) inversion of control, 2) the source controls the execution and 3) holds onto the control without loosing it.<\/p>\n<p>The architecture of Play Framework version 2.0 brings in the idea of composable streams and stream handlers <font face=\"Courier New\">Iteratees<\/font>.&#160; An <font face=\"Courier New\">Iteratee<\/font> 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 <font face=\"Courier New\">Enumerators<\/font>, which are all about producing streams of a data. Enumerators also have adaptors called <font face=\"Courier New\">Enumeratees<\/font>! <\/p>\n<p>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.<\/p>\n<p>&#160;<\/p>\n<h2>Bazaar<\/h2>\n<p>&#160;<\/p>\n<p>Off the beaten track, I went to a talk in the Working Distributed track. It was given by <strong>Ola Bini<\/strong> and was called <a href=\"https:\/\/qconlondon.com\/london-2012\/presentation\/Anarchy,%20Cooperation%20and%20the%20Bazaar\" target=\"_blank\"><strong>Anarchy, Cooperation and the Bazaar<\/strong><\/a>. This was a very good non-technical talk on the subject of open source software and its development. It delved into Eric S. Raymond\u2019s classic paper about the <em><a href=\"https:\/\/www.catb.org\/~esr\/writings\/homesteading\/\" target=\"_blank\">Cathedral and the Bazaar<\/a><\/em>. 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. <\/p>\n<p>I found this talk rather a fascinating diversion and emphasised the learning I have had to do with communication between individuals and teams. <\/p>\n<p>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. <\/p>\n<p>&#160;<\/p>\n<h2>Caching, Grids, and No SQL <\/h2>\n<p>The final talk of QCon London 2012 was <a href=\"https:\/\/qconlondon.com\/london-2012\/presentation\/Caching,%20NOSQL%20&amp;%20Grids%20-%20What%20the%20banks%20can%20teach%20us\" target=\"_blank\"><strong>Caching, No SQL and Grid: What The Bank\u2019s Can Teach Us?<\/strong><\/a> by <strong>John Davies<\/strong>. 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.     <\/p>\n<p>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    <\/p>\n<p>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 \u2013 all VMs on the same physical machine relied on the same hardware.&#160; <\/p>\n<p>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.<\/p>\n<p>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\u2019re 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:    <\/p>\n<p>Local \u2013 very fast, perfect for developing and testing<\/p>\n<ul>\n<li>Private Cloud \/ Grid <\/li>\n<li>Very secure \u2013 perfect for banks &amp; governments <\/li>\n<li>Very scalable but there is a slight latency <\/li>\n<li>Costly you have to invest in the physical boxes <\/li>\n<\/ul>\n<p>Cloud<\/p>\n<ul>\n<li>Pay for what you eat <\/li>\n<li>Extremely scalable <\/li>\n<li>Latency and security can be an issue <\/li>\n<li>Service provider license could be difficult in a competitive market (when the tide flows it affects all boats in the sea) <\/li>\n<\/ul>\n<p>Grid technologies<\/p>\n<ul>\n<li>GemFire <\/li>\n<li>Terracotta (Big Memory) <\/li>\n<li>GigaSpaces <\/li>\n<li>Coherence <\/li>\n<li>Neo4J <\/li>\n<\/ul>\n<p>Many other technologies overlap in area, predominately the caching side, these too are viable alternatives EHCache, Memcached, JCache.     <\/p>\n<ul>No SQL databases<\/ul>\n<ul>\n<li><strong>MongoDB<\/strong> is pretty popular, HBase with Hadoop and Cassandra occasionally too. Others are rarely seen by John Davies in his context and environments. <\/li>\n<li><strong>GemFire<\/strong> \u2013 originally an OOD, now has a pure Java implementation, recently acquired by <\/li>\n<li><strong>Terracotta <\/strong>\u2013 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. <\/li>\n<li><strong>GigaSpaces<\/strong> \u2013 originally the only viable implementation of Sun\u2019s 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 \u201cSpace\u201d, you can write something into a space, read it, take it, and be notified something changes. Perfect implementation of MASTER\/WORKER pattern. <\/li>\n<li><strong>Coherence<\/strong> \u2013 formally \u201cTangasol\u201d, 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. <\/li>\n<li><strong>Neo4J<\/strong> \u2013 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, \u201cfind all the friends of Sarah Plumber that are related to her Mother and over 25 years old.\u201d <\/li>\n<\/ul>\n<p>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.<\/p>\n<p><a title=\"QCon London 2012 by peter_java_pilgrim, on Flickr\" href=\"https:\/\/www.flickr.com\/photos\/8268882@N06\/6837296366\/\"><img loading=\"lazy\" alt=\"QCon London 2012\" src=\"https:\/\/farm8.staticflickr.com\/7196\/6837296366_d9556de699.jpg\" width=\"375\" height=\"500\" \/><\/a>     <br \/>[L] Sadek Drobi, co-founder and CTO of Zenexity, Paris, France    <\/p>\n<p><\/p>\n<h2>End Game<\/h2>\n<p>&#160; <br \/>I enjoyed my two days of work related <em>training<\/em> 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.<\/p>\n<p>Shout outs (in no particular order)<\/p>\n<ul>\n<li><strong><a href=\"https:\/\/smallshire.org.uk\/\" target=\"_blank\">Robert Smallshire<\/a><\/strong> &#8211; Dear Fellow, thank you very much indeed <\/li>\n<li><strong>Barbora Nasincova<\/strong> \u2013 Zero Turnaround <\/li>\n<li><strong>Simone Barbieri<\/strong> \u2013 application manager at BWin <\/li>\n<li><strong>Oliver White<\/strong> \u2013 Zero Turnaround <\/li>\n<li><strong>Baruch Sadogursky<\/strong> \u2013 JFrog Developer Advocate <\/li>\n<li><strong>Alex Blewitt<\/strong>&#160; <\/li>\n<li><strong>Liz Berstock<\/strong> \u2013 QCon <\/li>\n<li><strong>Yaov landman<\/strong>&#8211; JFrog <\/li>\n<li><strong>Chris Richardson<\/strong> &#8211; b <\/li>\n<li><strong>Floyd Marinescu<\/strong> &#8211; b <\/li>\n<li><strong>Professor Phil Wadler<\/strong>&#160; <\/li>\n<li><strong>Sadek Drobi<\/strong> &#8211; Xenevity <\/li>\n<li><strong>Guilluame Bort<\/strong> &#8211; Xenevity <\/li>\n<li><strong>Kresten Krap Thorup<\/strong> \u2013 Trifork <\/li>\n<li><strong>Aino Vonge Cory<\/strong> \u2013 QCon <\/li>\n<li><strong>Steve Freeman<\/strong>&#160; <\/li>\n<li><strong>Geeta Schmidt<\/strong> \u2013 QCon organiser <\/li>\n<li><strong>James Strachan<\/strong> \u2013 awesome talk <\/li>\n<li><strong>Michael Brunford Spall<\/strong> \u2013 Guardian <\/li>\n<li><strong>Alex Russell<\/strong> \u2013 I still want to get into HTML 5 \ud83d\ude09 <\/li>\n<li><strong>Adrian Cockcroft<\/strong> \u2013 Netflix <\/li>\n<li><strong>Gil Tene<\/strong> <\/li>\n<li><strong>Ola Bini<\/strong>&#160; <\/li>\n<li><strong>Rich Hickey<\/strong> <\/li>\n<li><strong>Barry Cranfield<\/strong> \u2013 London Java Community <\/li>\n<li><strong>John Davies<\/strong> \u2013 Incept 5 <\/li>\n<\/ul>\n<p>  <br clear=\"all\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#160; 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 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[112,21,75,69,67,31,57],"tags":[],"_links":{"self":[{"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/posts\/623"}],"collection":[{"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/comments?post=623"}],"version-history":[{"count":3,"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/posts\/623\/revisions"}],"predecessor-version":[{"id":626,"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/posts\/623\/revisions\/626"}],"wp:attachment":[{"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/media?parent=623"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/categories?post=623"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/tags?post=623"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}