Eric D. Schabell: 2011

Saturday, December 31, 2011

Year in review 2011

Taking a personal look back at a very busy year in which I spent a great amount of my focus on JBoss technologies, writing and presenting all over the world. Trips to Sweden, Spain, England, Ireland, Belgium, Germany and Boston, USA.

Instead of rattling off all the stuff that passed by this year, I would refer you to the Blog Archive in the sidebar of this blog where you can follow that action month by month. ;-)

On the cycling front I was able to make good use of my lunch hours when working from home and these one hour rides added up! I clocked around 3000 km this year and with travel I was able to ride in the Ardennes (Rochefort), Germany (Trier), Limburg (Cauberg, Keutenberg, etc) and in the Veluwe (Postbank). I got my climbing hat on this year with the top being the trip to Trier (first time I had to stop on a climb to rest, ever...) and the Ardennes (single day ride with over 500m climbing, rockin' area around Rochefort).

Take care, thanks for reading in 2011 and see you next year!

Thursday, December 15, 2011

Open Source Conference 2011 - OpenShift, jBPM and much more in Amsterdam at OSC11

OSC11 ready to rock!
Some time ago I mentioned that I would be giving talks on jBPM and OpenShift at OSC11, well let me tell you a bit about that experience!

Scott Crenshaw interview.
Interview
It all started on Thursday afternoon when I arrived at the hotel in Amsterdam to check in. Our VP Cloud, Scott Crenshaw was stuck in traffic coming back from a customer visit and I was asked to fill in for him with a reporter from CloudWorks. I got the chance to focus more on OpenShift than on the general Red Hat strategy until Scott arrived, at which time I was able to relax and snap a few pictures of him doing his magic.

View from 17th floor.
After that I got the chance to actually go up to my room before heading over to the venue. I have never stayed 17 floors above Amsterdam, but as you can see, the view was amazing over Central Train Station and the river behind it. I know, the photo looks like a hotel room with a painting on the wall, but believe me that is the view over the city. At night you could just sit in your hotel room and stare out the window at the city lights.

Keynote Scott Crenshaw
 Setup PTA
At the venue, the Amsterdam Passenger Terminal (PTA), the local cruise ship terminal, we arrived with our technical team to ensure a few things were going to be working smoothly for the demos and sessions. The rooms I would be talking in were about 80 seats, so nice for break-out sessions! We hung a few banners, watched the crews setup the main stage and then headed for our hotel to get ready for the Speakers Dinner.

OpenShift t-shirt was a hit!
Speaker Dinner
That evening there was a speakers dinner that started with drinks, then food and finished up in a lounge bar on the top floor of the Mint Hotel, again, another nice view over the city of Amsterdam. The nice part was chatting with the various keynote speakers, where I got some time with the VP from Alfresco talking BPM and with Scott Crenshaw talking OpenShift a bit.

Open Source Conference
Friday was the big event, we got there early and watched around 800 attendees (more than doubling the number from last year) appearing slowly out of the morning fog to come enjoy a day filled with Open Source and networking. It was amazing to see the PTA filled up with customers, partners and contacts that I know from my years of working on Open Source.  It was not possible to cross the main floor without getting stopped by someone at least 3 times, amazing interactions!

The OpenShift talk was packed full with all seats eventually taken and standing room filled on the sides. Even though the talks were only 30 minutes, it was possible to get some nice interactions with the crowd. I got some interesting Python and PHP questions, passed out a few goodies and after the talk even had to give away the last t-shirt I was wearing to a fan! The jBPM talk was filled also and again had to put a lot of information into the short time frame, but there were some really nice reactions to the talk in discussions after the session and on Twitter.

Both sessions slides will be made available via the OSC website, but I will include them here for all to enjoy. It was a long day, a busy day, but filled with great people at a great location. I am seriously looking forward to next years event and wonder if we can double the attendance again!

Wednesday, December 7, 2011

JAX 2012 - Integration woes, solving the migration to BPMN2

Submitted a talk to JAX 2012, fingers crossed!

Abstract:
We stand now on the brink of a revolution. The future calls to us with a promise of standardized processes and a specification to lead us. There is one small catch... what to do with our existing enterprise integration projects? This session will help you position your existing JBoss projects for the challenges of migrating to the JBoss Business Process Management System with real world examples.

JAX 2012 - The future is now for all your Business Processes


Submitted a talk to JAX 2012, fingers crossed!

Abstract:
A lot has happened in the BPM area over the last few years, with the intro of the BPMN 2.0 standard, the increasing interest in more dynamic and adaptive processes, integration with business rules and event processing, case management, etc. In this session, we will show you how JBoss tackles these challenges, discuss migration to this new platform and give an overview of its most import features.

JAX 2012 - Rise above the Cloud hype with OpenShift

Submitted a talk to JAX 2012, fingers crossed!

Abstract:

Whether a seasoned Java developer looking to start on EE6 or you wrote your 1st line yesterday, the Cloud is turning out to be the perfect environment for developing apps. Join us for an action-packed hour of power. If you want to learn how the OpenShift PaaS works, how investing 1hr of your time can change everything you though you knew about  developing apps in the Cloud, this session is for you!

Wednesday, November 2, 2011

My JUDCon 2011 in London was cloudy with a bit of migration

Great location JUDCon 2011 London
 Well, where do I start? That is the first thought that enters my head when I look back at two days of JUDCon in London! I will share with you my direct experiences and hope you enjoy them as much as I enjoyed hanging out with all the JBoss Rock Stars.

I flew in late on Sunday evening, as I had a morning meeting that kept me away from the morning sessions where there was a session focused on jBPM5 by Kris Verlaenen. There was also an OpenShift / Cloud track running parallel on my track so that meant I missed all of that.

Once I got to JUDCon it was well streamlined and I held my session on Launching into the Future with the jBPM Migration Project. I asked if there were jBPM3 users and over 1/2 raised their hands. I understand why there are there, so I go around the room asking the others why they are there. Most are also interested in moving existing jBPM3 projects to jBPM5 but did not raise their hands initially, sneaky! I also noted that there were a few Red Hat support engineers that will have to help support jBPM and were keen to see what we had done. Kudos to them for self education!

I kept the session more conversational and person with lots of interaction along the way. I walked through the history leading up to now for the project and demo'ed both the conversion in Eclipse, in an OpenShift webapp we have deployed and in the latest jBPM web designer deployed in OpenShift. I also included HOWTO slides so that everyone can put these tools together themselves in minutes.

By the way, the lunches, snacks and dinner were top rate. Plenty of food and everyone enjoyed the beers and pizza going into the evening Lightning Talks / Hackfest as you can see in the pictures.

The JBoss Asylum team put on a live show for us by recording the podcast as the first Lightning Talk. This was really quite good as the beer and pizza had already been flowing. You will notice lots of laughs in the background once they release this episode!

Lightning Talks were crowded
Finally we got down to business with both Max Andersen and myself targeting OpenShift in our talks. I hit the general note, inviting our first official Booth Babe to the stage (a lady who agreed to help out and got a great free shirt). I invited everyone who wanted to try it out to drop by our table at the front and we would help them install their apps into the cloud. I put a bit of Halloween tint on the initial slide, got some good cheers from that one. Again, it might have just been the beer? Jeremy Brown got up and demo'ed a pretty neat use of the 5x free OpenShift Express instances by showing how to use continuous builds with Jenkins to push to new instances for each feature branch a team would create on a development project.

Max Andersen then gave a talk on the JBossTools integration of OpenShift, including a demo of the upcoming release. This is a great step for the Java developers out there that don't want to have to use Ruby based CLI tooling from the shell. Well done!

We then proceeded to have a bit of a hackfest, working on OpenShift and jBPM Migration Project as we chatted with customers, developers and other fellow JBoss'ians. The next day was spent in the morning watching a few of the JBoss related sessions such as jClouds and configuration management for JBoss AS7, but I had a plane to catch so was on the way home before it all ended.

It was again a really great time, I hope that you will make one of the next JUDCon's in 2012 as you really will get the chance to dunk yourself into the world of JBoss like no there conference can offer. See you there!

Tuesday, October 25, 2011

jBPM Web Designer integrates jBPM Migration Tooling in the OpenShift Cloud

New migration feature
Last week the jBPM Web Designer screen-casted the release of a new version (well, a beta anyway) that includes some pretty neat features. The one we here in the jBPM Migration Project team are most proud of is that they have exposed the jBPM Migration Tooling!

paste in jpdl3.2 + gpd files
We thought it would be nice to provide a playground in the OpenShift Cloud for you the public to give it a try. Here are a few screenshots showing the designer, the import pop-up with a jBPM3.2 process definition and the corresponding gpd file containing positioning information and finally the migrtated BPMN2 process definition.

Here are the example jPDL and GPD sources so you can directly cut&paste them into the migration pop-up to test it:


jPDL3.2 process definition source


 
  
 

 
  
   A human task.
  
  
   
    A test task.
   
   
  
  
 

 



GPD location information source

  
    
      
  
  
    
      
  
  

You can't save the process, but you can view the source in various forms with the tabs at the bottom of the screen. Give the BPMN2 tab a try!

View source tabs

I will be presenting this and more on the current status of the jBPM Migration Project in London next week at JUDCon. The session is entitled, Launching into the future with jBPM Migration Project.

See you there? ;-)



