Presentation: Development at the Speed and Scale of Google

January 9th, 2011 / Dhruba Bandopadhyay

Since I’ve never had the good fortune of being able to afford QCon (one day this will change) I appreciate the fact that InfoQ post QCon videos online for free albeit late. Recently I watched ‘Development at the Speed and Scale of Google‘.

Prior to watching this presentation I knew only what I had encountered in the wider industry and really could not have foreseen any of what I was about to watch. The tools that I use on a daily basis and the difficulties that impede me now both seem primitive and outdated in comparison to the progress that Google has made. The key point on the subject matter of this presentation is that it is not about development but what makes it possible to develop at the speed and scale of google: in this case – build and release engineering.

Java concurrency bug patterns

January 9th, 2011 / Dhruba Bandopadhyay

Rather randomly and on a legacy note – here’s a series of links on the subject of java concurrency bug patterns from both IBM DeveloperWorks and from Alex Miller at Pure Danger Tech both for my reference and yours. Most readers, I expect will know all of this, but if you don’t the list is worth reading. It’s also good to raise awareness of such concurrency bug patterns in general as a surprisingly large number of interview candidates fail to answer questions correctly in this area.

Java still #1

December 21st, 2010 / Dhruba Bandopadhyay

OracleTechNet have just posted: “New Tiobe Index is out – Java still #1, C# on the march”. Cool. It’s obvious that the first five are major players but the one that makes me curious is Python (Tiobe). I wonder what areas it’s gaining its popularity and adoption in. Objective C also appears to be making major strides but the single reason for that is obvious and this will be nothing but a steep upward trend.


Making Macros in CoffeeScript

December 9th, 2010 / David Padbury » lab49


JavaScript dependency management is a hot topic at the moment (see RequireJS, Dojo and StealJS). This got me thinking, why do we just treat JavaScript as dumb files to be served up to the client? Now that we have web servers that literally speak the same language, aren’t there greatly possibilities yet to be discovered? Can we write code that seamlessly merges the divide between client and server?

Clients like REST part 3

October 20th, 2010 / Computing Thoughts by Roger Rached

This post is the third one of a mini-series:

Clients Like REST part 1 Apache HTTP Commons Client
Clients Like REST part 2 Native J2SE API Client
Clients Like REST part 3 JAX-WS client API

I will now show you how to access REST services using the JAX-WS client API, but first let me explain the motivation behind this selection. After all JAX-WS is typically used with SOAP services and assumes that a WSDL resides on the server side, so why bother at all with JAX-WS when you can  use the JAX-RS client API to consume logically enough REST services? I think that there are quite a few situations where JAX-WS makes sense, and besides JAX-RS examples to access a REST service abound, so here is a list of possible reasons for wanting to use JAX-WS to access a REST service:

RHIPE – “Big Data” analytics made easy

October 20th, 2010

As I was browsing the Hadoop conference that was in town on October 12, 2010, I came across a session about utilizing Hadoop natively from R environment for statistical analytics of “Big Data”. After pausing for a few slides on the presentation (as I was going to another one actually) – I experienced déjà vu, as I discussed such capabilities in an email I wrote internally at the Lab couple of years prior.

Long story short – one of our clients asked for advice on how to achieve fast/near real-time analytics of Level-2 tick data from a large exchange – a 400 TB/year (at the time) stream – with 3+ years of history. Sounds like a tough, yet in-fact commonplace problem in exchange-traded product analytics.

Clients like REST part 2

This post is the second one of a mini-series:

Clients Like REST part 1 Apache HTTP Commons Client
Clients Like REST part 2 Native J2SE API Client
Clients Like REST part 3 JAX-WS client API

This post will show you how to access the same service – defined through the interface IAutoStatService – using the native J2SE API and in particular how to take full advantage of the HttpURLConnection class. I think that this is a pretty powerful concept: You can access a web service from a Java client without a 3rd party web-service library and without the need to write some type of parser.

Interview with Kalani Thielen: Trends in Programming Languages

September 27th, 2010 / North Horizon » Lab49

Last week I interviewed colleague Kalani Thielen, Lab49′s resident expert on programming language theory. We discussed some of the new languages we’ve seen this decade, the recent functional additions to imperative languages, and the role DSLs will play in the future. Read on for the full interview.

DM F#, Clojure, and Scala are all fairly new and popular languages this decade, the former two with striking resemblance to OCaml and Lisp, respectively, and the lattermost being more original in syntax. In what way do these languages represent forward thinking in language design, or how do they fail to build upon lessons learned in more venerable languages like Haskell?

JavaOne 2010 – Developing Composite Applications for the Cloud with Apache Tuscany (SCA)

