Tug’s Blog

Redis, NoSQL and more…

My (Work) Life on a Key: XWiki and Other Portables Applications

| Comments

Now that I am back in consulting business, I often have customers where I am not allowed to connect my Mac on the network. Annoying!!!! But this is not a big issue since now it is easy to bring you environment on a USB key.

XWikey: my wiki on a key

On a daily business, I have installed my personal XWiki on my 2Gb USB Key, and a JDK (for windows, on OSX I am using the default one). So with this solutions I have my personal CMS, Website and applications with me, and I can use it from any computer available. I work on any site, any meeting room directly on my Wiki even when I am not connected. I am using a packaged Entprise XWiki that comes with Jetty and HSQL, so it is a complete and self contained environment. I just changed the start and stop scripts to point to the JDK that is on the key. Nothing exceptional here, but it is very useful.

Others portable applications

I know that a Wiki is not enough most of the time to “ bring your life with you”, and you may want more, such as Open Office, Mail and Web clients, … Some of the packages you can use:

The next test will be to run the OS from the key, I have not done it yet, have you? Some options for this:

Oracle Acquisitions… Cannot Remember All of Them?

| Comments

A friend of mine asked me some questions about Oracle and acquisitions. He could not, remember all of them and when they occurred…

If you have the same questions take a look to the Oracle Acquisition page on Oracle.com since 2005:

  • Oracle Strategic AcquisitionSome others are probably missing since in 2003/2004, Collaxa was acquired by Oracle. If you do not remember Collaxa was the first release of the BPEL Process Manager.

You can also take a look to a part of the site that I like that is the Oracle’s history.

Oracle JAX-RPC: How to Change the Character Encoding?

| Comments

By default Oracle Web Service client is sending the SOAP messages using an UTF-8 encoding. This is the recommendation of WS-I Basic Profile. To be exact it says UTF-8 or UTF-16.

It is quite simple to change this encoding…

First you have to know that the JAX-RPC container will return the same character encoding than the one that is received. To change the character encoding, you just need to set the ClientConstants.CHARACTER_SET_ENCODING to the value you want to use. Here some simple client code:

1
2
Stub stub = (Stub)myPort.getPort();
stub._setProperty(oracle.webservices.ClientConstants.CHARACTER_SET_ENCODING, "UTF-16");

Most of the Web Services stacks are offering the same kind of utility to do that, for example here the property you must set to do the same in IBM’s JAX-RPC implementation: com.ibm.wsspi.webservices.Constants.MESSAGE_CHARACTER_SET_ENCODING.

My First Sogeti Kickoff: A Great Experience

| Comments

Last week, more than 400 people of Sogeti group were meeting at Les Fontaines, for the annual KickOff. It was for me the first big event since I have joined this company last October.

Les FontainesLes Fontaines, is the training/conference center of the Cap Gemini Group located 30mn from Paris. I have to say that it is really a great place. Click on the Les Fontaines to see  what I mean…

First of all it was a great experience to meet my colleagues from all over the world , Sogeti is a company of  16,000+ people, all over Europe, in the USA and India.  The main theme of this 2008 Kickoff was “Web 2.0”, the reason why I was invited indeed. If most of the technical people are using internally and externally Web 2.0 tools such as wikis, blogs, ims, .. It was important to have during this kickoff an “overall” brainstorming about the use of this tools for the group, but also how we can leverage of knowledge to help customers to be more efficient in their business.

As part of this theme our marketing folks have invited external speakers:

  • Rolf Jensen : talking about the Dream Society, explaining that the next step for business is to add an emotional aspect into it, to add value…  I am a emotional person, and I can tell that I am buying Rolf’s idea, and like most of Apple fan you can tell how important are the emotions to do business…
  • Rod Bekstrom, co-author of the well known book “The Starfish and The Spider” focusing on the fact an company must shift  from a centralized organization to a decentralized one. You can listen to the presentation online on Rod’s site.. I have to say that I soon as I have finished my current readings (RestFul Web Services-O’Reillys & Get Things Done) I will order this book. I really found some inspiration in Rod presentation, and his ideas could be immediately put in place in your organization or at your customer site.
  • Last but not least, Nick Donofrio, EVP Technology and Innovation, talked about the important of innovation for the enterprise, and how we do not control the changes but we should adapt to it in a productive manner to stay at the top.

However, I would have loved to see Francois Nonnemacher on the stage too since I had the opportunity to see him talking about Web 2.0/Social Computing for the enterprise and he is terrific… and also because as far as I know he has worked at Cap Gemini few years back