Tuesday, October 18, 2011

London JBug - JBoss jBPM Night (slides)

I gave the talk entitled, JBoss jBPM, the future is now for all your Business Processes tonight for about 30 attendees. It was pretty interactive with the audience showing a real interest in the new jBPM5 tooling, flexible processes and migration tooling.

Thanks again to all who turned up and the pizza was great afterwards!

Here are the slides:



A few pictures were taken while I was talking:

Tuesday, October 11, 2011

From Code to Cloud - PHP on Red Hat's OpenShift (Slides)

As posted previously, I spoke at the International PHP Conference and Web Technology Conference in Mainz, Germany today. Here are the slides from the session, which included the audience participating directly in deploying Zend, Cake and Symfony frameworks into the OpenShift Express solution!


Friday, October 7, 2011

OpenShift Express - how to get started with Symfony PHP framework

I pulled together an installation howto for Symfony PHP Framework on OpenShift Express, you can follow the Readme file to push this into your very own OpenShift Express instance!




# Create an account at http://openshift.redhat.com/
#
# Create a php-5.3 application.
#
$ rhc-create-app -a symfonyphp -t php-5.3

# Add this upstream openshift-symfony repo
#
$ cd symfonyphp
$ git remote add upstream -m master git://github.com/eschabell/openshift-symfony.git
$ git pull -s recursive -X theirs upstream master

# Then push the repo upstream
#
git push

That's it, you can now checkout your application at http://sympfonyphp-$your_domain.rhcloud.com, isn't that easy!

NOTES:

GIT_ROOT/.openshift/action_hooks/build: This has a few lines to ensure that the cache dir exists and is writable for the web server.

Security: Nothing has been done to secure this installation.

Wednesday, October 5, 2011

jBPM Migration Tooling available in the OpenShift Cloud!

After our latest evening of coding on the jBPM Migration project we were able to fix quite a few bugs and pushed a web based jBPM Migration application into the cloud that enables everyone to play with the migration tooling right now!

I admit, it is in a crude form, but I am a fan of release early (if not often due to real life!). We will be massaging this to spiffy it up a bit, but the idea is there. You can upload your jBPM 3.2 process definition file (processdefinition.xml) and on the results page you will find a copy of your jPDL and below that the resulting BPMN2 XML. This is not formatted, but you can paste it into your IDE for formatting, viewing in the diverse jBPM5 editor tools and verify your process is migrated.

Even better, you can replicate this setup by following our Readme in the jBPM Migration Upload project. The basic steps to setup an OpenShift JBoss AS 7 instance and deploy the jBPM Migration Tool is as follows:

jBPM Migration Tooling on OpenShift Express
Installing the jBPM Migration tool on OpenShift was never easier! This git repository helps you get up and running quickly with the jBPM Migration Tooling.

