Archive for November, 2007

Oracle Data Pump, a big improvement for data movement.

Oracle Data Pump, available with Oracle 10g http://www.oracle.com is one of the better new features of 10g and represents a major improvement on its predecessors the export/import toolset. There is considerable benefit to be gained from familiarising yourself with the Oracle Data Pump. Oracle 10g documentation suggests that as well as supporting all the functionality of the export/import toolset, Data Pump has the following new features: dump file encryption and compression, checkpoint restart, job size estimation, very flexible fine-grained object selection, direct loading of one instance from another, detailed job monitoring, and the ability to move individual table partitions using transportable tablespaces. In my opinion the three key advantages of Oracle Data Pump over the export/import toolset are: Faster Performance, Improved Manageability and Fine-Grained Object Selection. The numerous advantages of Data Pump coupled with the fact that the export utility is being deprecated with the Oracle Database 11g release (the Import utility will always be supported so that dump files from earlier releases will be able to be imported), means there is very little reason to still be using the export/import toolset.

Continue reading ‘Oracle Data Pump, a big improvement for data movement.’

Technorati Tags:

Error handling that works in SQL Server 2005

I was doing some analysis of a legacy batch process this month, trying to better understand what it did and also increase the visibility into it. While doing this I began to truly appreciate the new TRY…CATCH approach to error handling in SQL Server 2005 Continue reading ‘Error handling that works in SQL Server 2005′

Zero Coupling between UI Components

This post is a follow-on from a previous one where I describe how old problems that hampered rich client development on the desktop will come back to haunt RIA development.

What are the sources of inter-component coupling in a typical Event-Driven, Component-Based system?

  1. Shared Event Names
  2. Shared Event Data
  3. Parent-Child Relationships

If two components communicate by means of events, it gives the impression of loose coupling. It’s true that if all events in a system are vanilla-flavour, then this is, effectively, decoupling. If the only interface that a listener needs to implement were something called SomethingHappenedListener, which demands only that a method called somethingHappened be provided, then that would be a defacto decoupling. Every component would be able to talk to every other one, with no real strings attached.

Continue reading ‘Zero Coupling between UI Components’

Technorati Tags:

Future Problems in RIA Architecture

After years spent chasing the latest waves in web technologies, the software development industry has come curiously full circle. Today’s web client technologies are homeing in around the ideal of the Rich Internet Application. The architecture being employed in the pursuit of this ideal is familar: Component-Based and Event-Driven. This is the same approach that underpinned desktop rich client frameworks like AWT, Swing and SWT.

In the case of at least one RIA implementation, GWT, this return to a familiar architecture is touted as a great advantage - a good reason to switch. I subscribe to the Component/Event approach, but with one major caveat. While writing desktop clients might seem relatively straightforward compared to dealing with JSPs, servlets and http session management, the passage of time has blurred our memory of some of the truely terrible code that we have all found ourselves dealing with thanks to some of the limitations of exactly those rich client architectures that we are now once more looking at. Unfortuntely, despite that same passage of time, these architectures have not been improved upon - we’ve all been too busy writing web applications.
Continue reading ‘Future Problems in RIA Architecture’

Technorati Tags: , , ,

Managing Projects with JIRA and Greenhopper

For the last few months I’ve been overseeing a project that comprises between 2 to 4 developers at any one time. I’m not a project manager. We have project and program managers here in DSI who oversee larger teams of 7-20 people each, and they are by necessity abstracted away from the code. I’m an architect and a developer, so I’m most at ease at the centre of a triangle with a phone (or Skype), a coffee machine and an IDE at each apex.

For a project of this size - and arguably bigger ones - a Gantt chart is an unnecessary burden. It’s no coincidence that Gantt charts looks like waterfalls. They are describing dependencies between steps: “You have to do X before you can do Y.” But most software projects don’t need that kind of detail - you can break them down into work items that can be more or less independently allocated. If you are doing Unit Testing and using Continuous Integration then you know that most test and integration activities are performed as part of coding. You can put most of your tasks into a big hopper and as long as you have enough skilled engineers available to take tasks from the hopper, you can work to any reasonable schedule.
Continue reading ‘Managing Projects with JIRA and Greenhopper’

Technorati Tags: , ,

Strongly Typed DataSets

I am going to write a short piece about strongly typed DataSets. Before I do, I should point out that there are many who argue against using DataSets at all (http://aspnet.4guysfromrolla.com/articles/050405-1.aspx) - Scott Mitchel for example, prefers datareaders and serialised custom business objects. Doing things this way he argues, will cost development time but save run time. Custom classes can be more lightweight than DataSets while still achieving strong typing. Still, they will take much longer to create than using visual studio.NET (or xsd.exe in the command line) to create typed DataSets. There are many who say that when costs and benefits are weighed up, creating your own custom classes and collections come out on top. Others argue that the resistance to DataSets resulted from performance shortcomings in .NET 1.1 which have been addressed in .NET2. Typed DataSets represent an easy alternative to creating and maintaining potentially dozens of custom objects yourself. There are plenty blogs out there where you can debate that point. But pretty much everyone would agree that strongly typed DataSets are preferable to untyped DataSets.
Continue reading ‘Strongly Typed DataSets’

Technorati Tags: ,

JSP pre-compilation in OC4J

One property of JSPs is that they are compiled on first use, which adds a small delay on the first request of a page. This is ideal in development environment. However it has no value in testing, qa or production environments. We can easily avoid it by using JSP pre-compilation. This post will describe how it can be done for OC4J.

Continue reading ‘JSP pre-compilation in OC4J’

Technorati Tags: ,