Wednesday, September 22, 2010

JUDCon 2010 Berlin: Get your BPM ducks in a row - preparing for migration to jBPM5 (Accepted)

As previously posted, I submitted a session to JUDCon 2010 in Berlin and it has been accepted. I will be following Kris and Koen with their talk about the future of jBPM5:

Kris Verlaenen & Koen Aers - jBPM5: Are your business processes ready for the future?

Business Process Management (BPM) technology offers you to possibility to better manage and streamline your business processes. jBPM5 continues its vision in this area by offering an open-source, lightweight, embeddable process engine for executing business processes. Combined with the necessary services and tooling, this allows not only developers but also business users to manage your processes more efficiently throughout their entire life cycle. A lot is happening in the BPM area as well, 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, etc. This presentation will show you how jBPM5 tackles these challenges and give you an overview of the most important features.

I will have to adjust my story as I no longer need to talk too much about the jBPM future (they got that covered), but will focus most of my talk on preparing your jBPM processes for future migration to jBPM5.

Eric D. Schabell - Get your BPM ducks in a row - preparing for migration to jBPM5

With the recent shift to unify the projects DroolsFlow and jBPM4.x into jBPM5, we are all wondering what the impact could be to our existing BPM projects. What is new in jBPM5? What does one need to be aware of? What does one need to prepare in advance for a move to this new platform? All these questions and more will be discussed in this session.

First, we will take a look at what has happened historically within jBPM to get us where we are now, with jBPM3.x and jBPM4.x versions. We will discuss DroolsFlow in relation to the path towards jBPM5. Next we will take a look at the Request for Comments (RFC) that was put into the community and resulting architecture for the future of BPM within JBoss Middleware. This leads to a closer look at the resulting jBPM5 road map and how this will relate to the JBoss Enterprise BPM products moving towards the future.

Finally we will provide 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.


I am really excited to be a part of the first ever EMEA version of JUDCon, see you there?

Tuesday, September 21, 2010

Using Ant task to deploy jBPM process to running JBoss server

This question pops up quite a bit in development shops that don't happen to be using Maven (they are still out there) for whatever reason. They are looking to deploy their JBoss jBPM process definitions straight from their projects into a running JBoss server for testing.


Note that this is facilitated also in the tooling provided by JBoss. In your project you can use the tab marked 'Deployment' when viewing your process definition to directly deploy it into the server (see included image). This might be too many point and clicks for some of you so the Ant task will give you an alternative.

There is a task definition to deploy your process to the server, then using this you can deploy an set of process definitions by pointing to a directory or you can specify the process files directly. See below for first the directory deployment example and then the specific file deployment example (from the JBoss examples orchestration 4 project):   

Deploy process definitions from a directory

  Deploy the process definition
    
      
      
        
      
      

Deploy process definitions from individual files

  Deploy the process definition
    
      
      
Thee is a bit of complexity here with regards to the jBPM console login and password being passed via variables, but hopefully the XML is clear enough. Finally, don't forget when deploying processed one file at a time, that you first deploy all sub-processes before a process archive that needs them! ;-)
A final note, this was made available from jBPM v3.2.2 onwards.

Saturday, September 18, 2010

Syncing iPod Touch with iTunes broken after upgrade to Snow Leppard (osX 10.6)

I upgraded my macbook osX from 10.4.x to 10.6.x this last week, it was just time. I also came into a nice iPod Touch, so expected to sync it just fine with my iTunes as I had been doing with a smaller iPod Nano I have.


After the upgrade though, I plugged in the iPod Touch and nothing happens. I did the remove and install iTunes (including upgrading to version 10) as the support suggests online, but to no avail. It appears I needed to remove much more of my setting that were scattered around my system from the original iPod Nano. Here is all I had to do:

  1. Quit iTunes.
  2. In the Finder, choose Go > Applications.
  3. Locate iTunes and then drag it to the Trash.
  4. Choose Go > Utilities. If Utilities is not available under Go, then choose Go > Go to Folder, type in /Applications/Utilities/, and then click Go.
  5. Open Activity Monitor.
  6. In the process list locate and select iTunes Helper. Click Quit Process. When asked if you really want to quit the process, click Quit. 
  7. Quit Activity Monitor.
  8. Open System Preferences (choose Apple > System Preferences).
  9. Choose View > Accounts and then click Login Items.
  10. Look for the iTunesHelper entry and select it, then click the "-" button to remove it from the list.
  11.  
  12. Quit System Preferences.
  13. From the Finder, choose Go > Go to Folder
  14. Enter (without quotes) "/System/Library/Extensions" and then click Go.
  15. Locate the file "AppleMobileDevice.kext" and drag it to the Trash.
  16. Choose Go > Go to Folder.
  17. Enter (without quotes) "/Library/Receipts/" and then click Go.
  18. Locate the file "AppleMobileDeviceSupport.pkg" and drag it to the trash.  Note: This file may not be present in Mac OS X v10.6 or later; skip to the next step if this is the case.
  19. Remove any other file ending with ".pkg" that has iTunes in the title (such as "iTunesX.pkg").
  20. Restart your Mac.
  21. Empty the Trash. This should fully remove iTunes.