# Running on OpenShift.
# Create an account at http://openshift.redhat.com/
#
# Create a jbossas-7.0 application
#
$ rhc-create-app -l $username -a jbpmmigration -t jbossas-7.0

# Add this upstream openshift-jbpmmigration repo.
#
$ cd jbpmmigration
$ git remote add upstream -m master git://github.com/eschabell/openshift-jbpmmigration.git
$ git pull -s recursive -X theirs upstream master
    
# Then push the repo upstream.
#
$ git push

That's it, you can now checkout your application at: http://jbpmmigration-$your_domain.rhcloud.com/jbpmmigration_upload-0.1

Usage notes: You can submit a jBPM jPDL 3.2 process definition as an xml file upload, the resulting page will show you first your submitted file (if all goes well) and the resulting BPMN2 process definition. This can be cut and paste into your IDE for formatting and testing against the jBPM5 editor(s).

I will be discussing this tooling at JUDCon in London and the London JBUG, drop by and we can chat about it. For now, get busy and start testing your process definitions before migration to jBPM5! ;-)

OpenShift Express - how to get started with ZendFramework

I was looking to upgrade a rough draft article in the Express forums and place it into a structured git repo howto form so I put the following together. You can follow the Readme file to push this into your very own OpenShift Express instance!








# Create an account at http://openshift.redhat.com/
#
# Create a php-5.3 application.
#
$ rhc-create-app -l $username -a zendphp -t php-5.3

# Add this upstream zendphp repo.
#
$ cd zendphp
$ git remote add upstream -m master git://github.com/eschabell/openshift-zendframework.git
$ git pull -s recursive -X theirs upstream master
# note that the git pull above can be used later to pull updates to zendphp

# Then push the repo upstream.
#
$ git push

That's it, you can now checkout your application at: http://zendphp-$your_domain.rhcloud.com, easy isn't it! ;-)

Wednesday, September 28, 2011

Fedora 15 - Chrome 14.x won't start for you?

I was having this problem after and update and first ran it from the console to find out what the problem was:





# running google-chrome from the command line.
#
$ google-chrome

/opt/google/chrome/chrome: error while loading shared libraries: cannot restore segment prot after reloc: Permission denied

# seems this is due to some permission errors, so you can run chrome 
# without the sandbox...
#
$ google-chrome --no-sandbox

# ...or you can fix the permission problem by turning it off.
#
$ sudo setenforce 0

Hope this helps you get back into your Chrome experience! ;-)

Friday, September 23, 2011

London JBUG - JBoss jBPM, the future is now for all your Business Processes

I have been invited to talk at the London JBoss User Group (JBUG) for their JBoss jBPM night. Below you will find the location, times and agenda.

Where?
Atos Origin Offices, LTQ Meeting Room, 4 Triton Square (please use the main reception entrance), London NW1 3HG

Agenda
17:00 - 17:30 - Coffee, Welcome and Networking
17:30 - 18:00 - Lightning talks
18:00 - 18:15 - Break, networking
18:15 - 19:15 - Eric Schabell: 'JBoss jBPM, the future is now for all your Business Processes'
19:15 - 20:00 - Beer, Pizza and Networking

JBoss jBPM, the future is now for all your Business Processes
JBoss jBPM, the future is now for all your Business Processes
A Business Process Management System (BPMS) offers you the capabilities to better manage and streamline your business processes.

JBoss jBPM continues its vision in this area by offering a lightweight process engine for executing business processes, combined with the necessary services and tooling to support business processes in their entire lifecycles. This allows not only developers but also business users to manage your business processes more efficiently.

A lot has happened in the BPM area over the last few years, with the introduction of the BPMN 2.0 standard, the increasing interest in more dynamic and adaptive processes, integration with business rules and event processing, case management, etc. In this session, we will show you how jBPM5 tackles these challenges, discuss migration to this new platform and give you an overview of its most important features.

If you are in the London area on Monday, 17 October, stop by for some jBPM fun! :-)


Update: slides posted here!

Thursday, September 22, 2011

International PHP Conference (IPC) 2011 - From Code to Cloud: PHP on Red Hat's OpenShift

I will be participating on our OpenShift tour in October from 9-12th, this time in Rheingoldhalle Mainz, Germany for the IPC 2011 conference where I will put my old love of PHP to the test in the cloud:

From Code to Cloud: PHP on Red Hat's OpenShift
In this hands-on talk, we'll show you just how easy it is to deploy, manage and auto-scale PHP applications in the cloud with no modifications to your code. No matter what framework you use, just bring your laptop—we'll bring the cloud (and a few sample applications based on Zend, Cake and Symphony to get you started with).

This session is on the 11th of October from 1130-1230 hrs, see you all there to get your cloud on! :-) UPDATE: session slides available!

Friday, September 16, 2011

Cloud Developer Convention 2011 (workshop) - Let's get started with OpenShift!

Not only will there be a full session at Cloud Developer Convention 2011 on OpenShift, but they have asked me to provide a live-hacking workshop, so get ready for some good cloud development experience:

Let's get started with OpenShift!
Bring your laptop to this workshop and we will have you running your first OpenShift application in the Cloud in no time! We will walk you through an installation, setup and deployment of your first cloud application using Red Hat OpenShift Express. This workshop will allow you to experience the thrill of could development and have all your questions answered while getting some hands on experience with OpenShift.


Bring your own laptop and we will get you started on the road to cloud development! ;-)

Thursday, September 15, 2011

JUDCon 2011 in London (Lightning Talk) - Let's get started with OpenShift

I will also be giving a Lightning Talk at JUDCon 2011 in London on OpenShift, bring your laptop and check out the fun and ease of our PaaS:


Let's get started with OpenShift! 
Bring your laptop, we will provide an internet connection and have you running your first OpenShift Express application in the Cloud in no time! The speaker will walk you through an installation, setup and deployment of your first cloud application using Red Hat OpenShift Express. This session will include an update on the current status and roadmap for OpenShift.

Tuesday, September 13, 2011