September 25th, 2010 / Computing Thoughts by Roger Rached

A great take on a great technology, SCA (Service Component Architecture), was given by Jean-Sebastien Delfino (IBM) and Luciano Resende (Shutterfly). Can Tuscany (a SCA  implementation) shield you from the complexities of component assembly/component integration/deployment/inter-component communications/client protocols/… in the Cloud? It turns out that many of these problems are not specific to the Cloud, they apply to any distributed environment, but the live demo made it a point to show how SCA works in a Cloud.

First they quickly reviewed the SCA goals:

  1. Abstract out the APIs, protocols and QoS (as in addressing, authentication levels, etc…) that define a service

JavaOne 2010 – Keeping your options open if the Cloud is not

September 23rd, 2010 / Computing Thoughts by Roger Rached

This was one of the best presentations at JavaOne, probably due to the oratory talents of Doug Tidwell.

Doug presented libcloud and the Simple Cloud API, respectively a common library for interacting with the popular cloud server providers and controlling their VMs (reboot/create/destroy/list/images) and a  common interface for the three most common cloud application services (File Storage, Document Storage and Simple Queues). The whole idea is to code to those common APIs rather than using the vendor’s own API directly in an effort to increase portability (the ability to move a piece of code from one vendor API to the other) and interoperability (the ability to run the same piece of code across multiple vendors’ APIs). Common sense dictates that portability is harder to achieve for vendor APIs that provide the most functionality. Here is a list of some vendors for which the common interfaces were built:

JavaOne 2010 – Effective XML: Leveraging JAXB and SDO

September 22nd, 2010 / Computing Thoughts by Roger Rached

Blaise Doughan (Team lead for the TopLink and the EclipseLink JAXB & SDO projects) gave a very informative talk comparing and contrasting two mapping technologies: JAXB and SDO. By the way let me make it clear that mapping and binding are two distinct things: In this context, a mapping framework maps a Java Class to an XML Schema or an XML Document (if a schema is not available) and vice versa while a binding frameworks maintains a live connection between the Java Object and the XML document, and that’s a very powerful concept (I know it’s a simplistic defintion, Mark Hansen gives a more detailed description in his book SOA Using Java Web Services). JAXB is a mapping and a binding framework, SDO is a mapping framework.

JavaOne 2010 – Enabling Transformation Through the Cloud (a non-IT perspective)

September 22nd, 2010 / Computing Thoughts by Roger Rached

This round-table gathered four KPMG consultants (Steve Hill, Egidio Zarello, John Cummings and Mark Foreman) to discuss the adoption of the Cloud from a business perspective. A few good points were made during the hour that the roundtable lasted, although these points could have easily been delivered in half an hour without any loss of information.

JavaOne 2010 – Patterns for modularity

September 22nd, 2010 / Computing Thoughts by Roger Rached

This BOF featured Jaroslav Tulach, founder of NetBeans,along with Anton Epple and Zoran Sevarac. It was not really about new technology but about formalizing the approach and terminology for building modular systems. The talk targeted both desktop and server developers. The premise was that OO alone did not deliver on code-reuse hence the need to apply patterns, similar to the GoF patterns, to modules.

The speakers did make it clear that patterns exist within a context, i.e. some patterns might not be applicable to a given language, for example, since that language might already have constructs to provide the solution to the common problem addressed by the pattern; having said that the discussion centered exclusively on Java.

JavaOne 2010 – OpenJDK BOF

September 22nd, 2010 / Computing Thoughts by Roger Rached

The OpenJDK BOF was an informal Q&A session, attendees were free to ask JDK-related questions and Kelly O’Hair, Dalibor Topic and Mark Reinhold were there to answer. I think that this setup was appropriate for such a sensitive topic given the degree of anxiety of the Java community and probably the state of mind of the former Sun employees themselves. I will try to capture the most relevant  Questions and Answers.

  1. Will the JRockit VM get open-sourced? No, the plans are to keep HotSpot open-sourced as Open JDK 7 and add to it some of JRockit unique features by mid 2011.

JavaOne 2010 – Enterprise Service Bus, Lessons from the field

September 21st, 2010 / Computing Thoughts by Roger Rached

Good presentation about the ESB adoption for a major web site, The two presenters, Earl Nolan and Monal Daxini, were eager to share their pain points during the adoption of Mule as the ESB (Enterprise Service Bus). Unfortunately Mule was the only ESB discussed, but during the Q&A the presenters admitted that Spring Integration would have been considered for a smaller-scale effort. They did not look at Apache ServiceMix because three years ago it was not quite as stable or feature-rich as it is today, so were they to evaluate the offerings today ServiceMix might have been adopted.
They started off by (aptly) saying what ESB is not: ESB is not JMS or a messaging middleware platform and ESB is not a heavy web services stack. They (also aptly) gave a simple definition of an ESB: A solution for integration problems. Put it simply, any time 3 or more applications need to integrate you have the potential for an ESB adoption. The work of Greg Hohpe was cited quite often during the course of the talk.

