Main

Miscellaneous Archives

December 4, 2007

Back to the Future with Web 2.0

Back to the Future with Web 2.0

I'm currently at the UK Oracle User group conference and was pleased to see that they are embracing Web 2.0 by inviting dynamic user feedback on aspects of the OUG and the conference.  Of course they are using a little different technology to most Web 2.0 implementations but it seems to be effective none the less.

April 8, 2008

Pairing Off in XSLT

Pairing Off in XSLT

My friend Newton was just fighting to transform some XML that was structured in a awkward way.  The machine generated XML he was working with basically paired off successive elements, for example to provide a credential prompt and then the following element contained the credential itself.  It took a bit of fiddling to get the right XPath expression to perform the transformation.  I thought it would be illuminating to share it with you and hopefully someone will find a better solution than the one we came up with.

The Source

The source XML looked like this
<?xml version="1.0" encoding="UTF-8" ?>
<exampleElement>

    <AttributeElement>
        <DisplayElement>
            <SelectElement attribute1="A"/>
        </DisplayElement>
    </AttributeElement>

    <AttributeElement>
        <DisplayElement>
            <PasswordElement attribute1="1"/>
        </DisplayElement>
    </AttributeElement>
...
    <AttributeElement>
        <DisplayElement>
            <SelectElement attribute1="E"/>
        </DisplayElement>
    </AttributeElement>

    <AttributeElement>
        <DisplayElement>
            <PasswordElement attribute1="5"/>
        </DisplayElement>
    </AttributeElement>

</exampleElement>
Note the pairing of the Attribute elements.

The Target

The target XML looked like this
<?xml version = '1.0' encoding = 'UTF-8'?>
<exampleElement>

     <Attribute>
          <Select attribute1="A"/>
          <Password attribute1="1"/>
     </Attribute>
...
     <Attribute>
          <Select attribute1="E"/>
          <Password attribute1="5"/>
     </Attribute>
</exampleElement>

The Problem

The challenge was after identifying a path with a SelectElement element how to select the following path that had a PasswordElement element.

The Answer is Axis

The trouble with XSLT is that I don't do enough of it to remember all the tools available.  In this case it was very simple once I had remembered how axis work.  Here is my solution
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <exampleElement>
            <xsl:for-each select="/exampleElement/AttributeElement/DisplayElement/SelectElement">
                <Attribute>
                    <Select>
                        <xsl:attribute name="attribute1"><xsl:value-of select="@attribute1"/></xsl:attribute>
                    </Select>
                    <Password>
                        <xsl:attribute name="attribute1">
                    <xsl:value-of select="following::AttributeElement[1]/DisplayElement/PasswordElement/@attribute1"/>
            </xsl:attribute>
                    </Password>
                </Attribute>
            </xsl:for-each>
        </exampleElement>
    </xsl:template>
</xsl:stylesheet>
This solution iterates over all the SelectElement elements and then for each of those elements it picks out the following PasswordElement in the document.  It does this by using the XPath expression "following::AttributeElement[1]/DisplayElement/PasswordElement/@attribute1".
The "following::" axis selects all nodes in the document that come after the given SelectElement element.  This flattens the hierarchy enabling us to choose the next AttributeElement element by selecting the AtrributeElement element with index 1 (AttributeElement[1]).  We can then traverse that part of the XML using the normal child axis.  Simple when its done but when you rarely use axis other than the child axis it takes a while to remember how they work.

Reference

I find the two O'Reilly books on XSLT to be very helpful when struggling with XPath and XSLT.  These are the Doug Tidwell XSLT book and the Sal Mangano XSLT Cookbook.

I hope this saves sombody some time.

July 22, 2008

Student SOA Survey

Support for SOA Survey

I just received an EMail from a student, Galin Monev, at Cork ...

I am currently a student of MBS “Information Systems for Business
Performance” at University College Cork, Ireland. As a final part of the
programme I have to carry out an industry-based project. Therefore, I am
writing on the behalf of my group regarding our thesis project. We are
investigating how SOA can influence the IT capability of a firm and to what
extend this strategy can become a major initiative for changing the
underlined business approach of an organization.
We came across your blog and we are wondering if you could help us by
filling out a survey. We would really appreciate if you could forward our
survey to friends (through your blog) and colleges who you think can
contribute positively to this survey.