JUDCon 2011 in London - Launching into the future with the jBPM MIgration Project


Today the acceptance mails for JUDCon 2011 in London arrived, this session is a go! Come join us for a good look at launching your processes into the future of jBPM5:


Launching into the future with the jBPM Migration Project 
This session will outline the status of our jBPM migration tooling project which has recently been added to the main Drools / jBPM project github repository. We will take a look at the background of jBPM 3 process projects and how we plan to help launch your process projects into the jBPM5 future.


We will start by providing you with a plan for positioning your existing Enterprise jBPM projects for the eventual move towards jBPM5. This will cover the architectural layers involved, a look at the tooling being created for this and steps you can take to ensure a smooth transition moving into your jBPM future.


Finally we will demo the existing tooling on an actual existing enterprise jBPM project. This will provide you with a real life scenario to take home as an example for your own BPM projects.


See you there on Oct 31 - Nov 1! ;-)

Monday, September 12, 2011

Open Source Conference 2011 - technical workshops and sessions on OpenShift, JBoss SOA and jBPM

We are going to roll out the technical workshops and sessions this year the the Open Source Conference 2011 in Amsterdam on the 9th of December. The following will be the JBoss middleware track, with first the workshop in the morning and the two sessions in the afternoon.



An OpenShift Primer for Developers to get your Code into the Cloud

Whether you’re a seasoned Java developer looking to start hacking on
EE6 or you just wrote your first line of Ruby yesterday, the cloud is
turning out to be the perfect environment for developing applications
in just about any modern language or framework. There are plenty of
clouds and platform-as-a-services to choose from, but where to start?
Join us for an action-packed hour of power where we’ll show you how to
deploy an application written in the language of your choice – Java,
Ruby, PHP, Perl or Python, with the framework of your choice – EE6,
CDI, Seam, Spring, Zend, Cake, Rails, Sinatra, PerlDancer or Django to
the OpenShift PaaS in just minutes. And without having to rewrite your
app to get it to work the way the cloud provider thinks your app
should work.

Check the command-line fu as we leverage Git to onboard apps onto
OpenShift Express in seconds, while also making use of the web browser
do the heavy-lifting of provisioning clusters, deploying, monitoring
and auto-scaling apps in OpenShift Flex.

If you want to learn how the OpenShift PaaS and investing an hour of
your time can change everything you thought you knew about developing
applications in the cloud, this session is for you!



Afternoon sessions:

JBoss Brings More Power to your Business Processes


A Business Process Management System (BPMS) offers you the
capabilities to better manage and streamline your business processes.
JBoss jBPM continues its vision in this area by offering a lightweight
process engine for executing business processes, combined with the
necessary services and tooling to support business processes in their
entire lifecycles. This allows not only developers but also business
users to manage your business processes more efficiently.

A lot has happened in the BPM area over the last few years, with the
introduction of the BPMN 2.0 standard, the increasing interest in more
dynamic and adaptive processes, integration with business rules and
event processing, case management, etc. In this session,  we will show
you how jBPM5 tackles these challenges, discuss migration to this new
platform and give you an overview of its most important features.




See you there? If not your can follow along on the twitter tag #osc2011. ;-)

Monday, September 5, 2011

JUDCon 2011 London - Submitted OpenShift and jBPM Migration sessions

The call for papers is still open, so what are you waiting for? ;-)

I have submitted two session for this:

I will be re-iterating the session I held early this year in Boston at the JBoss World conference, but adding in a demo of the most recent progress on the jBPM Migration tooling which might include some very interesting announcements!

The OpenShift session might even be better categorized as a workshop where if you bring a laptop, you can follow along and have a running JBoss cloudy deployment of your own application in minutes!

See you there! ;-)

Saturday, September 3, 2011

Live PHP demo: The OpenShfit Babygame is available in the Cloud!

I wanted to run through how to push a simple PHP application that used a MySQL database into the new OpenShift Express environment. Follow along as we show you how to do it.

You can jump right to the OpenShift Babygame if you can't wait to see it live at: http://babygame-ishereon.rhcloud.com/babygame.php.

 We will assume you have registered a user at http://www.openshift.com.


Get Babygame code
First step is to pull a copy of the BabyGame from github.

Next you will want to setup your client tools for OpenShift access as outlined in their Quick Start. I am running Fedora 15 so just had to add the yum repo and install rhc. This brings us to the point of actually getting into setup of our applications new home.

Create your domain
# We need to create the domain for Express to start setting up
# our URL with the client tooling using 
# rhc-create-domain -n domainname -l rhlogin
#
$ rhc-create-domain --help

Usage: /usr/bin/rhc-create-domain
Bind a registered rhcloud user to a domain in rhcloud.

  NOTE: to change ssh key, please alter your ~/.ssh/libra_id_rsa and
        ~/.ssh/libra_id_rsa.pub key, then re-run with --alter

  -n|--namespace   namespace   Namespace for your application(s) (alphanumeric - max 16 chars) (required)
  -l|--rhlogin     rhlogin     Red Hat login (RHN or OpenShift login with OpenShift Express access) (required)
  -p|--password    password    RHLogin password (optional, will prompt)
  -a|--alter                   Alter namespace (will change urls) and/or ssh key
  -d|--debug                   Print Debug info
  -h|--help                    Show Usage info

# So we setup one for the Babygame. Note that I already have setup my ssh keys for OpenShift,
# if you have not yet done that, then it will walk you through it.
#
$ rhc-create-domain -n ishereon -l [registered-user] -p [your-password]

OpenShift Express key found at /home/[homedir]/.ssh/libra_id_rsa.  Reusing...
Contacting https://openshift.redhat.com
Creation successful

You may now create an application.  Please make note of your local config file
in /home/[homedir]/.openshift/express.conf which has been created and populated for you.


Create your application
Next we want to create our application, which means we want to tell the OpenShift Express which stack we need. This is done with the rhc-create-app client tool.

# Let's take a look at the options available before we setup a php stack for
# our babygame app.
#
$ rhc-create-app --help
Contacting https://openshift.redhat.com to obtain list of cartridges...
 (please excuse the delay)

