Stuff I Say
 

Author Archives: Jeff Coble

Decomposing a Service Oriented Architecture

One of the questions I’m most frequently asked is how to go about decomposing a system into services to develop a service-oriented architecture (SOA).  To understand how to divide a system into specific services, we first need to think about what we are trying to achieve with our software architecture.  In most large development projects, experience has taught us that we rarely ever fully understand the problem we are designing for at the outset of the project.  So, first and [...]

Building a Glassfish Monitoring Client Using REST

The GlassFish 3.1 Application Server provides a REST web service interface that enables service consumers to access administrative and monitoring features.  Although GlassFish’s web-based admin console is generally regarded as one of the better app server consoles, in my experience with previous versions of GlassFish, there are some cases where the web console can be difficult to use.  For example, during clustered server failover scenarios, the web console will freeze until the network connection times out, which can take a minute or two.   To allow [...]

EJB, JPA and SimpleDB in “The Cloud”

As part of my personal project, I’ve been working on some basic plumbing web services to support data access.  The first of these two web services — the Registration Service — allows a user to authorize my application to retrieve protected resources on behalf of the user.  The second of the services — the Resource Manager Service — simply uses the access granted by the user to retrieve a user’s protected resource.  Together, these two services provide the initial foundation [...]

5 Ways To Improve Netflix

I am an avid user of Netflix‘s “Watch Instantly” feature, but I believe Netflix is a market leader in danger of becoming a follower.  For a cautionary tale, revisit the history of digital music and the role of Napster.  Digital music is now ubiquitous, but Napster, the pioneer who initiated the online distribution trend and wrestled the distribution monopoly away from the brick and mortar music industry, no longer has a significant role in the distribution medium it created.  We’re now on [...]

Getting Started with Amazon’s Elastic Compute Cloud

I’ve recently started working with Amazon’s Elastic Compute Cloud (EC2) for my personal project and decided to capture the answers to some of the beginner questions that I worked through. Amazon provides a great deal of documentation, but I believe the organization of their documentation could use some work.  Before you begin working with EC2, you should start by reading Amazon’s Getting Started Guide.  Here are the answers to some basic start-up questions: 1) How do I launch an instance of an [...]

Architecting for the Cloud

My intention is for most, if not all, of the software I write for this project to run on the server side.  I plan to expose a RESTful Web Service API to consumers, which will authorize my software to retrieve their data from social networking sites and in return provide highly tailored recommendations for movies, books, businesses, etc, and connections to other social networking users.  I’ve outlined the project’s objectives here.  I’m now examining potential server side architectures and prototyping [...]

OAuth Solution

In a previous post, I discussed the evaluation of a couple of different Java OAuth libraries.  I started with Scribe, and so far it’s working as advertised.  I was able to use it to authorize my Java client to access a protected twitter resource (from my own account), using the out of band approach, and it worked perfectly.  The Scribe code is well written (kudos to Pablo Fernandez), so my only complaint is the lack of API documentation.  It’s not much of a complaint though, [...]

Social Networking Project Overview

I previously wrote a short description of the social networking software project that I recently started.  I’ve tried to capture the highlights in the two Activity diagrams below.  The first diagram illustrates the workflow for mining patterns from a user’s social networking data after being combined with the patterns from other uses into a global model.  The second diagram illustrates the workflow for applying the mined patterns to construct user-specific queries for services like Netflix, Amazon and Yelp, all of [...]

Jersey Support for OAUTH

As I reported in my last post, I have been working to add OAUTH support into my Twitter client.  According to Sun’s wiki, the Jersey client API is supposed to have classes supporting OAUTH interactions.  Unfortunately, in the latest API documentation, those OAUTH classes are gone.  It looks like I’ll have to look elsewhere for a client-side Java OAUTH library.  The best candidates seem to be Google’s OAUTH Library and Scribe.  The latter seems to be well tested against major web [...]

Initial Twitter Client

I’ve been down with a cold for about a week, so my apologies for the delayed update.  I finished coding a simple Twitter client to retrieve a list of friend’s statuses for a user, using Twitter’s RESTful web services API.  I wrote previously about the absence of XML schemas to define the twitter response formats.  As I’ve done more reading, it seems this is typical for RESTful web services, but I’m not entirely sure the arguments about decoupling are really [...]

Writing a RESTful Web Service Client

As part of my continuing exploration of the Twitter API for my social networking project, I’ve started writing a simple Java client application to retrieve user data via Twitter’s Restful Web Services API.  So, how to begin writing a Restful Web Service client?  Since I’m most comfortable programming in Java, I’ve started using Sun’s (aka Oracle) Jersey.  What is Jersey?  According to Sun, it is: …the open source, production quality, JAX-RS (JSR 311) Reference Implementation for building RESTful Web services. More specifically, I [...]

Reviewing the Twitter API

I’ve spent the last couple of days reviewing an excellent tutorial presentation on the twitter API.  It looks like twitter provides an extensive REST web services API.  I also ran through the examples in the tutorial using curl and twurl.  It took some time to get twurl install on my Ubuntu box because of a mismatch in the version of rubygems that was installed via the synaptic package manager, but I eventually got that resolved through some creative google searching.  In the [...]