Now you have done the basics, but there was more needed for the old iPod Nano settings:
  1. In the Finder, choose Go > Go to Folder and type in ~/Library/ and click Go.
  2. Locate the iTunes folder and then drag it to the Trash.
  3. Choose Go > Go to Folder and type in ~/Library/Preferences/ and click Go.
  4. Locate the preference files that have names beginning with com.apple.iTunes and move them to the Trash.
    File Names should be:
    • com.apple.iTunes.eq.plist
    • com.apple.iTunes.plist
    • com.apple.iTunesHelper.plist
  5. Choose Go > Go to Folder and type in /Library and click Go.
  6. Locate the iTunes folder, and then move it to the Trash.
  7. Choose Go > Go to Folder and type in ~/Library/Preferences/ByHost/ and click Go.
  8. Locate the preference files that have names beginning with com.apple.iTunes and move them to the Trash.
  9. Empty the Trash. This should fully remove the files and folders associated with iTunes.
Now go get the newest iTunes and install it. This took care of all my problems, just plugged in the iPod Touch and it sorted itself out just fine!

Thursday, September 16, 2010

Scanning multiple documents/images into single PDF with Linux

This is just a great tip if you need to scan in multiple pages and create a single PDF file while using a single page scanning (flat bed scanner) with you brand of Linux.

Just fire up the scanner (assume it is all configured and works fine with for example SANE) and then open an Open Office Writer document. Then select Insert->Picture->Scan->{Select Source|Request} to scan the single page into your .odt document.

When all finished adding in the pages, you can then export the document as a PDF via File menu!

jBPM 3.x does not work in JBoss cluster using transactions?

I often hear this from different sources in my JBoss travels, that jBPM 3.x does not play well in a cluster. With this post I hope to document the solution a bit better for those of you out there searching for the answers to your clustering jBPM problems.

First off, have no fear! Your problems are self induced. This is most often caused by deploying jBPM within a cluster using the provided JMS implementation (messaging queues configuration).  In the on-line documentation you will find the following is stated in section 10.2:

"jBPM can be configured to use a JMS provider or its built-in asynchronous messaging system. The built-in messaging system is quite limited in functionality, but allows this feature to be supported on
environments where JMS is unavailable."


If you are trying to use async messages with the JobExecutor and then it replicates this queue without a proper JMS implementation. You then get jobs starting all over your cluster. I suggest trying a real JMS messaging implementation like JBoss Messaging as provided in the JBoss Enterprise Application Platform.

Just read a bit further in the documentation and you will find how and where to configure this properly:

"The graph execution mechanism uses the interfaces MessageServiceFactory and MessageService to send messages. This is to make the asynchronous messaging service configurable (also in jbpm.cfg.xml)."

I hope this helps out in your jBPM projects

Thursday, September 9, 2010

How Google approaches a Red Hat employee (a missed opportunity)

I was approached by an internal Google recruiter (for the 4th time now in the last 5 years and for the 2nd time by this same recruiter). I have continually said no to them as it always meant a move away from my home, with small children I did not see the benefits in doing that at the time. I have never truly interviewed with them beyond the initial email and one inquiry that was via the phone. Since 2009 I have been working for one of the best companies I have ever been involved with and have no reason really to want to move on, but there it was on July 31:
Hi Eric,

We exchanged emails back in March about roles at Google. I am with the in-house staffing team. I am just following up with you to see if you are still happy where you are. 
If anything changes, please let me know. I would be interested in speaking with you.

Have a nice weekend!
Regards,
XXXXXXXXXXXX
GOOGLE
xxx-xxx-xxxx Google Voice
xxxxxxxx@google.com

I got to thinking that if there is someone that just keeps being so persistent that they must really be serious about this. Maybe time for me to listen to what they have to say? My reply on Aug 4:

Maybe it is time I listened to your offer? My biggest question is what would you have in mind for me? I imagine you have looked at my CV / experience online and have some ideas? I would like to hear them first.

That got me a call and a discussion on what Google has to offer and what Engineers are to Google. It boiled down to filling in a questionnaire on my preferences and  two interviews and then coming on-site somewhere where they thought I might fit in. I assumed it was for a serious position, but turns out that Google has but one way to interview, treating everyone like they just came out of school. Case in point, the questionnaire was not too unusual:

Hi Eric,

Thanks for your reply.  We are excited that you are interested in our career opportunities. I thought your profile was a good match for Google because we look for Java and Linux experts who are involved in the open source community and like to mentor others. We also look for people who went to good schools and have experience working for solid companies like XXXXXXX.

Please let me know if you have 15 minutes to talk between 10am and 4pm any week day this week or next. I have included some information about our hiring process and a questionnaire. If you are interested in exploring Google, please reply with your resume when you have a chance

Because technologies, our business needs, and our employee's interests are always changing, rather than targeting people who are purely specialists, we want to hire engineers who have the versatility to move between new and interesting projects throughout their career here.

While we don't initially target candidates for specific projects, we do want to ask them about their project preferences and their skills.  Our goal is to have a win/win situation where we can identify a project that both fits Google's needs, and is also of interest to the Noogler -- because they will be the most productive in these circumstances. 
So having said that, we would love to have you interview with us if you are interested.  If you do consider interviewing with us, please email a copy of your latest resume and fill out the following information and I will set you up for a phone interview with an engineer right away provided your skills and location preferences match our open positions.
To better understand your background, please share the following about yourself...(short answers are fine)

1) Languages:
Please select the language(s) with which you are MOST proficient (no more than 3 please) in order of preference.

• C
• C++
• Assembly x86
• C#
• GWT
• HTML
• HTML5
• Java
• JavaScript
• Objective-C
• Perl
• PHP
• Python
• Shell
• SQL
• None of the above

2) Technical Skills:
Please identify your TOP areas of development expertise (no more than 3-5 please) in order of preference. It is to your advantage to only select your strongest areas, and to avoid the urge to list "everything".  Also indicate if you would like to continue working in this area of expertise.

• Advanced Algorithms
• Audio/video
• Billing/payment testing
• Compilers and software tools (linkers, debuggers, IDEs,   etc.)
• Computer Vision
• Concurrency, multi-threading, synchronization
• Database internals
• Distributed systems
• Embedded software and real-time systems
• Front End
• Graphics and imaging
• Information retrieval and data mining
• Internationalization
• Load and performance testing
• Mac and iPhone development
• Machine learning and AI
• Natural language processing
• Networking (TCP/IP and OSI stack)
• Object-oriented analysis and design
• Operating systems
• Production Systems
• QA
• Security and cryptography
• Test automation
• Unix/Linux Internals
• UI design and implementation (specify if you do this more on the design art side, or the software side)
• Web applications and multi-tiered systems
• Windows development
• Wireless applications


-Give a very brief description of what you currently work on and whether or not it is front end of back end technologies?
-What kind of position are you looking for? Role interests?
-Are there any particular projects or areas that you would enjoy working on while at Google?
-Are you open to working outside your expertise area?
-What percentage of the time are you coding and in what language?
-Have you ever interviewed with Google before? When?
-Do you know any professional acquaintances at Google? Who?
-Do you have any time constraints (offers expected, vacations planned, upcoming releases, etc.)?
-Are you interviewing with other companies? (If yes, at what step of the process are you?)
-What motivated your job search at this time?
-We consider our general engineering candidates for both development and Test Engineering or Site Reliability Engineering (keeping google.com up and running 24/7). Are you open to that?
-Are you eligible to work in the U.S.?
-What are your location preferences? Will you be willing to relocate?
-Confirm current location where you are living.

Additionally, please let me know the following:

1-Five to six time ranges and dates within the next 3 weeks when you would be available for a technical phone interview. (between the hours of 10am and 4pm California time, Mon-Fri)

2-The best number for the engineer to reach you.

I look forward to hearing from you.

Regards,

XXXXXXXXX
GOOGLE
xxx-xxx-xxxx Google Voice
xxxxxxxxx@google.com