Usage: /usr/bin/rhc-create-app
Create an OpenShift Express app.

  -a|--app   application     Application name  (alphanumeric - max 16 chars) (required)
  -t|--type  type            Type of app to create (perl-5.10, jbossas-7.0, wsgi-3.2, rack-1.1, php-5.3) (required)
  -l|--rhlogin  rhlogin      Red Hat login (RHN or OpenShift login with OpenShift Express access) (Default: xxxxxxxxx)
  -p|--password  password    RHLogin password  (optional, will prompt)
  -r|--repo  path            Git Repo path (defaults to ./$app_name)
  -n|--nogit                 Only create remote space, don't pull it locally
  -d|--debug                 Print Debug info
  -h|--help                  Show Usage info

# It seems we can choose between several but we want the php-5.3 
# stack (called a cartridge). I provide a user, password and location 
# for the git repo to be created called 'babygame-express', see the 
# documentation for the defaults. Let's watch the magic happen!
#
$ rhc-create-app -a babygame -t php-5.3 -l [registered-user] -p [password] -r /home/[homedir]/git-projects/babygame-express

Found a bug? Post to the forum and we'll get right on it.
    IRC: #openshift on freenode
    Forums: https://www.redhat.com/openshift/forums

Attempting to create remote application space: babygame
Contacting https://openshift.redhat.com
API version:    1.1.1
Broker version: 1.1.1

RESULT:
Successfully created application: babygame

Checking ~/.ssh/config
Contacting https://openshift.redhat.com
Found rhcloud.com in ~/.ssh/config... No need to adjust
Now your new domain name is being propagated worldwide (this might take a minute)...
  retry # 1 - Waiting for DNS: babygame-ishereon.rhcloud.com
  retry # 2 - Waiting for DNS: babygame-ishereon.rhcloud.com
  retry # 3 - Waiting for DNS: babygame-ishereon.rhcloud.com
  retry # 4 - Waiting for DNS: babygame-ishereon.rhcloud.com
Pulling new repo down
Warning: Permanently added 'babygame-ishereon.rhcloud.com,174.129.64.40' (RSA) to the list of known hosts.
Confirming application babygame is available
  Attempt # 1

Success!  Your application is now published here:

      http://babygame-ishereon.rhcloud.com/

The remote repository is located here:

    ssh://[email protected]/~/git/babygame.git/

To make changes to your application, commit to /home/[homedir]/git-projects/babygame-express/.
Then run 'git push' to update your OpenShift Express space

If we take a look at my given path to the repo we find a git-projects/babygame-express git repository! Note that if you decide to alter your domain name you will have to adjust the git repository config file to reflect where the remote repository is, see above the line with 'ssh:.....'. Also the page is already live at http://babygame-ishereon.rhcloud.com/, how about that!

It is just a splash screen to get you started, so now we move on to getting the babygame running.

First lets look at the provided README in our babygame-express project which gives some insight to the repository layout.

Repo layout
===========
php/ - Externally exposed php code goes here
libs/ - Additional libraries
misc/ - For not-externally exposed php code
../data - For persistent data (full path in environment 
             var: OPENSHIFT_DATA_DIR)
deplist.txt - list of pears to install
.openshift/action_hooks/build - Script that gets run 
               every push, just prior to starting your app

The babygame app also comes with a README file that states we need to just add the babygame.php, const.inc.php, introtext.php, and *.jpg files to a webserver, so we will place these in the git repository that was created into the php directory.

# placing our application into our express git repo.
#
$ cp babygame/babygame.php git-projects/babygame-express/php/
$ cp babygame/const.inc.php git-projects/babygame-express/php/
$ cp babygame/introtext.php git-projects/babygame-express/php/
$ cp *.jpg git-projects/babygame-express/php/

# lets see what is going on in our project, for git commands please refer to git online help.
#
$ git st

# On branch master
# Untracked files:
#   (use "git add ..." to include in what will be committed)
#
#	php/babyblue.jpg
#	php/babygame.php
#	php/babypink.jpg
nothing added to commit but untracked files present (use "git add" to track)