I really enjoyed all these presentations, in addition to the one that I have cited, we had many Sogeti’s speakers including Sogeti CTO Michiel Boreel.

IBM ProjectZero: A New Development Model for Commercial Software?

| Comments

You have probably heard about IBM ProjectZero, this “incubator”project from IBM pushing a new way of building, assemble and run Web applications. I won’t talk about the technology in this post, it will come later, but just comment about the way this project is developped: a Community-Driven Commercial Development process.

The idea behind this “process” is to apply to a commercial software, ideas that are common  in free software. As you see I am not talking about “open source” since Project Zero is open source, it is really about the way a “commercial” software is built…

If you take a look to the “About” page of ProjectZero you can learn more about this process/ideas. Some key points:

  • the development team, mainly IBM folks, want  feedback, insight, suggestions, and criticism from the community. So we as the community can really be involved in the product in a stage where it is usually inside IBM labs without any visibility for non IBM employee… This is quite exciting to see that we can really discuss with the development team as they do the product, and we can see the product evolving based on “real” customer requirements/comments.
  • so as “future” user of the production release I can discuss the features. As a developer of the “current” development release I can participate to the future product.
    So what you may be tempted to say, especially if you are a lot involved in open source and free projects, but you have to admit that it is quite a switch for commercial product.Project Zero is not the only project that is using this approach Jazz from the rational team is also on this model. 

In the same time if we consider, GlassFish, we do have more or less an equivalent, that is the JavaEE RI and the Sun Application Server… but here on Jazz or Project zero it is really happening on a brand new product that is not a reference implementation but new products part of a commercial R&D lab…

I am still a little confused to see what will be the license when release 1.0 goes out… Just wait and see.. hmm sorry I should say “just participate and see”.

New Poll: Which ‘Web 2.0’ Tools Are You Using for Business?

| Comments

I have just created a poll -see leftbar- asking to list the different tools you are using for business. In fact I would like to have some feedback of you use of Wiki, Blogs, Instant Messaging on you daily job.

Myself I am using all of this for work:

  • Internal and external communication with Wikis
  • My blog that you are currently reading
  • Chat, I use probably more the chat than phone these days (thanks to http://meebo.com when I cannot connect with a rich client)
  • Social Networking: I am not necessarily talking about big sites like LinkedIn/Facebook but more internal sites. For example, back at Oracle we had access to an internal Social Network site, that is now exposed at http://mix.oracle.com, and now at Sogeti, in the Cap Gemini group we do also have internal social networks.The idea behind this post/poll is to be able to discuss, with customers around Web 2.0 tools adoption in the enterprise. So do not hesitate to post a comment describing the tools and how you are using them for business.

Thanks for your vote ;)

Infoq News: ‘Request: Sun Drop Support for JRuby

| Comments

With the latest big news around Oracle-BEA and SUN-MySQL deals I have missed an interesting article on Infoq with the following title:

I have to say that I do agree with Craig Wickesser asking Sun to Drop Support for JRuby.

Syntax Matters?

Yes syntax matters, not only for the “beauty” of it, but also because of the investment that enterprises have made into it. We should not force people to completely remodel their brain all the time, for no gain. 

I love Groovy language, and one of the main reason is because it gives me the most bang for my buck. Java people can immediately catchup with the syntax, and step by step leverage powerful features available by dynamic languages and domain specific languages. I was hoping to see a great adoption by SUN… It is one thing to support scripting with the JSR-223, but SUN has to “endorse” a scripting, and from what could be seen today it is not Groovy nor Javascript. When we see all the marketing noise it is Ruby with JRuby… And I do not think that is necessary good for the Java platform.

Do not get me wrong, I think that is a great idea, and need for Java to be able to execute many languages, for example we see a lot of IBM WAS and BEA WL administrator using Python to administer their application server instance with Jython. But once again the “default” one should be close to Java and integrate with it as close as possible to reduce the impact on scalability and performances, and I do think that Groovy did a great job on these topics.

What about RubyOnRails?

I am not a RoR expert, far far away from it, but I have learned it, and developed small applications with it, and I have to say that I love this framework.  And I am sure that like many Java developers that used RoR, I was thinking:  ”If only I had the same productivity in my favorite platform: J2EE…“.

I was not expecting to run RoR application as-it-is, but more hoping that JavaEE will learn from RoR to simplify development…  And… somebody did it, with Grails. Grails takes inspiration from RoR, but in a “real” JavaEE environment, since it leverages key pieces of the current Java applications such as Hibernate and Spring, using the power of Groovy to glue all this together.

