As I mentioned in my previous post, I started to play with Amazon Web Services, in particular its APIs. As part of the learning process, I tried to invoke different APIs to familiarize myself with their usages.
Most of the APIs worked as expected without much surprise until I called describeSnapshots() method to list all the volume snapshots under my account. Because I hadn’t created any snapshots, I did not expect to see any snapshot returned. But my code actually got me 10,933 volume snapshots. Read more...
As a software professional using Java since its very beginning, I have been following the case regarding Google’s using Java APIs in its Android OS. I don’t want to repeat what has happened so far because you can find these updates by searching the Internet. All I want to say is that the case is pretty educational not only on the technology itself but also on the legal side like patents, copyright. Read more...
With the gradual adoption of cloud computing, more companies are coming to the cloud service business. With so many new players in the game, how can you stand out in the competition as a service provider? In a marketplace already dominated by companies like Amazon, do you even have a chance?
Yes, you do! Differentiate.
I recently read a book, “Differentiate or Die: Survival in Our Era of Killer Competition” by Jack Trout and Steve Rivkin. Although it mainly talks about differentiation ideas in traditional businesses, it does offer good insights that can be applied in the cloud service business as well.
Before we get to cloud services, let us take a look at what Jack and Steve say about differentiation. They first discuss some commonly held misconceptions about differentiating ideas: Read more...
Amazon released its SDK for Java last month. It’s a complete set of APIs that cover almost all the services from EC2, S3, SQS, RDS to SimpleDB. Overall Amazon has done a consistent job, but the SDK is NOT really object oriented. And that I think is critical for higher development productivity.
Structure of the SDK
Before explaining why it’s not quite there, let’s take a look at the structure of the API itself. The SDK includes many packages. For each service, you find two or three packages: basic, model, and possibly util package.
In each of the basic packages you can find the two interfaces, and two implementation classes. Let’s pick EC2 as a sample here. The AmazonEC2 and AmazonEC2Async are two interfaces and implemented by AmazonEC2Client and AmazonEC2AsyncClient respectively. More methods are defined in the synchronous than the asynchronous versions with the majority of them overlapping with similar method names.
AllocateAddressResult allocateAddress(AllocateAddressRequest allocateAddressRequest)
Future<AllocateAddressResult> allocateAddressAsync(AllocateAddressRequest allocateAddressRequest)
The first two versions wait and get you results upon return. The third version doesn’t wait and gets the result later. Read more...