The survey is in two parts and will take no longer than 5-10 minutes. It is
located at:

Part 1

Part 2

We would also appreciate any additional comments you may have or additional
assistance you would like to provide.

If you have any questions or comments, please contact me at galin.monev@gmail.com. I am hoping for your kind consideration and
participation.

So if you get chance why not support him, I will ask him to share his findings later.

November 10, 2008

SaaS for Techies

Software as a Service for Technologists

With the Oracle cloud computing announcements at OpenWorld I thought it would be worth putting down a few thoughts about Software as a Service (SaaS), which is related to but not the same as Cloud Computing.  Software as a service is all about providing a useful function to the customer without the customer being concerned about it is delivered.  In that sense it is SOA taken taken to the next level.

For a good introduction to SaaS take a look at the Wikipedia page.  There is also an excellent article on MSDN by Frederick Chong and Gianpaolo Carraro that outlines a SaaS maturity model and indicates how SaaS can be used to bring the benefits of enterprise software to smaller businesses by making it available in a pricing model and at a price point that they can afford.  To track what is happening in the SaaS world there is an interesting blog on ebiz site.

Larry Ellison has an interesting position on SaaS that I think might be summarised as “nice model, lets wait and see how to make money at it”.  There is an interesting commentary on some of Larrys comments on ZDnet.

Pricing

Software as a service needs a pricing model based on usage.  This may be transaction charging or per user pricing. The important thing is that the pricing model has to be easily translated into the service the customer is receiving.  Consider an airline booking application, there are several models that may be used here.

  • Number of Passengers Booked – essentially a booking fee, ties in very well to customer business model who will receive ticket value for each booking made which is then directly related to passengers booked.  However service provider may be worried about very high look to book ratios during fare wars and promotions forcing the provider to have additional capacity with no additional revenue, hence they may prefer the next model.
  • Charges per View – each hit on the site is charged at a set amount.  This has the problem that some operations are more valuable and potentially more expensive to perform than others.  For example a booking operation may cost 100 times as much resources as a view operation.  Hence it may be that different operations are charged at different rates.
  • Number of Passengers Booked Plus a Charge per View – essentially a combination of booking fee and an additional charge based on the number of views generated by potential purchasers of flights.  The additional charge may be zero up to a certain look/book ration and then there may be a sliding scale of charges beyond this ratio.

As can be seen from the example above, the pricing model, although tied to the service being provided may very rapidly become complex.

Hosting

Some people find it difficult to distinguish between hosting and software as a service.  A key feature of hosting is that clients rent hardware and floorspace to run applications to which the client has purchased the license directly.  This requires clients to be responsible for sizing and software architecture.  In contrast SaaS has clients draw down some computing service, such as CRM, and pay for it based on their usage of the resource.

In the hosting model the client must specify the capacity and takes the risk of the getting it wrong.  In the SaaS model the client is only interested in the service provided, not the capacity planning requirement.  Typically any capacity planning required should be related to the nature of the application, number of registered users for example rather than number of CPUs.

Architectures

A key feature of software as a service should be minimal footprint in the client organisation.  Generally services should be provided through the browser or across HTTP based web services for application access.  Some services may require tighter integration with software at the client site, and it may be that an appliance approach can be taken to simplify integration with other customer systems.

Because clients are no longer responsible for sizing the hardware needed to provided a service there may be a removal of risk from the client to the service provider.  As the service provider is presumably providing the same service to multiple customers they will be in a better position to calculate and provision appropriate resources to host the application.

Basic software as a service provides dedicated hardware for each customer.  This has the advantage of being simple to implement but is expensive in terms of hardware resources.  It also makes scaling the service difficult as the granularity of scaling is at the single customer level. Use of software virtualisation technologies can make this easier to manage but run into the problems identified in the next paragraph.

To overcome the problems of one machine per customer it is possible to have multiple software installations per machine, each installation being dedicated to a single customer.  This approach assumes that the software is capable of supporting multiple independent installations on the same machine, not all software can do this due to use of shared operating system configuration locations.  in addition to the inability of some software to provide this level of co-habitation, there are still inefficiencies in having multiple instances of the same software competing for the same processor, memory, disk and network resources.  Scaling the system is still problematic and complicated as if additional machines are required then the complexity of configuration increases.

