Sunday, January 30, 2011

My top company web sites

Together with ioGreen guys we're working on our new web site. The key issue about it's new version is that it need to be more business-oriented and "serious".

We decided that each of us have to find five of his favorite company pages. Then we will compare them and choose the best.

Here are my top 5 for this moment (in order). Please note that pages are intended to be "serious" in design. No magic minimal web pages from Site Inspire.
I prefer lightweight and minimal web design. However Java middleware-oriented companies use to be serious and heavy in design. There are many spiffier pages. But my top pages find good balance between business (heavy) and lightweight web design.

Your favorites?

Sunday, January 16, 2011

Wetware - My learning schema

Inspired by SQ3R learning method described in Refactor Your Wetware. Here is the learning method that works best for my humble person:
  •  acquire learning resources about the topic you want to learn. Buy books, download articles, podcasts, Youtube videos, search in Google Reader and so on.
  • create survey based on the acquired learning resources. Read tables of contents, articles leads, etc. At this point try to specify what do you want to learn (specific objectives).
  • read the content of the resources. How one gets to Carnegie Hall? Meta-learning techniques is the one thing, but you actually have to acquire the knowledge. Read, read and read once again.
  • ask yourself inquiring questions about the content (and write them down). Be courious while reading. Be hunger for the answers. Write down all your doubts that occur during the lecture. Asking the right questions is the form of learning as well.
  • rephrase the content (and answer the questions). Process what you've just read. Try to apply the facts to the questions you asked before.
  • summarize the questions and answers - then write them down.
  • iterate from the first step again if you want to become even better in the topic. 
Key activities regarding the learning process above:
  • asking questions
  • trying to identify the most specific objectives of the learning process
  • reading (listening to) the resources
  • answering your own questions using the rephrased expressions
  • writing down the questions and answers

Tuesday, January 11, 2011

Camel Extra 2.5.0 officially released

Two days ago we released Camel Extra 2.5.0 . It is now available at Camel Extra Maven repository.

There was some problems with Camel Extra being released together with the main Camel distribution. Due to that problems people using latest Camel-Extra modules used to download the Camel-Extra Maven project and build it locally. Such approach was immature and annoying at least. We promise that starting with 2.5.0 release we will always deploy the latest Camel-Extra together with the main Camel distribution. No more mandatory local builds from this point :) .

In order to use the latest stable version of the Camel Extra use the following repository:
<repository>
  <id>camel-extra-release</id>
  <name>Camel Extra Maven repository of releases</name>
  <url>http://camel-extra.googlecode.com/svn/maven2/releases</url>
</repository>

You may ask why Camel Extra cannot be synchronized and hosted in the same repository as main Camel distribution (Apache repository for example). Actually that's good question. But stay tuned - we're working on that issue :) .

Thursday, January 6, 2011

Committed JiBX data format for Camel

I have just committed new JiBX data format to the Apache Camel project.

Camel is an amazing routing engine serving as a core for the best ESB implementation ever i.e. ServiceMix. JiBX is the high performance XML binding library for Java.

Since now you can (un)marshal your Camel messages with out of the box JiBX support, without need to create your custom JiBX components.

New JiBX component will be available with the 2.6.0 release of Apache Camel.

You can use JiBX component with both Java DSL...

// Marshal message to XML using Java DSL.
from("activemq:My.Queue").
  marshal().jibx().
  to("mqseries:Another.Queue");

// Unmarshal message from XML.
from("mqseries:Another.Queue").
  unmarshal().jibx(PurchaseOrder.class).
  to("activemq:My.Queue")

... and Spring DSL...

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">

  <!-- Define data formats -->
  <dataFormats>
    <jibx id="jibx" unmarshallClass="org.apache.camel.dataformat.jibx.PurchaseOrder"/>
  </dataFormats>

  <!-- Marshal message to XML -->
  <route>
    <from uri="direct:marshal"/>
    <marshal ref="jibx"/>
    <to uri="mock:result"/>
  </route>

  <!-- Unmarshal message from XML -->
  <route>
    <from uri="direct:unmarshal"/>
    <unmarshal ref="jibx"/>
    <to uri="mock:result"/>
  </route>

</camelContext>

Enjoy.

Tuesday, November 16, 2010

PhD here I come

I decided to officially start my PhD dissertation.

My primary research area can be summarized as improving reusability and repeatability of the middleware solutions based on the Open Source Java software. I'm particularly interested in the solutions based on the Apache ServiceMix stack i.e. Camel, CXF and ActiveMQ.

I started my PhD-oriented portfolio here. It's intended to summarize my progress in the PhD research.

Wednesday, October 13, 2010

Camel Enterprise Integration Patterns - Message Channel

Hophe and Woolf distinguish six types of Messaging Systems Patterns. The first of them is Message Channel.
  • it is medium defining how application communicate with another
  • it can be located using logical address
  • it can hide complex messaging infrastructure (proxy, facade)
  • it is usually configured at the deployment time
  • set of well orchestrated channels == ESB
Good examples of Message Channels are:
  • JMS queue/topic
  • files located on file system
  • SQL tables
  • HTTP/SOAP connection with Web Service
Camel doesn't provide public implementation of Message Channel pattern. Details of channels implementation are hidden behind the Endpoint facade.

Thursday, October 7, 2010

Released db4o component for Camel

I contributed db4o component for Apache Camel. It is hosted under Camel-Extra Project, like all *GPL-related Camel components.

New component allows you to use a db4o datastore as a logical queue. Consumers take messages from the db4o store and then delete them to logically remove them from the queue. On the other hand sending POJO object to the db4o endpoint adds and saves object into the database. Detailed usage is described in the reference documentation.

Enjoy.