The interviews where another matter. I feel like they just want you all to 'dance' and that it used to be the way to blink out and be something special in the job market. Everyone wants to work at Google right? Not really when I have been working long enough to have a career, work hard to cultivate my working image, publishing, teaching, mentoring and open source activities.
I thought I would see what the first interview was like and take it from there. This is for me when a company lets you see how their internal processes work, what the P&O office is like, basically how on the ball everyone is. The first one went like this:
Call from California, from 1900 - 1941 hrs local time with the following 4 questions asked by a Google engineer originally from Israel on Aug 16:
  1. Tell me about one thing you have engineered / done?
  2. What were the engineering challenges?
  3. Puzzle question: showed me an image on a Google Docs document that included line segments, needed to write a function (try coding Java without hitting CMD+Spacebar, my reflex move to fill out code snippets, had the interviewer laughing at me!) to determine longest line formed by segments that aligned.
  4. Explain to me what happens when you request an image in your browser how it gets there (the entire process)?
 At the end we chatted a bit where I tried to find out what they wanted me for and why. The interviewer was pretty evasive and it should have been a hint as to what was happening. I was getting a general SW engineering interview process like I had just left school.
Unaware, I get a reply from the recruiter that all went well and that foreign candidates have to interview twice, so on Aug 25 the second interview. This one was a bit different, lots of talking from the interviewer about how his Google experience goes and how it all is structured. It was a nice start but then it took a turn towards more puzzles. He only wanted to ask one question, was almost apologetic and stated that they might need to rethink the process for more experienced people. Anyway, the quiz question:
  1. Given input of a number N, write a function (verbally on the phone) to return an array that splits N into combinations of 1's and 2's. 
I was not too thrilled about this after working all day. I stated this and he agreed that he would talk to the recruiter and see what the deal is. He was interviewing me for a basic SW Engineer post and they just seemed to be like those evening cold callers trying to sell something. They have a script in front of them and that is how it is going to go, no matter what. I thanked him and broke off the interview. Thanks for the coffee...

On Sep 3 an email from the recruiter:

Eric,

Thanks for interviewing with XXXX. There seemed to be some confusion. We had discussed a Software Developer role on the phone and XXXXX indicated you were not happy interviewing for that position. I was not clear on this. Our Architects are integrated in to our development groups and they do a lot of coding. Did you have something else in mind?

Regards,

XXXXXXXXXXXX
GOOGLE
xxx-xxx-xxxx Google Voice
xxxxxxx@google.com

My reply was as honest has I could be, on Sep 6:

Not really confusion on your part, but more puzzlement on my part that I would have to go through several of these interviews that feel more suited for someone who just left school (puzzles, etc). I am not up for that kind of interview process I guess. Feels a bit demeaning. I feel that I have reached a point in my career that I don't need to 'dance' for anyone. This is what it has now started to feel like.

If you have some position in mind for me, put me in touch with those in Google who like what they see in me. If not, I am declining the existing process.

The reply rather missed the essence (note the part that I 'showed interest in Google' while I seem to remember being approached by Google. On Sep 7:
 
I'm sorry that you did not like the interview process. The interviews are very CS fundamentals based and they do require some brushing up for most candidates. 

Thank you for interviewing and for your interest in Google.  We carefully reviewed your background and experience, and though we do not have a position that is a strong match with your qualifications at this time, we will be keeping your resume active in our system.  We will continue to use our database to match your profile with new opportunities and will reach out to you if we find an opening for which you may be qualified.

Thanks again for your interest in Google's careers and unique culture; we hope you will remain enthusiastic about our company.

I don't think they are interested in me so much, more like a developer fresh from school would be the good fit. Maybe too many Google employees are leaving to join Facebook?

It seems to me to prove that they only have one way to interview. Either you dance, or you are not invited to the ball. It's a shame really...

Thursday, September 2, 2010

Financial Crisis Front Lines - SNS Bank in BPM Excellence in Practice 2010

"Congratulations again on your important chapter being published in the BPM Excellence in Practice 2010: Successful Process Implementation. This note is to let you know that we approved the book’s Proof this morning and expect to receive our bulk books from the printers in about three weeks."

I got this in an email today which signals the final publishing of our winning chapter of our jBPM experiences at SNS Bank. They are offering a discount if you pre-order:

Through a special arrangement with the publisher, we offer our visitors 30% pre-launch discount on BPM Excellence in Practice 2010. Please read our award-winning case study found in Section 1. 

1. Click on ORDER FORM at http://store.futstrat.com/servlet/Detail?no=83
2. Add the book to your shopping cart, update the quantity of books and click “checkout.”
3. In the Promo Code Box on checkout put EIP-30 and confirm the order.Your order will be confirmed and your books will ship as soon as we receive them.
I hope you enjoy the chapter as much as we enjoyed implementing and reporting it!