Archive

Archive for March, 2012

Ubuntu ActiveMQ Initialisation Scripts

March 30th, 2012 Comments off

Recently, I have been working with Ubuntu in a Virtual Box VM and setting up ActiveMQ for testing. I wanted to create a VM with an already running ActiveMQ as a service, whenever I started it. In order to do this, I set up ActiveMQ as a Linux intialisation service. I installed ActiveMQ first by following the very helpful blog entry here, which was a little out of date. It only explained how to create an ActiveMQ Init.d if you have Sys V Linux/Unix machine. So I went about customising the information for a Ubuntu machine, and the results are now here. Here are my scripts, the first is located at /home/activemq/activemqstart.sh. This script launches the service and is  owned by the Linux user activemq.

</pre>
#!/bin/bash # Start ActiveMQ if [ ! -f ${HOME}/activemq.env ]; then echo "Cannot read activemq.env" 1>&2; exit 99 fi . ${HOME}/activemq.env ${ACTIVEMQ_HOME}/bin/activemq start # fini
<pre>

Here is the script file /home/activemq/activemqstatus.sh, which shows the administrator the status of the service.

</pre>
#!/bin/bash # Probe ActiveMQ if [ ! -f ${HOME}/activemq.env ]; then echo "Cannot read activemq.env" 1>&2; exit 99 fi . ${HOME}/activemq.env ${ACTIVEMQ_HOME}/bin/activemq status # fini
<pre>

Here is the script file /home/activemq/activemqstop.sh, which allows the administrator to halt the service.

</pre>
#!/bin/bash # Stop ActiveMQ if [ ! -f ${HOME}/activemq.env ]; then echo "Cannot read activemq.env" 1>&2; exit 99 fi . ${HOME}/activemq.env ${ACTIVEMQ_HOME}/bin/activemq stop # fini
<pre>

Here is the environmental set-up script /home/activemq/activemq.env. Of course, if you wanted to, you could put this configuration elsewhere like in a .bashrc script. For my purposes, I wanted to refactor out the location of both components.

</pre>
: ${JAVA_HOME:=/usr/lib/jvm/java-6-sun-1.6.0.31} : ${JDK_HOME:=/usr/lib/jvm/java-6-sun-1.6.0.31} : ${ACTIVEMQ_HOME:=/opt/apache-activemq}
<pre>

Here is a version of ActiveMQ control script in /etc/init.d/activemq, which owned by the superuser root.

#!/bin/bash
#
# activemq       Starts ActiveMQ.
#
#
### BEGIN INIT INFO
# Provides:          activemq
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     1 2 3 4 5
# Default-Stop:      0 1 2 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by Apache Active MQ.
### END INIT INFO

# Source function library.
## . /etc/init.d/functions

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

[ -f /home/activemq/activemqstart.sh ] || exit 0
[ -f /home/activemq/activemqstop.sh ] || exit 0
[ -f /home/activemq/activemqstatus.sh ] || exit 0

RETVAL=0

umask 077

start() {
       echo -n $"Starting ActiveMQ: "
       su -c /home/activemq/activemqstart.sh activemq
       echo
       return $RETVAL
}
stop() {
       echo -n $"Shutting down ActiveMQ: "
       su -c /home/activemq/activemqstop.sh activemq
       echo
       return $RETVAL
}
status() {
       echo -n $"Probing status of ActiveMQ: "
       su -c /home/activemq/activemqstatus.sh activemq
       echo
       return $RETVAL
}
restart() {
       stop
       start
}
case "$1" in
 start)
       start
       ;;
 stop)
       stop
       ;;
 restart|reload)
       restart
       ;;
 status|probe)
        status
        ;;
 *)
       echo $"Usage: $0 {start|stop|restart|status|probe}"
       exit 1
esac

exit $?
# Fini

I will assume that you are familiar with creating Linux users and setting file owner and group permissions. Finally, I installed the new service with this following command:

sudo update-rc.d activemq start 20 1 2 3 4 5 . stop 80 0 1 2 6 .

This command installs the service for single-user, multi-user, network configured and display configured run-levels. HTH. Al Coda. ;-)

Categories: Administration, Education, Linux, Script, Ubuntu Tags:

QCon London 2012 Part 2

March 18th, 2012 Comments off

 

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.

 

QCon London 2012

Professor Philip Wadler takes the stage

 

Lambda Belief

 

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 HowardCurry 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.

QCon London 2012

[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

 

QCon London 2012

[L] Sadek Drobi and [R] Guilluame Bort of Zenexity, co-authors of the new shining star, The Play Framework

 

Let’s Play

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.

 

Bazaar

 

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

Cloud

  • 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)

Grid technologies

  • GemFire
  • Terracotta (Big Memory)
  • GigaSpaces
  • Coherence
  • Neo4J

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.