In conclusion…

I do not know for you but yes I do think that SUN should drop support for JRuby, and in place push a language more natural for existing Java Developers, I vote for Groovy. In addition to the language itself, I also expect the JavaEE EG to provide a more productive way of developing “simple” Web applications. This is where I see Grails coming in the picture, but many other framework could do the job, taking advantage of some interesting concepts of RoR…

As Rick says, I (we?) am not looking for a Revolution but for an Evolution.

Which Sites Are You Using for ‘Business’? Another Web2.0 List…

| Comments

Disclaimer: you do probably already know all these sites if you are like me spending lot of time on the Internet… (too much time?) But still, some people could be interested, like the customer I have been working with lately…

During a presentation to a customer around Web 2.0 and Social Networking, which sites do I use myself and why they could be interested for customer and their business…. So I really quickly write up this list, and just want to share it here…

Social networking… and many more. More and more important in business.

Multimedia site… I am sure you all use it daily. I have used this to share pics about events (internal or external).

Social Bookmarking…

Social links, content is rated by user.

Project Management tools,

Google services are terrific, as user or developer.

http://docs.google.com http://google.com/apps http://code.google.com http://maps.google.com

Public and free wiki that I used to communicate with customers, coworker and friends.

News and content syndication.

Blogs…

http://wordpress.org/ http://blogspot.com http://typepad.com

I use these site as consumer, but these services are more and more important in customer business, and will be part of our job as developer/integrator.

Hmm, when you see this list you can tell that I am a very happy Google user, and I have not talk about the other services that I use from Google: Gmail, GTalk, Analytics, Notebooks, and obviously the search…

Web Services and Files Exchange

| Comments

SOAP based Web Services are now very common in the enterprise architecture, and quite often, applications that consume or publish services would need to send binary content such as images, PDF or Word documents (or anything you have in mind…). The SOAP and XML provide different way to achieve this. So what are the challenges around binary data exchange using SOAP based Web Services:

  • The main goal of Web Services is interoperability; so when you are offering a service, you need to be careful about the technical choice you are making. SOAP has been one great success in term of interoperability. I am aware that REST is also a very good fit for that but since I talk about SOAP and later WS-* standards, I do not want to talk about REST more in this post, the only thing that you can put in your mind is before choosing to implement SOAP based Web Services, ask the following question to yourself: “do I really need SOAP services or REST would be enough?”… That said let’s continue on SOAP and binary content exchange. When talking about binary content, the interoperability comes with some trade off around for example performance/message sized or impact on developer. This will be discussed later, but always keep in mind that interoperability is the key point of Web Services. If this is not the case on your project, that means you probably do not need to use SOAP that has an important overhead in general.
  • Performance and Scalability is also quite important when you are building a service based application. Especially that often you cannot predict exactly how much a service will be used. We have to keep in mind that often services are build to be reusable, it is one of the basic best practices of development, so if the service is really “reused” it is important to keep it running with acceptable performances. This is why when talking about binary content, with SOAP it is important to talk about the impact of it on the size of the message and the processing cost.
  • When using SOAP Composability is also quite important. In the context of binary content exchange with XML/SOAP it is important to support composability of the WS-* standard, and this in a performant manner. An example would be that a services that is sing WS-Security to sign part of the messages should be able to sign the PDF document using the same standard.
  • Impact on development: it is interesting also when choosing the way binary content should be exchanged with SOAP, to see how much impact it has on the development itself. Does a developer must import specific API to be sure that the binary content is properly sent/consumed by the server or client. Note: I will talk about Java here, and particularly about JAX-WS/JAX-RPC since it is the stacks that I know the much, but the remarks would be the same on all technologies.Let’s now dive into the different options that are offered to a developer/architect to exchange document using SOAP:

  • XML Base64 encoding

  • SOAP With Attachment (SwA) using MIME (Multipurpose Internet Mail Extensions)
  • SOAP With Attachment using DIME (Direct Internet Message Encapsulation)
  • Message Transmission Optimization Mechanism (MTOM)

First of all, I will not talk in detail about the 3rd point around SOAP with Attachment with DIME, for a simple reason: this approach has been pushed by Microsoft around 2003/2004 and it is now deprecated in favor of MTOM.

Base64 Encoding