The highest level of software as a service enables multiple customers to be hosted in the same software instance, known as multi-tenanting.  This allows a more efficient use of resources.  Scaling is also simpler in this environment, assuming the software can be scaled across multiple machines.  This level of co-habitation however requires customers to be convinced that their information is safe. In the section below on supporting technologies I will look at some of the features that can make multi-tenanted easier to achieve

Supporting Technologies

Operating System

The ability of modern operating systems to support hardware resource virtualization, such as Solaris makes the model of a dedicated hardware per customer more palatable.  Also playing a role in this space are software virtualisation technologies such as VMWare or Oracle Virtual Machines.

Database

At the database level then technologies each client company is provided with a different account that has access to shared application schemas.  By using technology such as Oracles Virtual Private Database we can allow developers to build software that will run in a single instance without the need for extensive filtering of individual queries, each customer will be automatically restricted to the data visible to their own user account.  In addition to different database accounts the data can be partitioned by customer, making backup and recovery possible on a per customer basis, potentially allowing different backup strategies for different customers.

Application Server

Ideally all customers would be using a single shared applications server cluster, taking advantage of load balancing and fail over within that cluster.  Security profiles within the applications server can be used to separate end users into groups by client, each client having a different set of resources available.  For example when queue are being used it would be necessary to have separate queues for each client to ensure that they did not interact.

SOA Services

At the SOA level tools such an ESB and process orchestration must provide support for identity propagation through the system.  At every level in the architecture it is important to be able to logically isolate one customers data from another customers.  Key to this is being able to propagate the client ID on all messages to ensure that they are correctly handled, for example routing may be different depending on the level of service a customer has contracted for.

Web 2.0 & AJAX

Web 2.0 technologies, particularly AJAX allow a much richer user experience through the browser, allowing more sophisticated interactions with software as a service than earlier static HTML implementations.

WS-* Standards

Exposing services that may be consumed by other applications is made much easier with the widespread adoption of webs service standards.  At the basic level this includes XML, SOAP and WSDL.  But the development of security standards such as SAML and messaging and transaction standards will allow for richer application to application interactions.

Adoption and exposure of these standards in SaaS services will allow hybrid models of SaaS providing some functionality but being tightly integrated with the rest of an enterprises IT infrastructure.

Summary

SaaS is not a case of taking existing software and tweaking it a bit to make it run in a SaaS environment.  To take full advantage of SaaS there needs to be some fairly fundamental thinking in the design about how it will be impacted by a multi-tenancy environment.  The actual coding practices may not be much different but there is a need for different testing régimes to handle the additional complication of multiple clients, each with multiple customers.

December 2, 2008

Day One UKOUG

First Day in Birmingham

Yesterday was the first day of the UK Oracle User group conference in Birmingham – my home town.  The best presentation I attended was by Sten Vesterli entitled “What’s Hot and What’s Not – an Overview of Oracle Development Tools”.  This gave a very realistic assessment of the options open to Oracle developers when choosing a development tool.  He also pointed out something that we all need to remember – Use the right tool for the job.  This was a theme that was later reinforced by Tom Kyte in his outstanding keynote on “The best way …” who made a strong case for understanding multiple IT languages to have access to the right tools, observing that understanding multiple languages allows you to have access to different ways of thinking.  Today I have a presentation around choosing the right Fusion Middleware component for the job.  Unfortunately I am up against Mike Lehman so I suspect my attendance will be low.

If you are at the UKOUG stop by my presentation tomorrow (Wednesday) on using a SOA maturity model to drive project selection.

December 3, 2008

Limits to Scalability

Cameron on Limits to Scalability

Whilst working at Los Alamos Richard Feynman delivered a series of lectures to the other scientists on the fundamentals of mathematics.  Of course everyone present knew where he was going, but the pleasure was in watching how he got there.  I had a similar experience watching Cameron Purdy’s presentation today at the Oracle User Group Conference in Birmingham.  His presentation was entitled “Top 10 Patterns for Scaling Out Java™ Technology-Based Applications”.  There wasn’t anything in there I hadn’t seen before, but watching Cameron build up the story and explain the why was a wonderful experience that clarified my thinking and opened up new possibilities to me.  Cameron originally gave this presentation ay JavaOne 2008 and had an hour slot, but at the OUG he only had 45 minutes, no-one complained when he ran over time, and Simon Haslan as session chair let him run over because he was enthralled as everyone else by the delivery style and content.