QCon London 2012
[L] Sadek Drobi, co-founder and CTO of Zenexity, Paris, France

End Game

 
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


QCon London 2012 Part 1

March 16th, 2012 Comments off

 

I was fortunate to attend the QCon London 2012 conference, this year. Firstly, I was delighted to be invited as a speaker and then when that did not pan out, secondly, they still let me in as VIP guest. I would like to special thanks the QCon / Trifork staff for the awesome gift. My busy schedule granted allowed me to attend just two days, the Thursday and Friday.
Thursday started with Rich Hickey’s Simple Made Easy key note, in the huge Fleming room, for a British and International audience. He had already performed this talk at the Strange Loop conference in the USA, which my American friends said was “an awesome talk”. I will concur with them here for the content, which I had already viewed with InfoQ videos. In person, I felt it could have even had more notes and be improved, with exactly how can you simplify your software development.

 

QCon London 2012

 

Progressive Architectures

What was my first talk of the QCon London? The answer was Progressive Architectures at the Royal Bank of Scotland in the Mountbatten Room, which was splendidly at the top of the Queen Elizabeth II building in the Westminster, which provided terrific views of the London Eye, Westminster Abbey and the Houses of Parliament. I found some of the ideas of this RBS talk a little bit only appropriate to banks. The ODS storage had already discussed in previous years at QCon London. However, this talk did had multiple speakers, who shared the platform by taking turns to speak. The manager laid the foundation of business, front office architecture, the challenge of new technology in financial services, such as FPML, AMPQ and the so-called Race to Zero [latency] – which is as much oxymoronic phrase as there ever was, rather like saying, “let’s race to infinite!”. The talk did focus on Hadoop Distributed Filing System, and moving away from message based architectures. Actually, I found Ben Stopford just started to get into interesting architecture, with some explanation around Big Data and Big Database, and also Oracle Coherence, but then I had misplaced my mobile and I, immediately, had to rush off and find it. Ah well! My impressions of the talk was a little bit aloof for the audience.

 

Guarding For Inevitable Failure

Thanks to the Las Receptionistas of QCon, on the fifth floor, I connected with my beloved mobile phone again, to much relief, because I thought that I was done for. The next talk was Architecting for Failure at the Guardian.co.uk , which was I thought was much more interesting than the RBS talk. The speaker did a splendid job at persuasion of the evitable fact that all systems are going to fail. Michael Brunford-Spall implored us to design well in advance therefore to support recovery from failure. Architecture of applications in the future need to deal with mitigation, availability and robustness.

Television Ad

I found it rather quite amusing that Guardian architecture was once based on three-tiers. They had tried Spring Framework, Hibernate and web application server.

By the way, I was amazed by the current television ad for the Guardian featuring The Three Little Pigs. It does give a sense of where this architecture of content management system fits in the business, ideas and the function

 

 

Load Balancers –> Apache Server –> Load Balancer –> Other Services

 

Unfortunately they could not scale a relational database this way against load balancers. So the Guardian had two databases based on a redundant architecture mirrored twin data centres. These were the statistics:

  • Serves 3.5m unique daily browsers
  • Over 1.6m unique pieces of content
  • Supports hundreds of editorial staff
  • Create articles, audio, video, galleries, interactive sub-sites, micro-sites

The Guardian rightly discovered their biggest drawback, that their entire architecture was a massive content management system (CMS), which was monolithic. In order to get around this lack of scalability, they introduced Micro-Apps, separation of systems, SSI-like [Server Side Includes] technology and also they deliberately focused on communications with HTTP protocol for all of these disparate internal systems.

The benefits of this re-architecture from monolithic to a polylithic was that they had lots of small simple applications, which meant they could code, release, test in isolation. It also allowed them to cache data and configure responses for each of those micro applications.

The drawbacks were increased architectural complexity from a monolith to an operational cost. The Guardian needed a huge cache (memcached 30GB of static HTML), context. It was not easy to find how what is cached (peek into the cache) without disturbing the data and retrieving the data.

The latency of micro-apps was their biggest problem. For the Guardian, failure was not a problem, but slowness was a problem (caching terminology if-stale-while-revalidate?). The reason was that they could afford JVM Garbage Collector pauses (full and partial) and simultaneously processing of incoming message. In the time that the GC acted to recycle memory, in a collection, and especially in a full GC [stop the world], thousands of messages were still being received. These incoming message represented a large queue of memory allocations, which would be created as new request objects pending after the garbage collector had finished, which conspired to produce a classic hysteresis loop problem. Performance headache at peak times!