Base64 is part of the core XML capabilities, and when using it to exchange binary content in a SOAP message it has some very good advantages:

  • Since it is part of XML itself, it has a great interoperability, I can say that all stacks will be able to consume or send messaged that contains Base64 data.
  • For the same reason it does not have any impact on development, most of the Java stacks will automatically use base64 encoding when byte[] paramters will be present.
  • Always because of the fact that is it 100% XML based, the composability with other XML/WS-* standard is very good.
  • So far everything looks great for this approach, but the trade off is the following: Base64 encoding is not efficient, since “lot of” CPU will be used to encode and decode the binary content. In addition the size of the encoded data would be around 30% bigger than the binary content itself. (It can still be used for small dataset)

SOAP with Attachment (SwA)

The SOAP with Attachment specification is the first effort of the Web Services industry to solve the problem of binary content with SOAP. The idea is to In addition to the W3C Note, the WS-Interoperability organization, has extend this recommendation to create a basic attachment profile to enforce the interoperability of it, using the SOAP with Attachment Reference (swaRef).

  • The good part of SwA and is the fact that it has been noted by the W3C but also adopted by the WS-I organization. But in fact the interoperability is not that great, mainly because none of the Microsoft Web Services solution support SwA. It is true that most of the Java stacks, starting with the standard JAX-RPC/JAX-WS is supporting SwA and swaRef but it is not enough to call it a good interoperability.
  • The reason why Microsoft refused to implement it, and why it is only a W3C note (and not a recommendation) it is because SOAP with Attachment has poor composability. The reason why it is hard to use WS-* standard with SwA, it is because it breaks some part of the model by ignoring the SOAP/XML processing and just put the document in the MIME header, and a simple reference to it into the SOAP message.
  • *SOAP with Attachment is efficient, because of the previous point. The SOAP stack does not really deal with the content and just stream it into the MIME header.
  • When it is used with JAX-RPC and JAX-WS, has an impact on the developer, that must use specific Java API to build it service and put specific data types in the WSDL. The impact on development is not large, but still developper has to think about providing the good method signature or WSDL entry to enforce the use of SwA/swaRef in its service. Where I do believe most developers would expect this to be transparent.

Message Transmission Optimization Mechanism (MTOM)

The last mechanism is also based on MIME on the wire to exchange the binary content, but the way the message (SOAP+MIME) is build is totally different from the previous SwA approach. MTOM has been based on the “experience” of the others mechanisms, to be able to support composability without impacting the performance and the development.

  • Interoperability is virtually great. It is great because it has been pushed by major vendors such as IBM, Microsoft, BEA, Oracle and it is a W3C recommendation, so interoperability should be good. I put a “virtually”, because to be interoperable the various Web Services stack must implement it, and it is not the case yet. Today, most of the latest stacks are supporting MTOM so it should not be an issue if you are starting a project.
  • Composability is perfect, since MTOM does use the SOAP envelop but it provides an automatic and transparent optimization to put the binary content on the MIME header. During the serialization of the message, the SOAP engine is working with the content with a temporary base64 representation of the content allowing all the WS-* operation needed, for example an XML signature, but without the overhead of dealing with base64 over the wire.
  • MTOM appears like the most efficient way of dealing with large document and SOAP.
  • Because MTOM is using the same approach than the pure XML base64 process, it does not have any impact on development. In fact this the the Web Service stack that choose to use base64 (embedding the document) or MTOM over the wire. And this could be done in conjunction with a WS-Policy. As you can see in the WS-MTOMPolicy this is not under the control of the developer but more under the control of the administrator and then the applications to choose or not to use MTOM.

But… Which one I should use?

Based on the different points described earlier is looks like MTOM is the way to go; even if this is true it cannot be summarized to this. First of all MTOM is not supported by all the stacks, so if you cannot control the consumers of your services and cannot impose a modern stack, MTOM may not be the best approach. For me, the second on the list is the Base64 approach, because of high interoperability but it is important to remember that has an impact on performance/processing. I personnally would not push SwA because of its non support in the Microsoft world… As you know the world is not yet 100% Java based ;).

Let’s take a look on which stacks are supporting MTOM today:

  • JAX-WS reference implementation (and Metro)
  • IBM Websphere 6.x with SOA Feature Pack
  • BEA Weblogic 10* OracleAS 10gR3 (10.1.3.1) JAX-RPC and FWM 11 preview (JAX-RPC and JAX-WS)
  • Axis2
  • XFire
  • JBossWSYou can find more information on these comparison matrices : Apache WS Stack Comparison and Xfire Comparison Matrix. (these two are probably very interesting to keep… unfortunately they do not contains any MSFT data. I had one in the past, but cannot find it… if you have such matrix feel free to post it in comment.)