# now we need to add, commit and push them to the master repo.
#
$ git add php/*.jpg php/*.php
$ git st

# On branch master
# Changes to be committed:
#   (use "git reset HEAD ..." to unstage)
#
#	new file:   php/babyblue.jpg
#	new file:   php/babygame.php
#	new file:   php/babypink.jpg
#	new file:   php/introtext.php
#	new file:   php/const.inc.php
#

$ git commit -m "Added babygame and images."

[master 8b73d1a] Added babygame and images.
 3 files changed, 364 insertions(+), 0 deletions(-)
 create mode 100644 php/babyblue.jpg
 create mode 100644 php/babygame.php
 create mode 100644 php/babypink.jpg

$ git push origin
Counting objects: 8, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 10.48 KiB, done.
Total 6 (delta 1), reused 0 (delta 0)
remote: Stopping application...
remote: Waiting for stop to finish
remote: Done
remote: Running .openshift/action_hooks/build
remote: Starting application...
To ssh://[email protected]/~/git/babygame.git/
   ff8218d..8b73d1a  master -> master

Now we should be able to find our application online at http://babygame-ishereon.rhcloud.com/babygame.php.


Some cleanup
# clean out the default files.
#
$ git rm php/index.php

rm 'php/index.php'

$ git rm php/health_check.php

rm 'php/health_check.php'

$ git st

# On branch master
# Changes to be committed:
#   (use "git reset HEAD ..." to unstage)
#
#	deleted:    php/health_check.php
#	deleted:    php/index.php
#

$ git commit -m "Removed default files."

[master 820db4f] Removed default files.
 0 files changed, 0 insertions(+), 2 deletions(-)
 delete mode 100644 php/health_check.php
 delete mode 100644 php/index.php  (100%)

$ git push origin
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 384 bytes, done.
Total 2 (delta 1), reused 0 (delta 0)
remote: Stopping application...
remote: Waiting for stop to finish
remote: Done
remote: Running .openshift/action_hooks/build
remote: Starting application...
To ssh://[email protected]/~/git/babygame.git/
   8b73d1a..820db4f  master -> master
Babygame without a database

Setup mySQL database on OpenShift
So for now we have our project on line, but the MySQL database needs to be setup. The babygame without a database is just a bunch of garbled layout and empty tables. We can't have that now can we?

Let's get our mySQL database setup on OpenShift.

# First we need to add the mysql database instance to our Express instance,
# by making use of the rhc-ctl-app client tool.
#
$ rhc-ctl-app --help

Usage: /usr/bin/rhc-ctl-app
Control an OpenShift express app

  -a|--app   application   Application name  (alphanumeric) (required)
  -l|--rhlogin rhlogin     Red Hat login (RHN or OpenShift login with OpenShift Express access) (Default: xxxxxx)
  -p|--password password   RHLogin password  (optional, will prompt)
  -c|--command command     (start|stop|restart|reload|status|destroy)
  -L|--embedded-list       List supported embedded cartridges
  -e|--embed               (add-$cartridge|remove-$cartridge) eg: add-mysql-5.1
  -b|--bypass              Bypass warnings
  -d|--debug               Print Debug info
  -h|--help                Show Usage info

# now lets add the mysql-5.1 embedded cartridge.
#
$ rhc-ctl-app -a babygame -l [registered-user] -p [password] -e add-mysql-5.1

Contacting https://openshift.redhat.com
Contacting https://openshift.redhat.com
API version:    1.1.1
Broker version: 1.1.1

RESULT:

Mysql 5.1 database added.  Please make note of these credentials:

   Root User: admin
   Root Password: XXXXXXXXX
   Database Name: babygame

Connection URL: mysql://XXX.X.X.X:3306/

Now we need to add the const.inc.php file and adjust to reflect the proper db variables. So we adjust this and push the file to our repo.

# edit our const.inc.php file to add mysql database info and set the initial birth dates.
#
$ cat const.inc.php

[skip boring parts]
// Database settings.
//
define( "DB_SERVER",    $_ENV['OPENSHIFT_DB_HOST'] );
define( "DB_USER",      $_ENV['OPENSHIFT_DB_USERNAME'] );	
define( "DB_PASSWORD",  $_ENV['OPENSHIFT_DB_PASSWORD'] );	
define( "DB_DATABASE",  "babygame" );	


# Add the config file, push to repo.
#
$ git add php/const.inc.php; git commit -m "Added mysql config file."; git push origin

[master b7f9973] Added mysql config file.
 1 files changed, 31 insertions(+), 0 deletions(-)
 create mode 100644 php/const.inc.php
Counting objects: 6, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 778 bytes, done.
Total 4 (delta 2), reused 0 (delta 0)
remote: Stopping application...
remote: Waiting for stop to finish
remote: Done
remote: Running .openshift/action_hooks/build
remote: Starting application...
To ssh://[email protected]/~/git/babygame.git/
   820db4f..b7f9973  master -> master


Managing your mySQL database
One problem I had was that the database was created, but not the table 'guesses' that I needed. To achieve this I had to put some configuration changes into the build script that runs on each push to the repo (causing a fresh deploy of your application).

# addded this to my .openshift/action_hooks/build file in 
# the babygame project.
#
set -e

if [ -z $OPENSHIFT_DB_HOST ]
then
    echo 1>&2
    echo "Could not find mysql database.  Please run:" 1>&2
    echo "rhc-ctl-app -a $OPENSHIFT_APP_NAME -e add-mysql-5.1" 1>&2
    echo "then make a sample commit (add whitespace somewhere) and re-push" 1>&2
    echo 1>&2
    exit 5
fi

# check for database.
if ! /usr/bin/mysql -u "$OPENSHIFT_DB_USERNAME" --password="$OPENSHIFT_DB_PASSWORD" -h "$OPENSHIFT_DB_HOST" -e "show tables;" $OPENSHIFT_APP_NAME > /dev/null
then
    echo 1>&2
    echo "Could not find mysql database. " 1>&2
    echo "Creating database for application named: $OPENSHIFT_APP_NAME." 1 >&2
    /usr/bin/mysqladmin -u "$OPENSHIFT_DB_USERNAME" --password="$OPENSHIFT_DB_PASSWORD" -h "$OPENSHIFT_DB_HOST" create "$OPENSHIFT_APP_NAME"
fi

# Confirm database exists, if not create it
if ! /usr/bin/mysql -u "$OPENSHIFT_DB_USERNAME" --password="$OPENSHIFT_DB_PASSWORD" -h "$OPENSHIFT_DB_HOST" -e "select * from guesses;;" "$OPENSHIFT_APP_NAME" > /dev/null
then
    echo
    echo "Schema not found!  Importing schema from .openshift/action_hooks/baby.sql"
    echo
    /usr/bin/mysql -u "$OPENSHIFT_DB_USERNAME" --password="$OPENSHIFT_DB_PASSWORD" -h "$OPENSHIFT_DB_HOST" "$OPENSHIFT_APP_NAME" < "$OPENSHIFT_REPO_DIR/.openshift/action_hooks/baby.sql"
    echo
    echo "done."
else
    echo "Database found, skipping import."
fi

Fully configured babygame!
If you look closely you will see that I also added the baby.sql file in the same directory so that the 'guesses' table is created if needed. Now we fire up the application and add a guess!

This completes the migration of the original PHP Babygame application from a local installation to the cloud with OpenShift Express!

I will be pushing this project soon to github at https://github.com/eschabell.

Happy guessing! :-)

Friday, September 2, 2011

Cloud Developer Convention 2011: Get your code in the Cloud and your PaaS over here - The OpenShift primer for developers

In October I will be doing a tour through Germany with the OpenShift core team, stopping at a few cloud conferences. TechTalks | Cloud::Developer Convention is in Hamburg, on the 13-14th and will feature technical talks targeting real developers. I look forward to speaking and wandering around my old stomping grounds in Hamburg!


Get Your Code in the Cloud and Your PaaS Over Here – The OpenShift Primer for Developers



Whether you’re a seasoned Java developer looking to start hacking on EE6 or you just wrote your first line of Ruby yesterday, the cloud is turning out to be the perfect environment for developing applications in just about any modern language or framework. There are plenty of clouds and platform-as-a-services to choose from, but where to start? Join us for an action-packed hour of power where we’ll show you how to deploy an application written in the language of your choice – Java, Ruby, PHP, Perl or Python, with the framework of your choice – EE6, CDI, Seam, Spring, Zend, Cake, Rails, Sinatra, PerlDancer or Django to the OpenShift PaaS in just minutes. And without having to rewrite your app to get it to work the way the cloud provider thinks your app should work.
Check the command-line fun of Eric Schabell as he leverages Git to onboard apps onto OpenShift Express in seconds, while also making use of the web browser do the heavy-lifting of provisioning clusters, deploying, monitoring and auto-scaling apps in OpenShift Flex. By the end of this session you’ll have multiple applications running in the cloud, guaranteed, or your money back! (Did we mention OpenShift is free-as-in-beer?)
If you want to learn how the OpenShift PaaS and investing an hour of your time can change everything you thought you knew about developing applications in the cloud, this session is for you!

See you there? :-)

Thursday, July 21, 2011

Fedora 15 - howto set default application for open document formats to LibreOffice

My new installation of Fedora 15 seems to have a problem finding the right application to start for all the OpenOffice or open document formatted files. She needs to be using Libreoffice, but starts Calibre app on my machine. The standard assignment of default applications via System Settings is only for a small set of applications, so you need to dive into the configuration files like this:


# Fix system wide in /usr/share/applications/defaults.list

# by changing all 'openoffice.org' entries into 'libreoffice'

# with for example in VIM this cmd:

#

:%s:openoffice.org:libreoffice:g



# Fix in local user settings with ~/.local/share/applications/mimeapps.list

# but you will most likely need to copy the above entries into

# your local settings.

Wednesday, July 13, 2011

JFall 2011: jBPM Migrations - providing a path into the future of BPM

My submission about the jBPM Migration Project for the NLJUG JFall conference:

 jBPM Migrations - providing a path into the future of BPM
This session will outline the status of our jBPM migration tooling project. We will take a look at the background of jBPM 3 process projects and how we plan to help you migrate to jBPM5. We will start by providing you with a plan for positioning your existing Enterprise jBPM projects for the eventual move towards jBPM5. This will cover the architectural layers involved, a look at the tooling being created for this and steps you can take to ensure a smooth transition moving into your jBPM future. Finally we will demo the existing tooling on an actual existing enterprise jBPM projects. This will provide you with real life scenarios to take home as examples for your own BPM projects. The presenters have over 6 years of combined enterprise jBPM experience and have completed award winning BPM projects in the Netherlands. They initiated the jBPM migration tooling project to assist the community with their migration concerns.

 See you there in Nijkerk on 2 November 2011?

JFall 2011: OpenShift - real development using cloudy JBoss

My submission to demo OpenShift at the NLJUG JFall conference:

OpenShift - real development using cloudy JBoss

  This session will provide the background on what PaaS is and what this means for you as a developer. We will separate this term from those like Cloud, IaaS and SaaS to give you a real solid basis of what this technology means to you. We will discuss why you would even want to make use of PaaS and what the future is going to look like for you as an Enterprise Developer. A large part of the session will demonstrate the current status of OpenShift. We will walk the audience through their first ever Cloud application running on OpenShift. The final part of this session will provide a look into the more advances levels of OpenShift, demonstrating the tooling provided to manage your PaaS deployments. We will discuss the various components that are available to you as a developer and how much control you have over these components.

 See you there in Nijkerk on 2 November 2011?

Wednesday, July 6, 2011

Fedora 15 - how to get 8GB of RAM recognised in 32 bit installation

When adding to the original 4GB of RAM my laptop had I wanted to max it out to 8GB. Off to the shop, purchased and installed 2x 4GB cards and booted it up. The Bios recognises 8GB out of the box, but Fedora 15 does not with the default 32bit kernel. You need to install the following packages:

# install PAE kernel.
#
$ sudo yum install kernel-PAE kernel-PAE-devel

Once I did this, rebooted and you can see the memory is recognised:

# memory shown for 8GB after PAE kernel installed.
#
$ free
             total       used       free
Mem:       8154348    5368672    2785676


$ grep MemTotal /proc/meminfo
MemTotal:        8154348 kB

Now my Java efforts are rocket fast on this machine!

Thursday, June 30, 2011

jBPM Migrations - hints and tips for jBPM3 node conversions (part 2)


Introduction

In the previous article we discussed the migration strategy as a whole and zoomed in on an initial problem with an event in a start state. In this article we will continue onwards in our exploration of the various concepts that play a role in positioning your existing jBPM projects for migration to BPMN2. 


Figure 1: two exit transitions.
In this article we will take you through some of the issues we have encountered in real life jBPM3.2 processes. This will be focused on node implementations that are inventive to say the least, but do not map at all to a BPMN2 process definition.


Down and dirty
When given the freedom to be as creative as only a developer can be, we should not be surprised when a BPM implementation starts to make use of the available constructs that jBPM provides. When we examine the usage of a node, we see a construct such as in Figure 1 (node2) which signifies a single process step. Here we would like to imagine there is a single unit of work being accomplished, like a call to a back-end system, a check of a process variable, etc.

Figure 2: add a decision.
This is all possible within the confines of  jBPM, but what we have often seen is the case of Figure 1 (node) which has two exiting transitions. The problem is that the Java implementation handler for this node has taken the liberty to make some decision based on facts present as to which transition will be taken upon exiting node. It might take transition yes or it might take transition no, we can't determine which transition will be taken based on just the process definition.

Figure 3: BPMN2!
When you run the jBPM Migration tool and feed it the process definition from Figure 1, it will not fail to transform this. How is that possible you ask? It was just stated that two exit transitions from the node was not allowed by the BPMN2 specification? Well, we validate all incoming jPDL against the provided XSD and all out-going BPMN2 against the FULL XSD of the BPMN2 specification. Funny enough, when you try to display this in your favorite BPMN2 editor, be that jBPM5 or Eclipse native editors, it will fail to display. This is because most of the editors around now are supporting a sub-class of executables from the BPMN2 specification and not the entire specification.

Figure 4: two incoming transitions
Until these editors either tighten up their implementations or broaden horizons we will need to massage the processes we have created. As you can see in Figure 2, a little bit of analysis shows us that the node needs to be expanded to include a decision for determining if we go with transition yes or transition no.

The final step is what we get when we run this through the jBPM Migration tool and generate a valid BPMN2 process. This can be seen in Figure 3. The nodes have been converted into scriptTasks and the decision was converted into a gateway (diverging).

Incoming transitions
Figure 5: fixed two input transitions.
Taking a look at the input side of our nodes, we can see that with a single incoming transition we have no problems with either validating, converting or displaying BPMN2. What would happen if we had a situation where there was a process defined such that node2 has two incoming transitions? This is shown in Figure 4 and any attempts to convert will again be processed by the jBPM Migration tool without problems as it validates against the full BPMN2 specification.

It is not really a very well defined BPM process and we should clean this up so that there are three distinct paths. This is a good idea because you can then supply accurate management information on which path through the process was taken. Look at Figure 5, you will find there are now end states for all three paths you take through the process. This allows us to report to our management how many yes paths, how many no paths and how many maybe paths were taken through this process. The final full BPMN2 process after conversion by the jBPM Migration tool is shown in Figure 6.
Figure 6: final BPMN2 process.

What's next?
Stay tuned for more, we plan to supply a series of articles that zoom into specific elements that you will find problematic in a process. We have covered start-state and nodes so far. We still have to look at end-states, states, transitions, decisions and much more.

JBoss Developer Studio 5 - upcoming release changes with SOA tooling

There are some changes in the structure of the JBossTools project moving towards JBDS 5 release. From this point onwards they are looking to separate the SOA tooling and posted the following in their release blog which I am bookmarking for future reference as I use these tools extensively.


Where are my SOA Tools ?
We are working on splitting out the SOA functionality (Teiid, Modeshape, Drools and jbpm) from the core distribution since the SOA tooling historically are not following the same release cycle of the core and thus at times it is beneficial that they can release their final version a bit delayed from the core. That means that for this milestone the main updatesite does not contain SOA tools but will for now be on a separate update site.


JBoss Tools - SOA Tooling update site:
http://download.jboss.org/jbosstools/updates/development/indigo/soa-tooling/


The final layout and distribution mechanisms might change as we collect feedback, but for now SOA is separate from the core.

Sunday, June 19, 2011

jBPM Migrations - hints and tips part 1

Introduction
Since we have started the jBPM Migration project I have been getting more and more inquiries as to how best prepare a jBPM3.2.x process for future migration to jBPM5. These questions have no easy answers, though I have tried to help you 'Get your BPM Ducks in a Row' at JUDCon last year in Berlin and again with more follow up at JUDCon in Boston.

With the last release of jBPM Migration Project (v0.8) we have reached a point of providing a fully runnable CLI Java jar component that eventually migrate your existing jBPM3 process definitions to jBPM5 in the BPMN2 format. This means it is now time to start thinking about what you can do to make the migration process as painless as possible.

In this first installment we will kickoff the discussion about migrations with a look at the process definition in jBPM3. We will discuss the background of jPDL and what this allows you to get away with in your process modeling. This article will conclude with a look at some issues you can encounter at the top level of your jBPM3 process definition.

jPDL gave us freedom
With jBPM3 you get a non-standard XML Java Process Definition Language (jPDL), which is not a bad thing as up to the acceptance of the BPMN2 standard everyone was left to sort out their design languages themselves. This jPDL is a simple and easily understood language that Java developers can very quickly understand and it comes with an XSD to allow for validation.

A down side to this jPDL is that you can do quite a bit of down and dirty work underneath the process definition layer (as I discussed previously, there are various layers in our jBPM projects) in your Java handler code. With the introduction of BPMN2 we now have a specification and standard that describes a more proper way of modeling and executing your BPM processes.

This new standard with it's requirements for modeling has shown us that when we as process developers are given the jPDL freedom to model as we see fit, we tend to come up with very innovative solutions to say the least! Trying to map these innovative solutions has shown that with a bit of thought and attention you can position you existing processes to easily migration to the future with BPMN2.

So let's get started with a look at the highest level of your process definitions. Here you should find something like listed here:

    < ## rest of the process definition. ## /> 
  
Up to now, I have been receiving process definitions from customers, partners and interested community members. I am amazed at the amount of process definitions that have either a missing xmlns attribute or it is not filled in with a version. As you can see above, to use our migration tooling we validate all incoming jPDL against its XSD. Make sure your process definition matches the toolings version!

If we take a look at how processes are started in jPDL, you might have decided it was a good idea to use the event element in a start-state like the following code shows:

   
    
      
        
      
 
      
    

    < ## rest of the process definition. ## />
  
Within BPMN2 it is not allowed to have an action take place in a start node. We are able to convert this by extending your process definition to include a Java Node (domain specific node extension to BPMN2) which we insert after the start-state. This allows us to execute the Java code you have in the MyHandler class before we move on to the firstNode. You can see the results in figure 1.

Figure 1: extra Java Node added.
This might not be an acceptable solution for your processes. In that case you will need to re-factor your process definitions to move the action to a separate node. This example clearly illustrates one of the many differences in how the jBPM3 modeling language allows you to accomplish an item of work in your process without clearly modeling it in your process definition. We will show more examples as we proceed through this series of articles.

This concludes our initial introduction to jBPM Migrations where we provided you with some hints and tips to help you start preparing your processes for migration to BPMN2 and jBPM5.

What's next?
Stay tuned for more, we plan to supply a series of articles that zoom into specific elements that you will find problematic in a process. We will look at start-states, end-states, nodes, states, transitions, decisions and much more.