Guardian also had to face, what it called Emergency Mode situations. They realised that dynamic pages were expensive to created, and they also had to deal with peak news traffic, which was often unpredictable. These social epidemic new stories were usually measured against small subset of functionality, which rarely could be predicted beforehand. One page was doing 2000 requests per page last year 2011 (an Indonesian cute rat that happened to be three foot long). The Guardian was a large dynamic page resource, they realised their architecture had an infrastructure problem, and a content problem. Dynamicism was a really feature, a so-called nice-to-have, but they knew sometimes speed was very important. Emergency mode was conceived for servicing pressed pages, which were repopulated from a full page cache, and converted into temporary static files. They traded dynamicism for speed with the knowledge that “Users do not mind if the news is slightly delayed for a minute or so”.

Here are some other salient points, of this interesting talk:

  • Cache by URL
  • Cache – what’s important
  • Content – when modified
  • Navigation – we just go around the site every 2 weeks then cache them.
  • Monitoring is the most important thing you can do on the site
  • Error detection – What has gone wrong?
  • Error detection – Where did it go wrong?
  • Error analysis – How is it going wrong?
  • Aggregate stats
  • Provide Automatic switches
  • Create Release valves in the architecture
  • Provide an Emergency mode
  • Provide an Database off mode

    Camel and Clouds

    Riding the Camel into the Cloud was my expected highlight of the day before the conference. James Strachan did not disappoint at all. I found it a very nice introduction into Camel the enterprise integration framework. To start with, Mr Strachan, explained that enterprise integration is hard and referenced the popular Enterprise Integration Pattern books, such as Gregor Hohpe and Bobbi Woolf’s classic tome.

    He explained that Apache Camel http://camel.apache.org/ is an open source integration framework based on the known enterprise integration patterns. It’s small, it’s simple and it’s lightweight. He showed us some fluent language programming code for a MessageFilter. Camel is essentially based on URI reference, in fact lots of URI, endpoints, and also active components. Strachan said currently there are well over 120+ Camel components, which can talk to just about any hardware, technology and if there was not a component available, you can write your own component. http://camel.apache.org/components/

    Strachan digressed into another project very briefly, Apache MINA, which useful for driving highly scalable networking applications over UDP / TCP and NIO. Camel Endpoints were just names, logical names and that Camel prefered convention-over-configuration. URI were resolved by asking the component to resolve the implementation. Here is an example:-

       1: from(“activemq:topic:Quotes”).filter()

       2:     .xpath(“/QUOTE/product = ‘widget’”)

       3:     .to(“mqseries:WidgetQuotes”) 

     

    Of course, this would be stored in a Java file.

       1: public class MyRouteBuilder extends RouteBuilder { 

       2:     public void configure() { 

       3:         // Filter xml message quote which are widget products 

       4:         from(“activemq:topic:Quotes”)

       5:             .filter()

       6:             .xpath(“/QUOTE/product = ‘widget’”)

       7:             .to(“mqseries:WidgetQuotes”); 

       8:     } 

       9: } 

     

    In Scala, which Camel supports with a Domain Specific Language, it looks very concise:

       1: “direct:a” when( _.in == “</hello/>” ) { to(“mock:a”) } 

    Or in the longer style to show the actual closures.

       1: “direct:a” when{

       2:     (argument) => argument.in == “</hello/>” 

       3: } 

       4: { 

       5:     to(“mock:a”) 

       6: } 


    How does one use this in a program? Here is how:

       1: CamelContext context = new DefaultCamelContext(); 

       2: context.addRoutes(new MyRouteBuilder()); 

       3: context.start(); 

     

    Camel attempted to hide all the middle ware API by creating annotations like @XPath and @Header. By default, Camel, could use the Spring Transaction Manager e.g. Spring JMS Transaction, transaction is the location of the endpoint.


    James Strachan recommended the following books, namely: Camel in Action and Active MQ in Action as well as his own website http://www.fusesource.com/ for an all encompassing IDE

    Finally, in the last 10 minutes of his talk, we got the part about visualisation and cloud. He mentioned the beginning of Cloud, when we just had operating systems, 50 years ago until the middle of 1990s, then we suddenly had virtual processes (JVM/.Net/ LLVM). We then created application servers, then we had virtualisation of the hardware, now we have clouds, in the future James postulated about multi-clouds(!?).

    He said that Cloud changes the dynamics of scales, going from 2 machines to a 1000 machines is now distinctly possible, if you have the expenditure, and if, of course, it makes business sense. In today’s new cloud and virtualised world, we could no longer wire names with hard-coded IP addresses, port numbers, host and domain names. We were going to have to be more dynamic than that for flexibility, availability and extensibility. We were demanding now Loose coupling! Messages worked best when the infrastructure and architecture was build with loose coupling – both time and location!

    But rhetorically James Strachan asked a delicate question, what if you can’t [do this now]? Because with virtualisation and cloud computing, the sheer fact of discovery, load balancing & coordination could be hard to build for your organisation. You may only need to connect to the message broker and that is what you should care about. In a cloud environment, systems come and go, because of elasticity. You can send messages to other systems, even if there are not there.


    So like many cloud providers, James Strachan introduced his own product http://fuse.fusesource.org/fabric/ Github , opensource PaaS, Apache 2.0, “a simple framework for running on lots of machines” – FuseFabric.

    • Registries for configuration, runtime and dynamic provisioning cloud
    • Zookeeper is great for geographic clustering
    • Always check for duplicates
    • Transactions begin at the consuming component, commit at the end of process (or rollback)
    • Prefer big transaction boundaries to optimise the wait


    James Strachan was asked about Camel in comparison with Spring Integration. He said from 30,000 feet that the two frameworks are conceptually similar. Camel works with Spring, this is the advantage. Camel is more focused on DSL. When you run the Camel route you can inspect the channels, raising the abstraction level. The biggest difference is the community involvement, camel has 100’s of components written. Camel has a component for Spring Integration 2.0.


    I found his answer interesting as I have now some experience with Spring Integration. I think if you want to have an integration that is very close to Spring Framework, then you might lean towards Spring Integration, especially if you want to have configuration in XML. On the other hand, writing a Domain Specific Language in Java or Scala is slight attraction, if you can wire an integration in a dynamic language like  Groovy, JRuby or Clojure that may be a boon for integrators. The consultants classic answer as always is, it depends on your situation and circumstance.

     

    QCon London 2012

     

    To Be Lock Free or Not


    The final talk of Thursday, was  a sell out. I mean that Real Logic accelerating software: Lock-Free algorithms way oversubscribed. Michael Barker and Martin Thompson started by talking about modern hardware – memory is very hierarchical – Intel Nehalem

    Access to memory was outline in terms of today’s speed:


    Register < 1ns

    L1 ~4 cycles ~1ns

    L2 ~12 cycles ~3ns

    L3 ~45 cycles ~15ns

    Sandy Bridge loaded and stored addresses on different execution units ports – double the speed Divide ops were still expensive, because it stops all of the other executions units in the CPU.


    This talk was very much involved, and it was best to see all of it live. I think performance tuning stuff, the good talks are best seen with the presenter discussing the ideas. I think I will leave you with an outstanding quote:


    “The most amazing achievement of the computer software industry is its continuing cancellation of the steady and staggering gains made by the computer hardware industry.”

    - Henry Peteroski

    Categories: Uncategorized Tags:

    QCon London 2012 Philip Wadler Answers “What is a Monad?”

    March 9th, 2012 Comments off

    Today, I am at the final day of the QCon London 2012 conference in partuculary in the Scala and Functional Languages track.

    Philip Wadler gave an excellent presentation on functional programming and his belief about lambda calculas, mathematical formal logic and an advanced computer science. At the end of his talk, there was a lot of people who stayed behind for question answers. Of course, one of the audience members asked the proverbial question: “What is a Monad?”

    Here is Professor Wadler, University of Edinburgh, best distinguished answer to this question?

    e a

    Stayed tuned for a full report on QCon London 2012 ;-)

    Devoxx 2011 European JUG Leaders BOF Video

    March 1st, 2012 Comments off

    I really apologise for being very late with this. Sorry about that. However, the European JUG Leaders BOF Video from Devoxx 2011 is finally here in all of its glory.

    Enjoy for real now Winking smile

     

     

    Plus there is a more friendly URL http://vimeo.com/peterpilgrim/devoxx11-europeans-jug-leaders-bof


    PS: There JUG leaders here from North and South America, Africa and around the world.

    Categories: community, Conference, Devoxx, Java, JUGS, Leaders, Users Tags:

    Looking Forward to QCon London 2012

    March 1st, 2012 Comments off

    As I write this, today is 29th February 2012, a leap year and day. Tomorrow will be first day of March, which also the same month that QCon London 2012 takes place. I was due to give an updated JavaFX tutorial, on the Tuesday university, but it did not work out in the time. I still will be making an appearance on Thursday 8th March and Friday 9th March

    If you still want to register for this conference, then go to register with QCon London with a special discount code PILG100, which it is my pleasure discounts and save you £100.
    On the Thursday, I will be going to James Strachan‘s talk Riding Camel into the Cloud. I am looking forward to the functional language Friday, which features The Play 2.0 Framework, rewritten in Scala. This is a talk from the horse’s mouth yet again, by Guillaume Bort and Sadek Drobi, who created this simpler web framework, which surprisingly is not based on Java EE or Servlet. 
    I will see you there, then, next week ;-)
    (Here is yet another entry written under Ubuntu and Blogilo. The posterised photo is I holding my snowboard in Kaprun, Austria, 27 February 2012 )

    Categories: community, Conference, qconlondon, technology Tags: