Software Development

Hotsos 2010 – Presenters, Presentations, Presenting

I never find it very easy to try to capture the atmosphere during a conference, the presenting part, the presentations or the discussions, for example, you could have with the presenters. Hotsos is such a cool and unique event were you have the opportunity, to listen but also to interact. The amount of people that attend isn’t that big, only a few hundreds, but they share all the same passion, the passion to improve on performance, mostly Oracle related. It has only two tracks and its not uncommon that people present and than go afterwards to a presentation to listen in what the other presenter has to say.

Due to the fact that it is manageable in terms of choice, located on a convenient location and well organized, you have the opportunity to pick just the thing you like and most of the time not miss out on “the other” presentation you would have liked to see. Besides that people stay in (overnight in the Hotel), so discussions about the technology, the method or an example during a presentation will be discussed in far more detail than you normally would do, from presenter to presenter or from presenter to the guy that attended and vice versa. The fact that all have the passion for performance or that they realize that performance is a beast with various angles to approach, bounds, and every point, every question is one to be heard and/or discussed. On equal terms. If you have seen my video impressions of Hotsos in 2009, you get a bit of what I am trying to say.

Anyway, not being a native speaker and with my new “flip” at hand (Ultra HD), I just show you how much fun and interesting stuff is going on, probably this will do more right to those presentations than me trying to explain what all those new ideas which were that popped into my head during this years Hotsos Symposium…although…sometimes technology helps and sometimes it just doesn’t…or is it a VMware thing Doug…?

My agenda is not that much different then the one from Doug. The moment it is mentioning RAC related stuff, then I probably would have been attending the other guy.

The Monday started great with a small introduction of Tom Kyte’s generally unknown other qualities…

…Enjoy…

Read the rest of this entry »

Subversion – branching, merging and reintegration

Subversion is a great source control system. One of the great features is it’s branching and merging support. Although many developers avoid it, branching is very powerful and useful and should not be something to be afraid off but something to be familiar with. And for the stable and controlled development is it almost a necessity to master it.

In general we can identify two types of branches: product and feature branches.

  • The product branch is normally to support maintenance on a released version while development of the next version continues.
  • A feature branch is normally a temporary branch to work on a (complex) change without interfering with the stability of the main development line (trunk) and in the end is incorporated back into the main line again.

Now, while you can work on isolation on the feature branch, there will come a time that you’ll have to integrate (merge) the changes with the trunk. And although subversion does provide extensive merge support, this might get messy with big changes. So it’s a real good idea to keep the feature branch in sync with the trunk and have the changes in the trunk regularly applied to the feature branch too. Actually, this is not so complicated as it might seem, especially when using modern tools like TortoiseSVN or IDE’s.

Read the rest of this entry »

Automatic testing Oracle Service Bus using Hudson, maven and SoapUI

A lot of current projects are implementing some sort of service based architecture. Testing in this architecture becomes more complex. When implementing an OSB project with Scrum you test-automation is imperative. Scrum will require more frequent testing of your system. This is only feasible (in time and money) when you automate as much as possible.
 
Using soapUI you are able to create visually SOAP tests on your OSB implementation and running them against the defined infrastructure (develop, test, acceptance).  SoapUI enables with easy tools to implements verification and validation of the responses of your OSB implementation. When running the test you are also able to set limits in SLA response times on all the calls. This way you are able to monitor depreciation of performance in older parts of your OSB implementation when adding new services.
 
