AWS Technology Centre Blog

Musings on interesting stuff

Live on Azure

clock February 25, 2010 01:17 by author richard.prodger

It's been a busy week with the UK launch of Azure. We've been busy working with Microsoft on briefing the technical press, attending the launch of the Cloud Circle and writing articles for magazines. The momentum is really starting to pick up as awareness of Azure spreads. A number of potential customers are getting interested in the free Azure Assessments that we are offering in conjunction with Microsoft. For more info, download the flyer(162.74 kb).

The following pictures were taken at the Cloud Circle launch event last night at the Kensington Roof Gardens. From left to right, me, David Gristwood (Microsoft), Dan Scarfe (DotNet Solutions) & Rob Fraser (RiskMetrics). We have asked Dan to shave his head so that he doesn't look out of place in the future.Wink 



AWS on MSDN PodCast

clock February 10, 2010 00:49 by author richard.prodger

David Gristwood and Eric Nelson decided to record a podcast talking about what they've been up to and how Microsoft UK has been helping early adopters like us in using deep dive labs, workshops and training. They've also have a stab at describing the Windows Azure Platform in 1 minute (Eric hopelessly overrun by 100%) and they finish with an interview between David, Rob and me. As an early adopter of Azure, we try to give an insight into the benefits they we've seen.

Download the podcast here

Subscribe to MSDN podcasts on iTunes here

Rich.



No sunshine in the desert!

clock January 28, 2010 04:24 by author richard.prodger

Had a great trip to Phoenix, Arizona last week. The weather was terrible, the worst for 40 years. We had a whole years rainfall in 2 days and 6 feet of snow up the road in Flagstaff. This is not what you expect from the desert! The reason for the trip was 2 fold. Firstly, it was to attend the Iridium Worldwide Partner Conference. AWS is an Iridium Value Added Developer. We have been involved with Iridium for a number of years and worked with them on a number of applications in the location based services space.

On Friday, Iridium hosted the inaugural meeting of the ProTECTS Alliance. ProTECTS (Promotion of Two-way Emergency Communication and Tracking Systems) was founded in September 2009 to advocate the rapid and orderly adoption of standards for duplex satellite based location, tracking and messaging technologies, with a focus on the challenges faced by first responder and search-and-rescue (SAR) communities. More than 20 companies were in attendance, from as far afield as New Zealand, the UK and South America.
 
The initial presentation was made by Chris Hoffman, RTCM Board of Directors and Chairman of the RTCM SENDS (Satellite Emergency Notification Devices) Committee. This committee is charged with defining the operational requirements of future devices. This was followed by a presentation from Lieutenant Commander Kathy Niles, SARSAT Liaison Officer, U.S. Coast Guard Headquarters.  Kathy explained the challenges they face in dealing with a multiplicity of alerts from a wide variety of sources and how the use of two-way satellite devices could significantly reduce false alerts and provide additional and relevant information for the SAR community.
 
The presentations were followed by an open forum to discuss the next steps in the formulation of standards.
 
It is clear to me that more work needs to be done to identify the requirements of the SAR community. The recent emergence of low cost satellite communication devices will inevitably mean more SAR alerts, with many more being false alerts. With the constant demand on resources, establishing protocols and standards for these devices will help to reduce the burden on the already over-stretched services. This is a great opportunity for companies such as AWS to provide a framework for the collaborative development of industry standards and ensure interoperability with first responders and SAR authorities.

It was great to catch up with the Iridium guys and meet some new friends.



Windows Azure: Lessons Learned

clock January 1, 2010 22:06 by author richard.prodger

Following on from my last post, Ben Riga and I had an opportunity to talk about the work we have been doing on our Azure hosted Location Based Services platform, specifically, the sea safety system (MOB Guardian) for the UK Lifeboat service (RNLI) that sits on it. It was an opportunity to share our thoughts on how Azure and specifically, the AppFabric Service bus, 'came to the rescue'.

Check out Ben's blog entry in full or the Channel 9 post.

 



PDC09 - How was it for you?

clock January 1, 2010 21:41 by author richard.prodger

I met with Ben Riga, Platform Advisor on the Windows Azure Platform Team at PDC 2009 recently. Ben has been helping David Aiken and the Azure team spread the word. Ben had arranged for us to share our thoughts on PDC 2009 with Rob Fraser of the Risk Metrics Group. The following video is a record of our thoughts on the highlights of the conference.

Ben's post on Channel 9 is here.

 



AWS at PDC09

clock November 23, 2009 20:51 by author richard.prodger

Rob, Chris & I attended Microsoft Professional Developers Conference in Los Angeles last week. We were presenting the work we have been doing on building an Azure hosted version of our maritime alert monitoring system. You can view the session here.

There is also a Microsoft Case Study on our work if you want to find out more.

It was a great conference and a good opportunity to network with many of our Microsoft colleagues. We'd like to give a special mention to Clemens Vasters for his continuted inspiration. Clemens has recently posted about "Port Bridge", the elder brother of our SocketShifter. To find our more visit Clemens' blog.

Richard.



JAzure - A Java API for Windows Azure Storage Services

clock September 25, 2009 18:04 by author dyaa.albakour


Today we're announcing immediate availability of JAzure, a Java based interoperability library for the Windows Azure Services Storage API.


Windows Azure is often thought of as a Microsoft-only platform, but actually it has wide applicability. It has been possible to host Java applications in Windows Azure Compute for a while, but with this JAR library, you can now work with Azure Tables, Queues and Blobs from Java code.


JAzure is written on top of the Restlet framework and provides a simple Java API which is not dissimilar to the StorageClient sample shipped with the Windows Azure SDK.

