Mar 13

turn-back.jpgXML had its buzz periode 8 years ago, everybody rush on it to store information. It followed the hype curve, some technologies as RDBMS based on XML simply crashed, other as DTD has been replaced and finaly had been adopted by all the community.

Then it became the obvious solution to many problematics…maybe too much. I talked about this in a previous post on Why not coding in XML? (sorry about this one which in french). Coding in XML is simply a bad idea and BPEL is a good example of that overuse. I share the opinion of Jonas Fagundes when he sais in his post The misunderstood Maven:

“The weakest point in ant IMHO is to use xml to define the targets, for me xml is for data, I never liked programming in xml”

We start to see initiatives that try to readjust this.

Ant is a very good example where I think XML is not accurate. Ant is a tool that replace our old make files. Its aim is to execute commands to build a software (and much more, as deploymeny, test…etc). It is a knid of language, you have commands (functions), properties (variables), and conditional for commands (a kinf of “if” statement). Even if writting ant xml file is quit simple, for complex project with multiple tiers of different kind, and tests…this start to become a mess and you feel the need for best-practices.

I think the xml is not the right support to write code, and some open source projects goes into that direction as gant, Rake and Bake for example…this is the arrival of coding over XML…hence DSL.

Feb 19

images.jpgI’m having at look a GRails 1.0.1. I get a little problem after setup and here is a little trick to help you if you encounter the same kind of problem.

So I installed version 1.0.1 that you can download here. I’ve set up the environment variables and launched “grails” on the command line.

At that point I get some weird message as “Xxxx was unexpected at this time”. This was due to my JAVA_OPTS. To find the problem, just setup the DEBUG environment variable to anything you want.

This way you will see the content of the batch command executed and will be able to find the root cause of your problem.

Feb 18

You can have a look at it …but use firefox as the web site has some display problems on IE (or maybe this is due to my IE configuration).

Finaly the famous Rails framework enter in java world, that should provide excellent reasons to no more see this RubyOnRails video:

[youtube:http://www.youtube.com/watch?v=PQbuyKUaKFo]

Feb 14

A new desktop usability experience that worth to have a look at.  

 

desktop

 

 

Feb 12

ist2_3828136_green_factory.jpg…SF as Software Factory, I mean a full featured development infrastructure. This became obvious to me when I read the post of Ayende on his vision of entreprise platform.

Ayende had the idea to base the system on code versioning system. This is definitely a great idea that I share, but I think this should go beyond: a complete software delivery infrastructure. The customer (software providers in fact) should be able to build, test and deploy applications….services for others users.

The great idea to relly on a source control system will solve the problem as versioning of the applications (for a part of it) and when you have multiple developpers working on an application or service. But this does not fullfil all the requirement for a PaaS, what about tests & validation, deployment (especially for multi-tenancy), delivery, maintenance…etc.

Finally, the requirement is to provide to some users a full featured development and delivery environment. The excellent post on the Lack of good Paas platform is highlighting very well all these requirements: customization and configurability, versioning and multitenancy, security, scallability.

I would add a requirement on robustness: as soon as multiple users can deliver software on top of platform shared by all…there is a high risk to have the system out of control. Ensuring a high level of service is fundamental, so the system should be really robust. The challenge is to let the system open (the sw providers are building software - so very high level of freedom) and “a live”, but this will be the topic of another post.

Jan 24

I’m using Rhino Mocks and I’ve seen the real great feature “Ability to joke” when this (click on the image to see it as my theme does not have a main column large enough):

RhinoMock 1!=1

Finally my test was just wrongly written. I’m using RhinoMock and I’m very pleased with it, so I was really surprised by such message.
Ayende, don’t ask the step to reproduce of this, I’m not able to reproduce it and I did not backup my program at that time…sorry about that.  The only think I can tell is that I was playing with 2 threads in this test…and the test was not testing what it was supposed to.

Jan 15

I recommend 2 great articles on this topic:

Dec 10

Fredrik has written a nice post on AOP : Remove code smell with AOP.

I’m personnaly not a fan of AOP. Sure, it can be extremely useful in some areas…exactly as is describing Fredrik. The only concern I have, is that AOP pros are always using the same argument: it’s useful for log, security, authentication…etc. I fully agree: AOP is useful for transversal services and ensure a better separation of concern…but I do not think AOP is more useful than this.

I’ve seen recently another case of usage of AOP. We are looking at adding unit test for a web application using mock. The problem is in this kind of code:
[java]
public List getFirst(int count)
{
  Context context = JsfContext.getInstance() …
[java]
Mocking works well if you inject interface, but in our case we have to deal with the singleton’s hell.

In this case AOP can provide an answer even if can only be temporary has this kind of design is not fine for me (singleton vs DI).

Dec 07

“Reusablility is just a welcomed side-effect.”

I agree on this assumption, and reusability should definitly not be a graal or a goal…simply something to have in mind when designing.

There are so much more realistic concepts as Separation of Concern and Single Responsability for example. How many times a componant or a (set of) class(es) that were supposed to be reusable and finaly completely rewriten as soon as they are reused.

Nov 20

Here is the fisrt post of a series to talk about my vision on Enterprise Applications.

What is an Entreprise Application?

Oren get a very good definition of what it and what it should not be : an enterprisey application in his post Enterprisey vs Enterprise Software :

Enterprise Software - A common term used to refer to systems that usually run a core part of a business. Often those are mission critical systems, which interact with many other systems in the organization in many interesting ways. Enterprise software is considered hard because it often need to mix technological capabilities with the business logic, and be flexible to handle changing conditions as the business evolves.

Enterprisey - This is a derogatory term, used to refer to a system whose design or implementation is overly complex compared to its supposed function. Often the term refers to the usage of anti patterns such as Everything is configurable, Executable XML, etc. Those systems are consider bad because a simpler design or implementation would have achieve the same purpose, at far lower cost, with greater maintainability overall.

Such software are addressing different markets: CRM, ERP, Fincancial, HR, Payroll…etc.

What are the different Business Models?

The Enterprise Application Platform is in itself very interesting has it is facing real technology challenges (I will leave discussion on them for future posts). Some of these challenges are depending on the bsuiness model of the Enterprise Application (EA). Most of the famous EA are using the very common SaaP (Software as a Product) business model, couple with some Professional Services or strong partership program. A new model is raising : SaaS (Software as a Service), a good example is salesforce.com. In between you have a continum of hybrid business models (that are not better or worst). More over I’m sure I’m missing someother well know business models.

What kind of depedency?

Extensibility is key for EA, as these applications are at the core of the enterprise,. All companies are working in different area, have a different size, in different country with different law…etc. The customer have to introduce into the system there own process to be efficient, and they will taylor the system.

Tayloring raise the problem of upgrade. If you are in a SaaP model, you will have to deals with upgrades and/or migration. In a SaaS model, you will do continuous integration and deals more with evolution than upgrade.

The RDBMS independancy is of high interest for a SaaP model, and almost irrelevant (at least for the customers) in a SaaS model.

What is the right business model?

None…or all. They are all valid, just different. SaaS has a good trend now but ASP failed some years ago. We will see if this trends is confirmed in the coming years, and if it is adopt by Fortune500.

Anyway, the important point is that the architeture of the platform clearly depends on the business model.