So what were Camerons 10 patterns?

10. Understand the Problem

9. Define the Requirements

8. Architecture trumps technology

7. Understand the Basics

6. Visualize the Network

5. Visualize the Design

4a. Plan for Overload

4b. Partition for Scalability

3a. Plan for Failure

3b. Replicate for Availability

2. Tier where it makes sense

1. Simplify

If you didn’t attend the presentation at JavaOne or UKOUG then you missed out on half the experience.  If you did miss out then read the presentation and you will probably come away wiser and with greater insight, I know I did.

February 27, 2009

Let the Dummy Solve It

imageLet the Dummy Solve It

or Putting Fred to Work

I just had a brief conversation with my manager Bill, it went along these lines

Antony: This presentation on Enterprise Manager for the Know Your Own Product Series, should it be 30 minutes?

Antony: Oh, hang on, yes it should, I was confusing it with the Bite-Sized series which were 10-15 minutes!

Antony: Thanks for that, sorry to have bothered you.

Bill: Glad to have helped

Followed by hanging up the phone rapidly before he gave me more work.  This reminded me of a favorite problem solving technique that I had failed to use in this case.  The technique is known as “Fred in the Corner”.  I don’t remember where I came across it originally (I thought it might have been in a Timothy Lister or Gerald Weinberg book but I couldn’t find it), but I got it from somewhere else and if anyone knows where I will happily add an appropriate attribution in here.  However in the meantime the technique goes like this:

  • You have a problem and you take it to Fred in the corner.
  • There is always an empty seat next to Fred.
  • You explain your problem to Fred, giving as much detail as you know.
  • After providing all the information Fred will often solve your problem.
  • Oh, Fred is a tailors dummy.

If you don’t have a tailors dummy or a puppet maybe you could use an action figure, do they do a Stephen Hawking action figure?

This approach works on the basis that often we are overlooking some information that we already know that can solve our problem for us.  The task of explaining clearly to another individual exactly what the problem is forces us to detail all our knowledge.  Using this technique has several advantages:

  1. It doesn’t waste our colleagues time on something we could have solved ourselves.
  2. It makes sure that we understand the problem.
  3. It stops us looking like a total idiot in front of our colleagues because we don’t explain the problem, realize the solution and say “Thanks for that, sorry to have bothered you”.

So next time you have a problem to solve then give it to a dummy and let them solve it for you!

May 14, 2009

Raising Money for the NSPCC

imageOne of Oracles chosen charities in the UK is the NSPCC, the National Society for the Prevention of Cruelty to Children.  The NSPCC is the UK's leading charity specialising in child protection and the prevention of cruelty to children. It is the only children's charity with statutory powers, enabling it to act to safeguard children.  In the UK it is well known for running Child Line, a 24-hour helpline for children in distress or danger. Trained volunteer counsellors comfort, advise and protect children and young people who may feel they have nowhere else to turn.

This year together with a number of other Oracle UK employees I will be participating in the Three Peaks Challenge in July - climbing to the top of Ben Nevis, Scafell Pike and Snowdon, all within 24 hours.

This will be no mean feat - it involves making your own sandwiches as well as walking for 15 hours/30 miles up/down over 10,000 feet interspersed with 500miles of driving. I've been walking up and down stairs in the office for weeks in preparation.

If you would like to sponsor me in this somewhat madcap activity, then donations can be made via PayPal, Credit or Debit Card at my Justgiving site.  If you’re a UK taxpayer, Justgiving makes sure 25% in Gift Aid, plus a 3% supplement, are added to your donation.

So go ahead, sponsor me!

July 14, 2009

SOA at the Top of the UK

As part of the three peaks challenge which I completed this week the Oracle team were challenged to get a picture of someone reading Matt and my book - the SOA Suite Developers Guide -on top of each peak.  Thought I would share the story and the pictures with you.

The objective of the three peaks challenge is to walk up the highest peak in each of England, Scotland and Wales in a single 24 hour period.

Peak 1 - Ben Nevis

