Sunday, June 25, 2006

Free visual XML Schema editor

There is a free version of XMLSpy (http://www.altova.com/) that includes the free XML SChema editor. Highly recommended. Not sure whether there is a Linux version.

/Jens

REST

I am currently looking into network APIs for search engine, blogs, social bookmarking services etc and realised that there seeems to be a trend away from WebServices towards a simpler protocol called REST. The definitions are a little bit fuzzy here, and it looks like some of the stuff I have implemented as part of WOP (wopper-rpc module, on SF-subversion) can be described as restful:
  • I have started with an XML Schema
  • Communication is by plain POST requests
  • I submit objects encoded as instances of the schema to the server, and get another encoded object back as part of the response
  • The objects are actually Java objects, but this is irrelevant, I have generated the classes from the schema using Jaxb.
  • I am using the Apache commons client to do the plumbing .
Here some code, just to see how simple it is:

Object obj = ... ; // the object to be posted
HttpClient client = new HttpClient();
StringWriter stringWriter = new StringWriter();
// serialize object, uses the generated API !!
WopperRPCUtil.write(stringWriter,object);
// make request
PostMethod post = new PostMethod(url);
post.setRequestEntity(new StringRequestEntity(stringWriter.toString()));
int statusCode =statusCode = client.executeMethod(post);

Wednesday, June 07, 2006

Job offer at Toyota New Zealand

Hi,

I have just received an email with the following job offer:

.. Once again thank you very much. Analyst job details below. Look forward to keeping in touch.

http://www.seek.co.nz/users/apply/index.ascx?Sequence=96&PageNumber=1&JobID=6876651&msid=4&Keywords=toyota

Good opportunity for a recent grad with the right attitude based at Toyota New Zealand’s HQ in Palmerston North.

Customer Database Analyst

PALMERSTON NORTH

Are you interested in applying your IS skills within a business environment? Can you convert data into meaningful information for business users?

Toyota is the market-leading automotive company in New Zealand. They have an extensive customer base and are seeking a further talented analyst to maintain, develop and utilise information in the customer database to support CRM and business objectives.

This role would see you:

• Extracting accurate and timely data for
internal customers
• Analysing campaign results and creating
reports
• Performing data mining and research to gain
customer insights
• Maintaining data integrity
• Contributing to new
CRM systems

This exciting and varied role provides an immediate challenge to learn the existing database, as well as opportunities with the imminent transition to a new CRM system. As part of the Customer Dialogue Centre, you will be working across business areas and with various end-users and suppliers.

With a passion for accuracy and data integrity, you will also have a strong customer focus and an understanding of business. You will take ownership to meet project objectives and milestones; communicating easily with both technical and non-technical users.

Your proven knowledge of database theory will be evident in your tertiary level qualification or equivalent experience and you will have advanced MS Access and Excel skills. Familiarity with CRM systems and SQL programming would be an advantage.

This fantastic full-time opportunity provides a high level of variety, autonomy, room for growth plus the opportunity for you to work in a positive, friendly team environment.

To apply, please email your application to sarah@sterling.co.nz, or post to PO Box 1509, Palmerston North. For more information please contact Sarah Last-Harris.

Sterling Human Resources
PO Box 1509
70 Princess Street
Palmerston North
Phone 06 359 0024

Kind regards, Rodger

Rodger Spillane

Team Leader - Information & Research

Customer Dialogue Centre

Toyota New Zealand

Roberts Line P O Box 46 Palmerston North

p: +64 6 350 3474 f: +64 6 350 9359


Friday, June 02, 2006

Plugin-based Software Development

I have a blog elsewhere, but I thought I'd copy a little bit now and then from there into here, when it relates to my work on developing an application using a plugin architecture (akin to Eclipse). This work is basically my research this year for my BE project. So, here's a copy and paste:

It's been a while since I geeked out, so I thought I best do another round, if merely for the purposes of keeping those interested in my adventures into the land of the software plugin updated. The short summary is:

Progress is good, plugins are a great way to develop software, and I am still very much liking this new development mentality.

To expand on that last point: programming is no longer a matter of trying to design everything at once - you can simply say "I'll make an extension point here, and later on decide on how the stuff happens on the other side of this point". This is great for my programming style, where I tend to get a basic version written up, and then I can go back and go "hey, why not rip this part out into it's own plugin?". Doing this is easy, and allows for easy reconfiguration.

For example, I could have a static logging class that outputs to the console, or to file, email, etc - but how do I configure it on a per-customer basis? Configuration files? Sure, but I believe my solution is even better: drop the plugins you want into the plugins folder, and they'll just work.

This is very true - my build script compiles all files in a plugin into a single file, so each plugin truly is one file - making per-customer configuration simply a matter of reading the file names of the plugins.

So how does this work? I define a logging interface, and a logging extension point. Any plugin that wants to be a logger says it wants to be an extension to the logging extension point, and then simply implements the logging interface. Logging will then work regardless of the number of plugins I have that extend the logging extension point.

Clearly there may be instances where I only want one plugin to extend a certain extension point, such as only allowing one extension to the GUI extension point. This is also easily handled - simply state that the extension point multiplicity for this particular plugin is 'one'. Easy.

Ah well, That'll do for now,
Exams soon, so good luck to everyone for that,
Cheers,
Jonathan Giles.