You can record and edit your SOAP test easy with the soapUI interface and edit it later. When you maven-enable your project it is quite easy running your tests when you implement the “maven-soapui-plugin” (see my other posting http://technology.amis.nl/blog/3061/automated-soap-testing-with-maven).  In the meantime version 3.0 of this plugin is released.
When implementing this with Hudson you do not have to convert the results.xml into a Surefire report. Hudson will manage this for you. Hudson will also enable you with an historical overview of all your test results.

ASCII art as a DSL for unit testing

Complicated tree structures are being used a lot within my current project. Tree nodes have elements behind them. An element is unique, but there can be multiple tree nodes for a single element. Tree nodes have different drag and drop behavior based on flags on both the tree nodes and the elements. Also tree nodes can inherit children from other tree nodes etc. This blog will be about how to unit test these trees or more exactly how to setup a unit test so that it is fun to create and easy to maintain.
Read the rest of this entry »

Agile software development, the principles. Principle 11: The best architectures, requirements, and designs emerge from self-organizing teams.

This is the eleventh of 12 posts about the principles of agile software development. Purpose is to go back to the start of the agile manifesto (http://agilemanifesto.org/principles.html) and discuss the implementation of the 12 principles in real life software engineering. Goals of agility are to go deliver software of higher quality, faster, with a higher acceptance to end-users and able to follow the changing business requirements to strive for competitive advantage.
 
The question is: is this going to work in practice or is this only based on a nice marketing and sales story.
 
Principle 11: The best architectures, requirements, and designs emerge from self-organizing teams.
 
For a long time the engineering expertise (and also software engineering) was based upon the condition that you worked with specialists. These specialists emerged from the principle of division of labour and made it possible for these specialists to focus their attention on their specialism and create the best solution within their field of expertise. The Interaction designer designed a user interface, the architect created a global systems model, developers created code and infrastructure specialists created the necessary environment to run the application on.
 
Everyone was specialized and delivered the best solution within their capabilities. However when all these components where put together, noting worked. It is an illusion that specialists can design and foresee everything beforehand.
 
Within agile projects the solution is to use a self organizing team to perform these tasks. This team may consist of specialist, but this is not a requirement. The requirement of this team is that they work together and self-organize all aspects of the systems to be delivered. This team is permitted to make errors and invent their solutions, provided that they deliver and evaluate frequently (retrospective) and learn from their successes (and errors).

  Read the rest of this entry »

Agile software development, the principles. Principle 10: Simplicity–the art of maximizing the amount of work not done–is essential

This is the tenth of 12 posts about the principles of agile software development. Purpose is to go back to the start of the agile manifesto (http://agilemanifesto.org/principles.html) and discuss the implementation of the 12 principles in real life software engineering. Goals of agility are to go deliver software of higher quality, faster, with a higher acceptance to end-users and able to follow the changing business requirements to strive for competitive advantage.

The question is: is this going to work in practice or is this only based on a nice marketing and sales story.
 
Principle 10: Simplicity–the art of maximizing the amount of work not done–is essential.
 
The KISS rule (Keep it stupid and simple) applies here. Simple things are easy to understand, and straightforward to implement. Simple things do not cost a lot of time (or money) to implement and are therefore also easy (painless) to revert.
 
The middle part of this principle “maximizing the amount of work not done” is harder. When implementing agility in an organization this is the cause of discussion. Maximizing the work not done implies that the agile method will skip some processes, code and steps that where necessary in the traditional way of delivering software. This is where agile is linked with Lean. Lean focuses on reducing waste and creating a lean process. Work not done (that was planned to do) with the same end-value, can be classified as waste. In a discussion about work not done, you ask the person asking the question to specify the added business value of the work relative to other tasks. When the added value is not clear this is probably waste. Here you have to discuss the added value of intensive review sessions, bureaucratic procedures, complex frameworks and other corporate rules we meet every day.
 

Report from presentation ‘JPA 2.0 – What’s new’

The Java Specification Request 317 (JSR-317) aka JavaTM Persistence 2.0,  (JPA 2.0) has finally reached the last stage, "Completion of Reference Implementation (RI) and Technology Compatibility Kit (TCK)", before it’s officially released. Therefore last week a KC was given with a presentation of the new functionality and differences compared to JPA 1.0 and some hands-on exercises. Read the rest of this entry »

ODTUG Kaleidoscope 2009

Recently I presented for the fourth time at the annual ODTUG Kaleidoscope conference. It’s really a great conference that I recommend to every Oracle consultant. It features great presentations, discussion forums, hands-on labs on a broad range of subjects ranging from Oracle Forms to ADF, SOA, Apex, Essbase, PL/SQL, methodology etc. etc. But it’s not only the sesssions, but also the fun and discussions during breakfast, lunch, diner and other social activities and it’s very easy to meet the experts in the field. This makes the Kaleidoscope one of the most valuable conferences.

Read the rest of this entry »

“Hotsos Revisited”, Revisited…

 Lucas already gave a very good in depth overview of the "Hotsos Revisited" session last night. It always amazes me how fast he can make a cool blog post that  accurately points out the impressions we had of the evening. It started off with an idea we (Jeroen, Toon, Gerwin and me) had  of sharing some of the ideas, atmosphere and presentation info we got from the Hotsos Symposium this year. It is not an easy task to present the presenters accordingly trying to achieve some of the energy that shared during their presentations at Hotsos, also, of course, we were not that deep into the material they presented / as the people we tried to do credit to.

 


 

I am indebted  to Jeroen, Gerwin and Toon for making the time (their precious spare family time) too make it all happen. Even if it has to be all fun, you, as a presenter, don’t want to let the attendees, the audience, down by leaving them with the impression that such an evening was lost time. So it still takes a lot off effort to make it all work.

 

Read the rest of this entry »

Upgrade JDeveloper 10g Subversion client

JDeveloper provides a build-in Subversion client via one of its extensions. Although the functionality is limited (especially in 10g) it is essential for the handling of business components in relation to subversion, especially when it concerns refactoring and deletes. However, because of its limitations, most developers have installed another Subversion client; especially the TostoiseSVN is very popular. And this is where problems may arise.

 

The subversion client is available in different versions (1.3, 1.4, 1.5 and 1.6) and the structure of the local subversion administration files (the .svn directory) differs. This means that a lower version client does not recognize the working copy of a higher version client. It recognizes that the files are 'under subversion control' but does not understand how and it considers all files to be 'new'. Secondly, a higher version client automatically upgrades the working copy. Thirdly, TortoiseSVN offers automatic upgrades to the latest version. By the way, the client version does not necessary need to match the server and it is not possible to install multiple versions.

 

Concerning TortoiseSVN, it really is advisable to have at least the 1.5 client. Especially the merge functionality is way better and easier to use than before. However, the JDeveloper 10g extension still is a 1.4 client (Note that the first 10g version (10.1.3.0.x) is a 1.3 client). With this combination you'll encounter issues, that require close attention, much discipline and may easily result in build problems.

 

For example, when you delete in JDeveloper a business component (actually often more files), the delete is not administrated in the working copy and the file is marked as 'missing'. When you now do perform a subversion update, the file is back again . So you must not forget to manually delete the file via TortoiseSVN. It's even worse with refactoring like renaming and moving.

To prevent these problems, it's best to install TortoiseSVN 1.4 and disable the update check. However, the upgrade to version 1.5 is almost obligatory, because (amongs others) of the much better merge support. A typical catch-22 situation.

 

Fortunately, JDeveloper extension uses the svnkit (version 1.1.1) it is quite easy to upgrade to a recent version manually:

1.  Make sure to have TortoiseSVN 1.5 installed and disable the automatic update notification

2.  Stop JDeveloper

3.  Download the standalone svnkit 1.2.3 from http://svnkit.com/

4.  Unzip it

5.  Rename svnkit-javahl.jar to svnjavahl.jar

6.  Copy (and replace) svnkit.jar and (the renamed) svnjavahl.jar to the JDeveloper subversion extension directory, [jdev install dir]\jdev\extensions\oracle.jdeveloper.subversion.10.1.3

7. Copy the licence files

8.  Done, start JDeveloper

9.  Check the tools -> preferences -> Versioning -> Subversion. It now shows the upgraded version  :

 

Image

 

I've tested it with 10.1.3.3 and 10.1.3.4 and 10.1.3.5 and 11.1.1.1.0 and expect it to work with 10.1.3.1 and 2. With 10.1.3.0.x this does not work because it does not use the svnkit. I've tried hard, but didn't succeed.

Note, the latest version of 11g (11g PS1 or 11.1.1.2.0) includes a 1.6 client so you don't need to update it. The older 11g versions have an 1.5 client (although the very,very first one has an 1.4 client that includes some 1.5 functionalities).

As mentioned in the comments, the same trick seems to work for an upgrade to 1.6.

Since it is so easy to do, I wonder why Oracle does not provide updates for their subversion extension.