Reading SOA Suite Developers Guide atop Ben Nevis Ben Nevis in Scotland is the highest peak of the three at 1344m.  We started our ascent at 5pm on Friday and reached the summit by 7:30pm.  As can be seen on the picture of myself and Neil Spink reading the SOA Suite book, weather at the top was clear so that we could see for miles.  The weather was hot and sunny and I struggled a little on the way down but we were all off the mountain by 9:45pm and on the road to Scafell Pike in the Lake District, not far from my brother-in-laws house.  We left for Scafell at 9:51pm.

 

 

Peak 2 - Scafell Pike

AndyPicScafellSmall Scafell Pike in England is the smallest of the three peaks at 978m.  We arrived at 3:32am, just as the sky was lightening up in the east.  The moon was also very bright with little cloud cover so we had no problem seeing our route and we reached the summit by 5:30am just as the sun was rising above the surrounding peaks of the Lake District.  There was little cloud about and Daniel Roberts and myself could easily see the book at the top.  We were all back down the mountain by 7:17pm and on the road to Snowdon.  Our drivers might have been controlling 17 seater mini-buses, but to the occupants we felt like we were participating in a particularly tough rally as we wound our way out through the tortuous lanes on our way to North Wales.

 

Peak 3 - Snowdon

AntonyandAndyReadingSnowdon The final peak, Snowdon, is the tallest mountain in England and Wales at 1,085m and was challenging in two ways.  When we arrived at 11:50am we had already spent more than 8 hours on mountains and more than 11 hours crammed into what seemed to be a shrinking mini-bus, so we were not at our most energetic.  Also at Snowdon the weather was failing and it was beginning to rain.  However arrival at Snowdon energised us and within a minute of arrival we were striking out towards the mountain.  The initial approach up the Pyg Track was fairly easy going, with just a scramble at the end to reach the summit by 1:45pm.  The summit was cloudy and wet so no-one wanted to hang around for long, especially myself and Andy Gale who found the book rather damp going.  The descent was also very quick, using the Miners Track to drop down off the mountain very rapidly, followed by what felt like a long run/walk around the mountain back to the start point.  We had all arrived back by 4:02pm, meaning that as a group we completed the challenge in 23 hours and 2 minutes.

Thanks

Special thanks must go to our drivers, Colin, James, Martin and Jackie who got us between peaks rapidly and safely.  I was very appreciative of Andy Gale who made sure I kept pace on Scafell Pike and Snowdon.  Finally the determination award must go to Neil Spink who despite blisters and damaged knees climbed Snowdon and completed the challenge.

Sponsorship

Apart from wanting to show that we were not all over the hill (most of us were well over 40!) we also wanted to raise money for the NSPCC.  We are still a few hundred pounds shy of raising £10,000 for this charity so please feel free to go to my justgiving page and sponsor me.

Statistics

The following is from a GPS tracker we took with us.

Ben Nevis - start at 51m, Top 1,347m  (include the trig point I guess), distance 15.1km or 9.38 miles

Scafell Pike - start at 29m, Top  985m, distance 9 km or.5.59 miles

Snowdon - Lowest Point 376m, Top 1,088m , distance 12.4 KM or 7.7miles

Total Climb = 1296 + 956 + 712 = 2,964m or 9,724 ft

Total Distance = 22.67miles

October 12, 2009

All Change & Open World

I haven't written anything for a couple of months, but in my defence I would like to point out that I have changed jobs at Oracle.  I now work in global support services, supporting the Oracle SOA products.  As part of this change I have moved from Easter Compton in England to Monument, Colorado, moving myself, wife and 4 children a quarter of a the way around the world has proven more challenging than expected.

A few weeks ago I was in Orlando on an HA training course for 11g SOA Suite and I'll be sharing some stuff about this in future blogs.  I also put together a 1 day course for support engineers around SOA Architectures and again I will post some of this stuff over the next couple of weeks.

But this week I am in San Francisco for Open World.  If those who know want to stop by and see me I will be in the Support Stars Bar on Monday afternoon and Tuesday morning.  On Wednesday at 12:30 I have a book signing at the bookstore.  So stop by and say hello.

This is my first US Open World and I am looking forward to the chance to catch up with old friends and hopefully make some new ones.

About Miscellaneous

This page contains an archive of all entries posted to Antony Reynolds' Blog in the Miscellaneous category. They are listed from oldest to newest.

Fusion Middleware is the previous category.

SOA is the next category.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type and Oracle