Blogging for IBM

16 September 2015 » Cloud, Community, IBM, Writing

Hello all, it’s been a while since I posted content here on my own blog, but I do regularly write for several other blogs, including IBM developerWorks Open, IBM OpenTech, Bluemix Dev, and Thoughts on Cloud.

Here are a few recent entries:

If you’re interested on my take in various areas of cloud computing – particularly in the realm of open source – add those feeds to your reader.

Cross-origin resource sharing on IBM Bluemix

Update: A newer version of this post has been published to the IBM Bluemix blog.

The IBM Bluemix Platform-as-a-Service (based on Cloud Foundry) naturally supports applications that are composed of many services that are in turn deployed to different hostnames.

For example, if you push an application to Bluemix, the name you provide will be prepended to .mybluemix.net resulting in an address such as:

  • http://my-sample-app.mybluemix.net

If your cloud-native app follows the best practices of a microservices architecture you’ll probably have two or more subcomponents that live on discrete hostnames like this.

But what if you have a JavaScript based front-end that needs to aggregate information from the disparate hosts? By default you won’t have access to data on these other subdomains.

The solution is to take advantage of the HTTP headers that are available to allow you to control cross-origin resource sharing (CORS).

To illustrate the problem and the solution, consider the simple Ajax application here:

If you click the red box, you’ll initiate an asynchronous HTTP call in JavaScript to a servlet on another host at:

The source of this servlet shows that no particular HTTP headers are set, thus the JavaScript call never reaches it.

However, if you click the blue box, you’ll initiate a call to a different servlet on that host:

This time the Ajax call will successfully consume data from the service, because the HTTP headers allow services from a different domain to access the servlet.

response.setHeader(
  "Access-Control-Allow-Origin",
  "http://krook-service-consumer.mybluemix.net"
);

response.setHeader(
  "Access-Control-Allow-Methods",
  "POST, GET, DELETE, PUT"
);

response.setHeader(
  "Access-Control-Allow-Headers",
  "x-requested-with,Content-Type"
);

If you need to allow access to all client hostnames, replace the whitelist with a wildcard:

response.setHeader(
  "Access-Control-Allow-Origin",
  "*"
);

There you have it; a simple way to build dynamic JavaScript applications composed of several microservices on IBM Bluemix (or any other Cloud Foundry PaaS).

I used Java in this example, but the same HTTP headers apply whether you’re using Ruby, Node.js, PHP, Python or any other runtime.

Zend on IBM private/public clouds at NYPHP

21 June 2012 » Cloud, DB2, IBM, New York PHP, PHP, Zend

Next Tuesday, June 26th, I’ll be speaking at the New York PHP user group about the project I led to bring the Zend Application Fabric onto IBM’s on-premise private cloud rack, PureSystems, and onto IBM’s public cloud, SmartCloud Enterprise.

I’ll describe the Zend Application Fabric for highly available PHP clusters, and show how its topology is supported by scaling and failover policies built into the IBM platform. I’ll also show how it integrates with the DB2 based Database-as-a-Service.

Zend Application Fabric

At the core of the Zend/IBM system is an IBM virtual application pattern (based on the TOSCA standard) that specifies how virtual machines are layed out, which other VMs they should link (or react) to based on life cycle events, and when they should scale up or down.

You will learn how to activate the Zend pattern, customize the topology, set a scaling policy, monitor the infrastructure, tweak the Zend configuration, view IBM elasticity and fault tolerance in action, and perform repeatable deployments using a template.

RSVP now, or make a note to catch the live stream.

Predictive analytics for football play outcomes

30 April 2012 » Football, IBM, Writing

Inspired by the NFL playoffs in January, I wrote an invention disclosure on how to merge player statistics with current field conditions to yield a visual probability of how a play might turn out.

The end result I envisioned was that you could watch the game on television as a spectator (or in real time as a competing coach) to see what the outcome the system predicted at the start of a field goal or 3rd down pass, for example.

As a sports fan the technology adds value to what broadcasters currently provide with digital first down markers and 3D play analysis.

As a coach, you could confidently plan what your next play would be. If the likelihood of scoring a touchdown was high, you could more quickly decide whether to kick the extra point or go for a two-point conversion ahead of time.