To give you a feel for how JAzure works, the following Java sample code uses JAzure API to interacting with blobs. It shows you how to perform the main operations such as listing containers, listing blobs in a container, uploading blobs in the containers and downloading blobs.

                // creating the Blob Storage entry point
          // provide your credentials in the jazure.properties file
          BlobStorage blobStorage = new BlobStorage();
         
          // listing containers 
          blobStorage.listContainers();        
          BlobContainer container = blobStorage.getBlobContainer("test");         
         

          // creating a new blob and uploading the cloud.
          BlobProperties blob = new BlobProperties("Jazure");      
          BlobContents blobContents = new BlobContents(new FileInputStream(new File("blobs/jazure")));    
          boolean result = container.putBlobImpl(blob, blobContents.asInputStream(), true);      
          Logger.getRootLogger().info(result);      
         
          List blobs =container.listBlobs("", false);
          for(Object o:blobs){
              if(o instanceof BlobProperties){
                   Logger.getRootLogger().info(((BlobProperties)o).getName());
              }
              if(o instanceof String){
                   Logger.getRootLogger().info(o);
              }
          }

          // downloading a blob       
          container.getBlobImpl("Jazure", new FileOutputStream(new File("blobs/downloaded/Jazure")));

Using the Queue Storage is also straightforward, the following sample Java code shows how to interact with queue storage in JAzure.                   


               // creating the Queue Storage entry point
          // In this example we are using the development Queue Storage.
          String endPoint = "http://127.0.0.1:10001/devstoreaccount1";
          String accountName = "devstoreaccount1";
          String accountSharedKey = "Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==";
          QueueStorage queueStorage = new QueueStorage(endPoint,accountName, accountSharedKey);

          // listing queues
          List<Queue> queues = queueStorage.listQueues();      
          Logger.getRootLogger().info(queues.size());
          
          for (Queue queue : queues) {
              Logger.getRootLogger().info(queue.getQueueName());
          }

          // creating a new queue
          Queue q = queueStorage.getQueue("foo");         
          q.create();             
          
          // inserting a String message in the queue
          q.putMessage(new QueueMessage("Hello World"));
          
          // listing messages in the queue
          List<QueueMessage> messages =  q.getMessages(5);
          for(QueueMessage qmsg:messages){
              Logger.getRootLogger().info(qmsg);
          }
          
          // deleting the queue.
          q.delete();


The table storage support in JAzure is different from that in the StorageClient sample shipped with the .Net Azure SDK. The latter exposes the table storage as services defined by the  .NET Client Library for ADO.NET Data Services, however, we provide a convenient straightforward way to create table entities and query the table store.

               // initialising the table storage               
          TableStorage tableStorage = new TableStorage();
                    
          Table myTable = tableStorage.getTable("myTable");
          
          myTable.clear();   

          // Create a new entity using a PK and a row key.
          TableStorageEntity entity = new TableStorageEntity("11","xxx");
          
          entity.getProperties().put("employeeName",new TableStorageProperty(TableStorageProperty.EdmString,"Martin"));
          entity.getProperties().put("employeeSalary",new TableStorageProperty(TableStorageProperty.EdmInt32,new Integer(35000)));
          
          // Inserting a new entity
          Logger.getRootLogger().info(myTable.insertEntity(entity));
          
          
          // Get an entity (pk-rk)
          TableStorageEntity ent = myTable.getEntity("11", "xxx");
          Logger.getRootLogger().info(ent);
          
          // Updating an existing entity
          entity.getProperties().put("employeeSalary",new TableStorageProperty(TableStorageProperty.EdmInt32,new Integer(37000)));
          Logger.getRootLogger().info(myTable.updateEntity(entity));
          
          ent = myTable.getEntity("11", "xxx");
          Logger.getRootLogger().info(ent);
          
          // Query entities as per http://msdn.microsoft.com/en-us/library/dd894031.aspx
          List<TableStorageEntity> entites =  myTable.queryEntities("PartitionKey%20eq%20'11'");        
          
          Logger.getRootLogger().info("The query returned "+entites.size()+ " entities");
          for(TableStorageEntity e: entites){
              Logger.getRootLogger().info(e);
          }


Source code and binary distributions are available from Codeplex. For more information, see http://jazure.codeplex.com. The source code distribution includes sample code and JavaDoc based documentation.




Instrumenting Windows Azure

clock August 22, 2009 17:44 by author richard.prodger

We've been working in our Prague office this week on some software to allow us to instrument, manage and monitor our Azure applications. Specifically, we wanted to be able to manage our Sea Safety application using SNMP and Microsoft System Center Operations Manager 2007.

This video captures the results of an intensive week of coding and shows:

1. How our Azure TraceListener uses the .NET Service Bus to show us log information in real time.
2. How our Azure SNMP Agent allows us to monitor and manage our Azure apps via an SNMP management interface.

 

 

Instrumenting Windows Azure from Rob Blackwell on Vimeo.



.NET and ADO.NET Data Service Performance Tips for Windows Azure Tables

clock August 14, 2009 03:21 by author richard.prodger

We've been doing some performance testing and came across this great post Jai Haridas. Definitely worth a read!

http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83



A bug in the Azure packaging process

clock August 14, 2009 03:06 by author richard.prodger

I discovered that when publishing a package from within Visual Studio, any assemblies that you reference that also reference other assemblies that are not part of the framework, don't get added to the package. Even if you set the 'Copy Local' to be true. I noticed this when referencing the service bus dll from my AzureTracer assembly (see ealier post). I found a great article on Jim Nakashima's blog about how to dig into the package. Sure enough, the dll was missing. I have reported this to Microsoft.