Monday, September 25, 2006

Latex session

Hi, there will be a short session on Latex on Friday 19 Sept on Latex. This might be useful if you have to write a report or article soon. I will cover some issues such as choosing a document style, tables, figures, graphics, and bibtex. Venue: my office.

/Jens

Thursday, September 21, 2006

Presentation by Kiwiplan

Another employer interested in hiring you. Well established, export oriented company in Auckland, focus is on Java technology.

Wed, September 27, 2006, 12 - 1pm
SSLB6

Wednesday, July 26, 2006

Business Computing and Web 2.0

Just discovered:

Corporate America wakes up to Web 2.0
Web 2.0 meets the enterprise

That is what we (Jonathan and myself) were just thinking about. Note the nice features on the web page: there is a shortcut to bookmark the articles on delicious, and a mind map showing related articles.

Tuesday, July 25, 2006

Eclipse-based IE for Google's GWT

Found here:

http://www.webpronews.com/topnews/topnews/wpn-60-20060720IDEforGoogleWebToolkitDebuts.html

Sunday, July 23, 2006

Presentation by ORION: give aways + jobs

There is a presentation by ORION on the 3 August at noon in SSLB3. They are given away a portable playstation! There are more good reasons to attent: Orion is one of the biggest Java shops in NZ and has employed our graduates in teh past. E.g. Jonathan Wright (Jared's brother) is working for them.

Java Actions

Java Actions let you move all gui component logic to an Action object, allowing it to
be used in multiple places (i.e. appear in multiple places in the gui).
There is clearly no reason to have any more than one Action object of
each type (I believe) - so that means Actions are inherently singletons.

If that is correct, does Java treat each Action as a singleton, or
should I explicitly make them all singleton classes.

The question arises due to code like this:

JMenuItem helpItem = new JMenuItem(new HelpAction());
.....
JButton helpBtn = new JButton(new HelpAction());

I have spent a bit of time rewriting the GUI components to deal with
Actions, as they tidy the code up quite considerably.

Cheers,
Jonathan.

Non-deterministic plugin loading and menubar item ordering

I was wondering if anyone knew in Eclipse how they went about placing menus
in the top menu bar. For example, how do they position 'Edit' after
'File', and how does the WOP plugin menu get added in the
place it was added.

This is the current problem I'm wanting to refine in Centruflow - as
little tweaks throughout my system can result in menus moving all around.

Cheers,
Jonathan

Wednesday, July 19, 2006

Opening files in Java

I have spent a bit of time tonight looking into ways of opening files in Java such that they are loaded using their default viewer (i.e. loading MS Word documents in MS Word). There are the hacks that makes the OS-independent believer in me cringe, for example:
Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL \""+fileName+"\"");
and
Runtime.getRuntime().exec(
"cmd /c \""+fileName+"\"");

Both will equivalently load any (?) file, but only within Windows...

Then I stumbled upon two similar projects:
The JDIC library and similar functionality in the soon-to-be released Java 6.
Both of these abstract away the underlying way in which to load the files.
This is mighty handy, and so I thought I'd post it here to let everyone know.

Cheers,
Jonathan Giles.

Wednesday, July 05, 2006

Java Properties Rant

[rant]
Grrrr, Sun's annoying me. I've been wasting my time trying to get a problem fixed that I don't think can be fixed other than by emailing Sun - but there is a chocolate fish there for anyone that solves this for me :)

Basically, Properties in Java can now be XML. I thought "swell, let's use that". As specified in the JavaDoc here it is necessary to include the DTD reference at the top of the properties file. That is no problem, as the file contents is listed on the page. When I save the xml in XML Spy however, it complains that the DTD is invalid. Looking at the file 'http://java.sun.com/dtd/properties.dtd', it is slightly different than what is on the page: it now has a nice copyright message and whitespace. It appears that this is causing the DTD to be invalid. It doesn't matter, the Properties object still happily parses it so no problem there.

Today I wrote some code to actually change property values and write them back to the XML (retaining all comments, etc). I set the DocumentBuilderFactory to not validate the file, as I knew it wasn't valid thanks to Suns DTD. However, I still get errors when trying to parse it due to the unexpected statement in the DTD.

I thought I could get around this by copying the DTD to my local codebase and using it there - but the Java Properties object expects a hard coded reference to their DTD or else it fails - so there goes that idea.

As far as I can tell, Sun is the single point of failure in my code, and they decided to fail.

Anyone have any ideas? It appears others have found my problem, like here.
[/rant]

Please let me know,
Jonathan Giles.

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.

Monday, May 22, 2006

Watch and enjoy

Watch and enjoy this

Site Feeds

Jonathan has asked whether site feeds for thsi blogger are switched on. Yes, they are. Here is the URL: http://semassey.blogspot.com/atom.xml .

Tricky questions

A good friend of mine is applying for a job at a Google research lab in Switzerland. They called him and have asked the following questions (would you know):
  1. How does the initial handshake in TCP/IP look like?
  2. What happens if you kill a Java process with "kill -QUIT"?

SF Subversion

In case you did not know - SF supports subversion now !! I have just migrated the webofpatterns project(s) (yes, 5 modules, and more to come) from CVS to Subversion and it all works fine. I am using Tortoise SVN and the SVN Eclipse plugin as clients. Lessons learned: you need to configure the proxy for Tortoise SVN explicitely (it seems not to pick up the system settings). No trouble with Eclipse, I guess the plugin pulled the proxy config from the update and install plugin (I am doing the same in WOP now).

OpenSource in NZ

The NZ Herald has an article about the response of the NZ OS Society to an report of the State Service commission on the use of Open Source Software earlier this year. My understanding was that the report suggested to avoid "infectious" licenses such as the GPL. This is not the same as banning open source, as a lot of software is under licenses considered to be more business friendly such as Apache or LGPL.

Tuesday, May 16, 2006

New books

I have just received two new books on Eclipse - Gamma's / Becks "Contributing to Eclipse" and Clayberg's "Building commercial-quality plug-ins". Both are excellent, written in cookbook style. Gamma / Beck seem not to cover new Eclipse 3.0+ features. Come to my office if you want to have a look or need them for projects.