Beyond American football, the technology could be applied to many other situations, such as ice hockey, as well as non athletic events.

  • Example Embodiment #1: Field Goal
    In the NFL, a place kicker lines up to attempt a field goal. Using statistical data about the player (his history of successful field goals from this distance in this stadium) as well as sensor or other real time data about conditions on the field, the system overlays a heat map onto the image on the television screen, showing solid orange where the kick is likely to go (and fading opacity farther away from the center based on the probability). This provides a good indication where the kick will end up, and whether it will be successful. (Figure 1)

    Figure 1: Likely outcome of field goal attempt in this context
    Example Embodiment #1: Field Goal

  • Example Embodiment #2: Pass Play
    In the NFL, a quarterback has his team lined up in a pass formation. Using statistical data about the player (his history of passes from this field position in this stadium) as well as sensor or other real time data about conditions on the field, the system overlays a heat map onto the image on the television screen, showing orange where the ball is likely to go (and fading opacity farther away from the center based on the probability) and yellow highlights the probable receiver. This provides a good indication where the pass will end up, or to which player he will pass. (Figure 2)

    Figure 2: Likely receiver of the pass and field position of the catch in this context
    Example Embodiment #2: Pass Play

  • Example Embodiment #3: Hockey shootout
    In the National Hockey League (NHL), a hockey game has goes into overtime and comes to a shootout to determine the winner. Using statistical data about the player (his history of one on one shots against this goalie in this venue) as well as sensor or other real time data about conditions on the ice, the system overlays a heat map onto the image on the television screen, showing orange where the puck is likely to go (and fading opacity farther away from the center based on the probability). This provides a good indication where the player will shoot.

IBM decided not to pursue a patent, but published the idea to protect the intellectual property. The full article is available behind a paywall at IP.com.

Would be interesting if this serves as prior art for any later invention that gets implemented.

Migrating PHP applications to DB2

08 March 2012 » DB2, developerWorks, MySQL, PHP, Writing, Zend

IBM developerWorks has just published the final part in our series on migrating a PHP application from MySQL to DB2.

Learn why to move a PHP application to DB2, how to plan the migration, how to execute it, how to support it, and how to handle potential risks based on the experience of an IBM intranet application case study. This four-part series shares lessons from a successful MySQL-to-DB2 migration for a mission-critical PHP intranet application used by 4,000 global users within IBM to support content production for ibm.com.

In addition to sharing our own experience, the series highlights the number of resources available to you to carry out your own migration.

Use the IBM Cloud to build your PHP apps

14 March 2011 » Cloud, DB2, developerWorks, New York PHP, PHP, Zend

IBM developerWorks just published an article I wrote about using the Development and Test Cloud to create PHP applications.

The tutorial covers some scenarios that make the cloud compelling for PHP developers and then takes the reader through the installation of Zend Server with DB2 on the IBM Cloud.

If the content looks familiar, you may have seen an earlier version in a print copy I handed out at New York PHP (PDF) late last year.

Speaking of the cloud and NYPHP, don’t forget to join us next week to look at an alternative way to use the cloud to develop PHP applications using Amazon and RightScale.

Move from MySQL to DB2 via the Cloud

24 November 2010 » Cloud, DB2, developerWorks, Linux, PHP, Zend

IBM developerWorks has just published the first article in a series that Mark Nusekabel, Yan Li Mu and I wrote about our experience migrating a large PHP and MySQL application to DB2.

In the four part series we look at preparation, switching databases, porting code, and finally deploying the application. This first installment covers the steps to plan and resources to consult when starting a migration project.

Along with the MySQL to DB2 migration Redbook, a key technology supplementing each step in the process is the IBM Smart Business Development and Test Cloud.

If you already have access to the Development and Test pilot, the PHP developer’s guide (PDF) can give you some tips for configuring Zend Server along with DB2 using virtual machines in that cloud.

The article series and the developer’s guide may also be useful to those who have a contract for the GA version of Development and Test.

Another option to evaluate DB2 for a migration is to use the Amazon EC2 AMIs pre-configured with IBM software individually.

Or, if you’re interested in managing several instances or more complex configurations, RightScale and IBM have collaborated (PDF) to bridge the Amazon and IBM clouds.

So, if you’re considering a new relational backend for your application, the developerWorks migration series, the PHP developer’s guide for the IBM cloud, and the images within the Amazon and IBM clouds will give you a new set of tools to make evaluating the move and executing the switchover much easier.

Easter egg in the AIX InfoCenter

01 April 2010 » IBM, Potpourri, System administration

I had to double check the calendar when I first saw this gem in the AIX online documentation yesterday, but it was still March, not yet April first.

AIX 6.1 information > Commands > Categorical list of commands

Purpose: Starts the hunt the wumpus game.
Syntax: wump
Description: A wumpus is a creature living in a cave with many rooms interconnected by tunnels. You move among the rooms trying to shoot the wumpus with an arrow and trying to avoid being eaten by the wumpus or falling into bottomless pits.

As far as I can tell, this command is a hand-me-down from when the System V UNIX-based AIX incorporated bits from BSD.

I suppose this and the other games are still there for those customers using AIX on workstations (rather than bored sysadmins monitoring high-end servers… I hope).

Next page »