JavaOne 2010 – JAX-WS.Next: Future Directions and Community Input

September 21st, 2010 / Computing Thoughts by Roger Rached

I thought that I should mention an interesting BOF: JAX-WS.Next: Future Directions and Community Input. JAX-WS, as you know, is the worthy successor of JAX-RPC, improving on it in many ways and it has become increasingly important since most app servers are supporting web profiles. It is pretty much the standard way of doing web services in the Java EE/light EE world.
This session presented many ideas being explored by Sun/Oracle engineers in the RI v2.2.2, most notably how JAX-WS will now take advantage of the Servlet 3.0 spec (1 request can be serviced by many threads) and the wsdl pluggability (what you see on Tomcat 7 would become portable to other containers). It was stressed quite a few times that the ideas discussed in this BOF still need final approval from the JCP.
Some of the features being proposed:

JavaOne 2010 – KeyNote

September 21st, 2010 / Computing Thoughts by Roger Rached

I decided to attend the JavaOne KeyNote hoping to hear some important announcements even if the price to pay was pretty steep; you do have to sit after all in a huge auditorium and stoically listen to executives going through an incredibly boring, extremely well rehearsed (to the point of being comically predictable) and amazingly unassuming (a 5-minute intro concocted by Oracle lawyer warns you that nothing in this session should be considered as a commitment, rather these are just forward looking statements and all the assurances about deliveries/roadmaps/future versions are nothing but hopeful wishes) presentation. But there were a few points that could be taken away from this keynote.
So let’s start with the different JVMs: It was made clear that Sun HotSpot was the JVM of choice and actually a JRockit engineer demonstrated a “flight-recorder” type of tool that records the past n seconds of all events in your VM so they can be replayed and analyzed before a dramatic event. The JRockit Flight-Recorder itself targets the Sun HotSpot as well as the JRockit VM. You get the feeling that the two will converge and that HotSpot has the edge.
On the much anticipated JDK 7 issue Oracle promised two releases, one in 2011 and one in 2012, but again these dates should be taken with a grain of salt given all the legal disclaimers. Three projects were prominently listed: Project Coin (to increase the productivity), Project Jigsaw (to modularize the JDK which has grown too huge – startups, for example, would be faster) and Project Lambda (to add Lambda expressions, aka closures, to the Java language).

JavaOne 2010 – about Mission-Critical Enterprise/Cloud Applications

September 20th, 2010 / Computing Thoughts by Roger Rached

I attended this morning Mission Critical Enterprise Cloud Applications presented by a cheerful Eugene Ciurana; the presentation can be found on his site and Eugene managed to make it entertaining. I will not repeat here the contents of the presentation by I will try to capture its spirit and what made it particularly interesting. Eugene was not really after explaining what a Cloud is or why you should be adopting the Cloud in the enterprise, rather he focused on the classical usage of the Cloud in a hybrid architecture. In the hybrid case, part of your application is pushed to the cloud and part is hosted in your data center. The cloud could take over the data center but that’s not necessarily happening in the immediate/medium term future for reasons outlined here:

Going to JavaOne 2010

September 20th, 2010 / Computing Thoughts by Roger Rached

Lab49 is at JavaOne 2010; I will be attending quite a few sessions from the Core Java Platform, Enterprise Service Architectures and the Cloud and Java EE Web Profile and Platform Technologies. Amazing track names… Anyway, it should be quite interesting, I will try to cover as much as I can in terms of sessions (technical presentations, keynotes and vendors’ offerings).

It’s Monday morning and the conference has already kicked in, I met a guy from Primavera who kindly gave me directions and explained that his software is the most popular project management software in the UK, they have been acquired by Oracle and so they deploy on WebLogic only, is this a sign of things to come?

Clients like REST part 1

September 16th, 2010 / Computing Thoughts by Roger Rached

I do appreciate the versatility offered by REST-style web services when designing clients, and that’s precisely what I will be discussing in this series of posts. There is a lot to be said about a web-service approach such as REST where the client can use pretty much any HTTP-based API to retrieve/update/delete data. I will take you through the steps of defining a server-side Java class, use REST annotations to turn it into a web service and show you four ways to access such a service: Through the Apache Commons HTTP API, through the native J2SE API, through the JAX-WS API and finally through the Spring REST Client API. A few things to note: