Codeless Ajax Ordered and Paginated Tables in Seam

Posted in : seam - Andy Gibson on October 2nd, 2008

One common code pattern that we find ourselves writing time and again is the ability to display tables which are paginated and sortable. Ideally, this is something we should try and be able to re-use throughout our application.

Current Situation

Let’s start by looking at where we are now with the features that come with Seam out of the box. In particular, we will be looking at the dataScroller component and the EntityQuery object. (more…)

Using Session Scoped Entities Locally in Seam

Posted in : seam - Andy Gibson on October 1st, 2008

One of the problems faced by Seam users is the disconnect between the session scoped entity instances and using them in more local scopes. A good example is a session scoped User instance that is loaded when the user logs in and is outjected into the session scope. This user instance is available for the duration of the users session.

This user entity is great for displaying who the logged in user is and other information. The problem comes when you
need to use that User entity in conjunction with other entities that are managed by the locally scoped entity manager. If an entity has a property that references the current user (such as a createdBy property), then it might seem obvious to assign the User variable value to that value. However, the User is unmanaged by the entity manager for that conversation and will raise errors when you try and save the entity referencing the unmanaged User.

We could make the instance managed before we save it or assign it to the property, but this is a session scoped instance, and it could be shared among multiple conversations. We may want to compare the instances at different times in the same conversation which will break if it has been altered by another conversation. Also, we don’t want to
have to write code to handle each property assignment or saving each entity type. (more…)

Hello World

Posted in : General - Andy Gibson on May 8th, 2008

To paraphrase Christopher Hitchens, the truth usually falls between two opposing views and the only way to influence the determination of that point is by getting involved, having your say, refuting a few arguments and maybe changing a few opinions. Now I’ve finally found the time to create my blog, maybe I can do just that. Here’s hoping it doesn’t become just one of many derelict first post blogs with a handful of temporally divided posts.

It is somewhat poignant that today is the date of my first post given my history. I started writing software professionally 13 years ago, in the summer of 1995, at a company that wrote tax software. My boss came in, threw me a brand spanking new, hot off the presses, only just released copy of Borland Delphi version 1, and told me to learn it. It was Windows 3.1 and had its problems, but it was awesome and I soon become a Delphi guru.

That event has forged my life for the past 13 years that I have spent working as a Delphi developer. It’s been a rough road, in the late 1990’s I worked as a consultant waiting on a daily basis for the Delphi jobs to trickle through my email box. Most gigs have been unattractive maintenance jobs usually providing support until the client can write it in something else. I’ve been through the Inprise name change, I’ve been through the lawsuits and employee stealing between Microsoft and Borland, and I’ve been through the Corel fiasco, the Kylix fiasco, the CodeGear fiasco, and felt every other trip and fall that Borland, and especially Delphi had in the last 13 years. I paid good money out of my own pocket for Borland Delphi 2006, and it was a stinker. I’ve been in the same job for the last 8 years, since July 2000, working on a few Delphi projects, and it’s time for a change.

I aim to blog about a number of these changes, the artifacts and events that have precipitated it and the path I’m heading in, but for now, let’s just say that it’s time to push in new directions. This blog is really a symbol of that change, because I intend for much of this blog to focus on my new directions, and on this same day Code Gear has been sold to Embarcadero for $23 million. Now I wish them all the best, but Delphi has been the unloved stepchild of Borland for a number of years and I don’t see any small amount of investment fixing that even if they chose to make the effort to. In a day and age where IDE’s are free and platforms are competing more than ever, I don’t see a small shareholder of that market staying in the race for long.

It seems fitting and ironic that on the day I embark on new ventures, news comes out that will probably ultimately end up with Delphi being put out to pasture.

For me, Delphi is another Betamax, a far superior technology that just couldn’t get a good enough footing to reach critical mass. It spoilt me as a developer, no other platform or tool had the richness, or allowed for such development speed with strong third party and community support. It wasn’t all pretty, and some of it’ll write about, but pound for pound, Delphi was the tool, the language and the framework to which all others aspired.

I’ve been looking for new directions to take, and coming from Delphi, it is difficult for me to find tools and a language that stands up to the standards I’m used to. However, I have found a rather solid contender in the form of JBoss Seam which comes with an IDE that, rather than be a mish-mash of mis-functioning plugins, is actually geared towards developing Seam applications. Seam also provides much of the richness of developing a thick client application, and getting a project started isn’t a project in itself. For now, Seam appears to be put the RAD into web development.

There is always .net development, which coming from a Delphi background should feel like home. I’m currently working with Java at the moment, but I am sure I’ll be getting back into Microsoft territory.

So here’s to new ventures and old friends.