Sunday, 29 June 2008

AltioLive enabling the enterprise mashup

The AltioLive product provides both server side and client side architecture. This enables a secure load balanced mechanism to deliver data to and from a client. The client can be a user interface or another system.

What does this have to do with AltioLive? It has been the belief at Altio for a long time that a mashup does not have to be visual, but can be associated with data as well. For effective delivery of business solutions a product needs to be able to deliver data from multiple originating sources and the user should not need to know or understand the source of the data. AltioLive provides composite components to create visual business solutions and on the server side aggregated data feeds, this provides an effective mechanism to deliver browser based applications that interact with data from multiple sources.

A recent article in SD Times by David Linthicum provides a good overview of this, with the visual mashup described as

"the ability to change the manner in which a visual interface behaves by mashing it up with other content or services"
(Software Development Times, June 15 2008, page 37)

The article describes a non-visual mashup as 

"the mashing up of two or more services to create a combined application, or integration point to service a business process".  (Software Development Times, June 15 2008, page 37)

AltioLive composite controls enable a designer to take several existing components and package them together as a new business component or enterprise mashup widget. This means a library of re-usable components can soon grow and result in reduced development time for future solutions.

The AltioLive aggregated data feed provides a simple yet powerful workflow for retrieving data from disparate data sources. It is possible to use data attributes from one source as a parameter for the retrieval of data from another data source, execute multiple request in parallel or sequentially and stop execution if a failure occurs. This is the non-visual mashup.

Whatever you want to call this approach the ultimate aim is to deliver an application that makes the end user more effective in delivering business benefit as quickly as possible, without losing sight of maintainability.

The key factors of SOA/enterprise mashups as described in the article are:

  • the ability to place volatility into a single domain, thus allowing for changes and for agility
  • The ability to leverage services, both for information and behavior.
  • The ability to bind together many back-end systems, making new and innovative uses of the systems.

This is something Altio continues to deliver through the AltioLive product as innovative ideas.

 (This article was originally posted to http://www.altio.com )

Monday, 2 June 2008

RIA + SOA – The AltioLive Solution

I finally managed to get around to reading magazines I picked up at JavaOne and one article stands out for me. SOA World Magazine, June 2008 (http://soa.sys-con.com/read/513263_2.htm) contains an article called "RIA + SOA : The Next Episode, Building next-generation web platform" which describes how RIA and SOA are shifting web applications architecture back to Client Server from Model View Controller (MVC). So I've decided to pick up on this article and analyse it in the context of AltioLive which uses a far simpler implementation methodology – basically all the hard work is done for you.

Complimenting Technologies

I believe Rich Internet Application (RIA) frameworks provide a complimentary technology solution to enabling the user interface for Service Oriented Architecture (SOA). To quote the SOA World Magazine Article

in the standards-based world of HTML, CSS, and JavaScript, RIA developers have to assemble multiple third-party libraries
to build rich user interfaces. AltioLive provides a single framework to enable the rapid development of rich user interfaces and provides a loosely coupled server side framework to make use of SOA and legacy data sources. This enables an Agile development approach to be used to deliver a user front end that can be adapted quickly to meet user requirements.

Poaching the headers from SOA World Magazine

This section takes the headers from the article and replaces the list of possible HTML, CSS and JavaScript options with the simple AltioLive framework implementation. In my opinion having a choice of different frameworks and custom javascript is a maintenance nightmare and is something AltioLive architecture tries to avoid.

  1. Design the "look" of the application.
    For a complex solution requiring branding then a graphic designer can create and define an AltioLive skin. Skins provide the look and feel of borders, scroll bars etc. no need to understand HTML, CSS. For business developers who just want to get on and provide end users with a working system this saves a lot of effort without the need to think about colour codes and styles etc. The design of the user interface is a simple case of dragging and dropping widgets, setting properties and binding them to data.
  2. Integrate Widgets.
    If a component is not defined as a standard control or business widget (AltioLive Composite Control) then a Java developer can create a new Swing or JavaFX widget by extending the base AltioLive custom control or extending existing controls.
  3. Add dynamic behaviour to the user interface
    see next section
  4. Consume Services
    No need to do anything in AltioLive, dynamic user interface interaction with the server comes for free. Plus with AltioLive you get context based routing, ability to poll database tables or HTML service to simulate real time updates to the client. If the infrastructure is available then simply subscribe to a message queue using JMS service requests.
    Not to forget the ultimate aim of connecting to a SOA web service – then just use the Web Service Wizard to create a SOAP service request. No complicated API's to understand and no code to implement, all the business logic is either in the web service or the SQL statement. Validation and data manipulation can all be done in the AltioLive user interface if necessary.
  5. Create Services
    If the server side business logic does not exist then some hard work will be required. Web Services or alternative business services will need to be written, if a short term solution is needed then it may be possible to use AltioLive JDBC Service Requests to retrieve and insert data while putting logic into the user interface.

The article goes on to discuss the need to "Provide an Open Widget Framework", I feel that this is possibly the most important point. The industry needs to have standards that enable Java Applets, Microsoft Silverlight, Macromedia Flash and AJAX widgets to communicate effectively so that a widget that meets the user's needs can be selected regardless of the underlying technology. The key to enabling this standard will probably be JavaScript as it is not tightly coupled to any single vendor solution.

Provide an Integrated RIA Programming Model. This integrated model exists if you use AltioLive. The primary focus for AltioLive is on creating a user interface as simply, quickly and cheaply as possible – through drag and drop and setting properties. The source of the user interface is stored in a plain text file as XML and so can be manually edited if there is a real desire to do so. The drawback of this is that developers can't get their hands as dirty as they may like to. If, as a developer, you really want to get into the depths of the code then a developer can write their own widgets, or focus upon the business logic at the server side. I believe Todd Fast is right when he made the statement "Applications for the masses by the masses: why engineers are an endangered species" (http://www.regdeveloper.co.uk/2008/05/09/developers_endangered_species/ ), the user interface should be about making it easy for the user. Although, I believe there will remain the need for software engineers but their focus should be on providing frameworks and the enablers for the masses to easily create applications.

Provide an Integrated Services Platform. Again AltioLive meets the need to have the following attributes:

  • Support for creating services in any programming language
  • Seamless interoperability between the RIA and SOA tiers
  • Ability to consume local mock services

The AltioLive Presentation Server provides the mechanism to interact with server side components and allows for JMS, JDBC, SOAP, HTTP connections. This means it is possible to make use of direct SQL connections or to write a web service using .Net and call it through the SOAP or HTTP request. While AltioLive is primarily a Java technology it's loosely coupled framework doesn't make Java based services mandatory.

As mentioned through this document AltioLive provides a simple approach to create a service request using one technology and allows migration to another with little or no impact upon the overall application architecture, thus providing seamless interoperability between the RIA and SOA tiers.

Mock services have been a part of AltioLive since its inception. The AltioLive IDE allows a service request to be created with example response data built in, more complex solutions can be created using Composite Service Requests so that different responses can be provided based upon input values. When testing the user interface it may be preferable to replace heavy weight services with a XML file that contains the expected response and then use a HTTP service request to retrieve the data from the XML file. The HTTP service request can simply be replaced with the request to the fully implemented business logic later in the implementation.

Conclusion

The business challenge of moving to SOA

I have yet to work with an organisation that has implemented a SOA architecture from scratch as a green field project, in my experience there has always been legacy integration required to deliver the final solution.

AltioLive overcomes this by allowing the implementation team to expose AltioLive Service Requests. An AltioLive Service Request exposes the same interface regardless of the underlying technology that the data is being retrieved from or written to. This means that an implementation team can initially create a JDBC connection direct to a database and then when a full SOA architecture exposing web-services is in place then the service request can be changed to a Web Service request without any changes to the user interface. This approach enables the rapid development of the user interface required to meet business needs and then a more formal approach can be used to deliver a well defined and structured SOA.

And what about the Enterprise Service Bus (ESB)?

Well using AltioLive the move to a ESB is achieved by modifying the AltioLive server side request to use message queues. If the solution implemented using AltioLive has been well designed then there will be no changes to the XML structure passed to or from the user interface, and now a system will be able to push updates from the message queue to the user interface without any major system changes to the presentation layer.

Thursday, 22 May 2008

Fire people who think they're entitled to run things

I recently had a conversation about how I would handle a situation where someone was not willing to comply with corporate policy or was unwilling to work as part of a team. My immediate reaction was to say "fire them" (which is rather brutal), and even during the conversation I had to explain that this would be the final resort.


Disruptive Influence

Having had time to think about the question I now believe there are stages before reaching the formal dismissal process. I feel the reason for getting to the point of firing someone should only be based upon the team and organisation as a whole. If the team can't get on with them, or the person(s) is disruptive to the success of a project or organisation. This is summarised really well in an article by Ben Leichtling "Fire people who think they're entitled to run things". A manager or senior professional in an organisation has a responsibility to deliver projects to a high standard, if someone makes that hard to achieve then there is a serious problem. The disruptive influence of some team members can make it really hard for a manager to deliver a successful project, or to feel in control of the project.

Personally I would try to work with the person by understanding what motivates them and explaining why it is important to work as a team and within the guidelines set out by the organisation. There is also the case that they may have valid arguments for doing things differently and are not communicating them effectively. In the end someone has to be in charge and people have to accept authority so if all else fails you have to embark upon the path of dismissal.

Luckily, I've never been in the position of working with really obstructive people and where issues have occurred it has been possible to resolve them through compromise or if necessary through being assertive. Although occasionally I'd love to say "Look if you don't like it then find a new job", but that is hardly professional. I'd prefer to maintain the moral high ground.


Constructive Influence

There is an alternative to the disruptive influence and I have used this successfully with like minded colleagues. This alternative is to use constructive and critical analysis. Putting a lot of clever and experienced IT people into a room can lead to a conflict of ego's. Each person is bound to have an opinion about how to design a solution or deliver a project, and may think theirs is the best solution. The challenge is to make use of all of the different ideas to perform critical analysis. Somone coming into a design meeting using critical analysis after it has started may believe the team is in conflict and not achieving anything because of some of the heated debates that can take place.

Critical analysis will only work well if everyone understands it is taking place and can be professional in accepting other peoples views and constructively analysing them. Eventually the best parts of each idea will start to come together until it is possible to arrive at a solution using the best of the ideas.

The key to success is that someone has to be in charge and have the authority to make the hard decision of intervening at the right moment to influence the design, and to stop the process when it is taking too long or the best possible solution in the time available has been delivered.

Team Success

I don't claim to be an expert on the psychology of teams but I do have a lot of experience of managing very capable IT teams. From my experience I can conclude team success can only be achieved if everyone works together and accepts that there is a structure. Sometimes managers have to earn respect and in the worst case they have to take firm action to ensure success.

The bottom line is that a manager can "fire" someone working for them, it never works the other way around. So even if a team member thinks the manager is wrong, it is down to a professional team member to influence the senior person so that the correct approach is used.

Friday, 9 May 2008

JavaOne2008. Thursday roundup

Wow what a week.

It seems like a long build up to the release of JavaFX and the new browser plugin and I can't wait for it to happen. As Jim mentions in his summary of day 3 I think there will now be a concern amongst AJAX followers that the technology is going to look dated. At the moment AJAX front ends that want to be really rich seem to rely too much upon Flash, look at Google Analytics - all the charts are Flash.

Even today AltioLive's Graph control that will be released in Altio 5.2 shows the power of Applet based technologies over JavaScript. There are several JavaScript based graph widgets but they tend to be slow when handling lots of data.

I strongly believe that Java 6 has again made Java Applets an option for consumer Rich Web Applications and can come out from hiding in the enterprise solution area, and JavaFX further strengthens the position of Java Applets as a solution.

I'm sure that if you talk to the Java SE team they will strongly disagree with the idea of JavaFX being "stillborn". Healthy competition between SilverLight, Flash, Applets and AJAX is required to provide end users with the best user experience possible.

If you want to see a real FilthyRich Web Application look at the AltioLive IDE, as Jim put's it we "Eat our own dog food" I don't believe a product can trully say it is good unless you can create an IDE using the underlying framework. I like Eclipse but there must be something wrong if AJAX and Flash don't have IDE's using their own technology. NOTE: there are some AJAX IDE's out there.

Thursday, 8 May 2008

Can all developers juggle

Is there a direct correlation between being a software engineer and the ability to juggle?

The reason why I ask is that we were giving away juggling balls at JavaOne2008 and I'm amazed at how many people at JavaOne can juggle, the best I saw was 6 balls. What I really want to know is if there is a correlation with how good a software engineer is and their ability to juggle. I'm not going to do a survey on this but if someone discovers the answer and it happens to be yes then all interviews I do in future will require:
  1. Presentation
  2. Interview
  3. Juggling exercise
---Update--- just to make Jim happy the original discussion was started by Jim, I just embellished it.

JavaOne2008. A day for applets and reporting

If I can conclude anything about JavaOne2008 on Wednesday it's that the Java community is once again thinking about Java Applets (especially if you like JavaFX), the second thing is that there is a big drive to produce highly interactive reporting tools.

We met a number of Sun Microsystems staff today, some we expected to meet and other by chance. I asked Ethan Nicholas who works on the Java JVM kernel if it was possible to get two applets to communicate with each other without using JavaScript and guess what, it may not be a simple task (the question was asked during our talk yesterday).

Jim's thoughts for versions of Java earlier than 1.6u10 would be to use static variables/classes, the problem with this approach is that both applets need to be aware of each other and would be tightly coupled, not Web 2.0 at all. At least this would have worked though.

With the delivery of Java 1.6u10 it's going to be even harder for Applets to communicate in a browser as each Applet will run in its own virtual machine and so globally available static classes are not an option, so it's back to JavaScript - on the plus side Ethan appears keen on the idea of making this happen. I think a solution is needed if Java Applets are to be used on the desktop as demonstrated in one of the key note talks. The standard for desktop applications communicating has been set by Microsoft and so Java will need an equivalent communication mechanism for desktop applications to really succeed, and it needs to ensure applications are loosely coupled.

I regret not seeing the talk on JavaFX where dropping widgets onto the desktop was shown and it seems that it was not made clear during the talk that this ability to drag an applet to the desktop was a plugin feature and not JavaFX. Jim, Tom and I had to explain this several times to people visiting the booth.

I'm going to try and spend the day tomorrow looking at all the different reporting tools, there's a great fit between RIA and reporting, and there are lots of possible products to choose from it's just identify how easily AltioLive could integrate with different reporting products.

Wednesday, 7 May 2008

JavaOne2008. Java applets still have the power to draw a crowd


Conclusion for Tuesday 6 May - Java 6 update 10 provides a whole new opportunity for Java Applet technologies to compete on a level playing field with Adobe Flex, Microsoft Silverlight. The combination of improved download options, faster JVM load times combined with JavaFX rich graphics will enable the AltioLive product to focus upon adding value to the Java Development community rather than overcoming problems with the Jave SE plugin technology. 2008 and 2009 provide many opportunities for Java Applet technologies and I feel confident enough to say that Applets are NOT a "old school" technology, and are here to stay for the forseable future.

Loss of focus by Sun Microsystems and/or the Java product team is the only concern. If enough Java developers push for improved performance and a simpler user interface API's Sun will need to meet the demands. It's about working as a "community", considering all the options and not thinking Adobe and Microsoft offer the only solution to rich user interfaces in a web browser.

Enough of my soap box rant and a quick review of the day.

The booth had a steady flow of people interested in both the freebies and our product. The interest in a product was really great to see making all the hard work to improve the AltioLive product worth while, and the java development community still has interest in Java Applets technology.



Jim and I guess about 80-100 came to the presentation, and given that the were a number of very big talks by popular speakers I was pleased. Aside from not feeling too good - a serious lack of sleep, the talk went really well, with a few lessons learnt should we do a talk again next year.




The question that catches you out! - "How do you get two applets to communicate in the same browser session?", Jim put a lot of effort into his examples and neither of us spotted the fact that we didn't do an example of Java Applets talking to other Java Applets, is direct communication possible and more importantly should the security model allow it to happen. Not something I plan to answer in this blog.

Jim gets his 10 minutes of fame- a surprise visit by the JavaOne2008 reporter caught us out and Jim had to do a 10 minute technical interview about applets and AltioLive - good interview Jim especially when it was at the end of a very long day.