Friday 29 October 2010

RSS Feed now available

After a record amount of feedback (2 emails, even though it was from the same person I will count it twice), I havefinally gotten around to setting up RSS feeds for this blog.

Sometime soon I should be posting about my experiences of using JAX-RS to expose some existing SOAP web services in a not REST-ish manner.

My recent quiet period coincides with starting a new job.

Wednesday 6 October 2010

It's a small world

Today I had an interview for a role contracting at an e-commerce organisation near London.

After completing the multi-choice "technical test", and blitzing through the practical task, I had the face to face aspect of the interview.

The first of the two interviewers had a familiar accent, then I recognised the face as well - "Hey, I think you were in my class at uni"...

Eleven years later and about 19,000 kilometres from where we met - I think this proves that it is a small small world.

Tuesday 5 October 2010

Dabblings in open source software projects

Sorry to bore you with yet another post designed to remind myself about what I should be mentioning in job interviews.

This post is a breakdown of some of the various participation that I have had in open source projects in the last few years.

  • Grails - postings on public newsgroup with gotchas of an upgrade to version 1.1.1 with maven versioning

  • Tomcat - following and posting responses to Tomcat users newsgroup; attending presentations by Mark Thomas

  • Linux-HA - participation in newsgroup during set up of cluster for Airways project.

  • Spring - postings on forums; downloaded source for 3.0 to check use of LinkedHashMap as default type for Map in bean properties.

  • Hibernate - postings on forums.

  • JBoss 4.2 - checked out source code from subversion repository to apply patch for ajp issue.

Monday 4 October 2010

Perspectives on deploying to production

One of the things that I really appreciate about attending job interviews is the opportunity to learn what people from other organisations and industries consider to be challenges.

Take deployment as an example, some organisations are very particular about changing as little as possible on their production environments, whereas other organisations regard a complete replacement of the entire application server as the preferred approach to deploying updates.

From my recent experience disk space was quite limited and not much consideration had been given to externalising logfiles etc, so having a parallel version of the entire servlet container and activating the update by shutting down, changing a symbolic link, and then restarting was not an option.

As a result of the space limitation, our deployment process actually involved extracting a single changed file from a "platform" artifact and a sequence of manual copying steps.

No doubt the Continuous Delivery book will have some wisdom to be absorbed on this topic.

More Spring bashing than usual at The Server Side?

I haven't really paid much attention to The Server Side website for a couple of years, but I had a glance around it this evening when trying out how things look on the iPad.

I came across an article entitled Moving from Spring to Java EE 6: The Age of Frameworks is Over which reminded me of a lengthy blog post that I had read recently Spring to Java EE – A Migration Experience. Sure enough the article ended by linking through to that blog post.

As I first read the blog post I sensed a definite anti-Spring sentiment, and couldn't help but notice that JBoss technologies were being name-dropped and linked to throughout. Sure enough the blog was authored by a JBoss / RedHat employee.

I suppose it would be asking too much for some kind of impartiality in the world of commercial software (if you dig deep enough you might suppose that the author of the article on The Server Side has some interest in a Java EE resurgence, given the books he has authored).

When I recently attended a couple of presentations of JEE6 and Glassfish 3 given by Arun Gupta I got to thinking that the CDI annotations would allow de-coupling from the dependency injection framework in much the same way as JPA can reduce dependence on a persistence provider (e.g. Hibernate, Eclipselink).

Just my thoughts, which are probably biased.

Flash or no Flash?

While working with graphic designers on various websites in recent years the decision of whether to include Flash or not came up on a number of occasions.

Things progressed from, "Let's not", to "Okay, as long as we have some Javascript to serve alternative content", to "Flash is so prevalent, alright you can use it for content that won't need to be maintained by the customer"

Now that the iPhone and iPad and various other mobile devices are moving up in the ranks of common browsers Flash may have to retreat again.

HTML5 support might make this less of an issue, but I don't particularly fancy moving to having multiple versions of presentation based on browser type (User Agent header supplied in request).

Mobile development experience

Even before acquiring my iPad (today) I have been thinking more seriously about getting into developing for mobile platforms.

I have been along to a couple of presentations about Android and cross-platform development for Android and iPhone so have picked up some useful ideas.

Since I don't have a Mac I think I will have to target the Android platform first.

Hopefully the development won't involve as much trial and error as was required for the Windows Mobile development work I did for Pocket PC applications a few years ago.

Anyone remember the HP iPAQ? That's the sort of platform that we were targeting back then - along with the early generation of 3G phones that came with Windows Mobile.

The .net Compact Framework didn't really have enough ways of hooking into the capabilities of the device back then, so we had to resort to integrating third party Visual C++ DLLs to get at the text messaging and GPS capabilities for location based services.

Sunday 3 October 2010

Property websites development experience

I was fortunate enough to be involved in a range of projects for real estate companies and large property developers between 1999 and 2008.

Infinity Investment Group
- Responded to request for proposal with a detailed estimate and planned approach for the Pegasus Town properties site (still live in a less functional form at: ).

- Participated in discussions with CEO and executives during inception.

- Liaised with designers to fit site within look and feel of their existing content managed platform.

- Coordinated development of dynamically updating township images and associated bid registration system.

- Updated system to work as a live auction held at the Westpac Arena for their sale day.

- Configured a secondary website for the sale of land for the Peninsula Bay land development project.

Technologies involved included:
- Java 5
- Struts
- Tiles
- PostgreSQL with GIS extensions (aka PostGIS)
- SQL Server 2008
- Javascript, HTML, CSS
- JPox JDO for Object Relational Mapping
- Geotools
- Debian Linux
- Tomcat
- Eclipse and CVS as the development environment and version control respectively.
- Servlets
- JSPs

Harcourts Group (New Zealand's largest real estate franchiser)
- Development of UI components in Swing for a rich client trust accounting system used by frachisee offices administrators.

- Development of data feeds to and from national real estate bodies in New Zealand and Australia. Built up modules and scripts in Perl to access large volumes of data in XML and CSV formats.

- Pair programming for the new listing and open home alert system, where visitors to the site could register to receive alerts by text message and email as new listings and open homes were coming up for properties that matched their criteria.

Technologies involved included:
- Java 1.2 - 5
- Perl 5
- Tomcat
- IIS 4
- SOAP web service for SMS gateway
- SQL Server 6, 7

Colliers Jardine New Zealand
- Development of a public website for property listings of different types of commercial property in a team of 3 developers.

- Implementation of change requests, ranging from tweaks to full campaigns with separate domain names.

Technologies involved included:
- Internet Information Server 4
- Classic ASP pages written in Perlscript
- Custom developed Perl modules
- CPAN Perl modules
- SQL Server 7

E-commerce projects experience

One of the problems of having over a decade of commercial experience developing software, is that I really can't fit enough information onto my CV without putting off recruiters.

This post might act as a supplement to outline my e-commerce project experience.

My most recent e-commerce projects have involved me designing and developing for the following technologies, integration points, and key functionality:
  • Hybris 3.1 and 4.0 clustered.
  • Commidea web service version 4 for online payment processing
  • Some familiarity with PCI compliance
  • Facetted navigation to enable filtering of products based on attributes
  • Google Analytics including E-commerce conversion and site search
  • Mailbrain and Prolog formats for order fulfilment
Some of the more generic technologies involved include:
  • Spring 2.5, web service client resource pooling
  • Tomcat 6, Servlets, Filters, Portlets, eXo
  • Apache httpd, Redhat Enterprise Linux on Rackspace hosted servers
  • MySQL, Java 6, Apache Axis SOAP web services

Earlier in my career I developed bespoke online purchasing systems as part of existing sites that I had responsibility for extending and maintaining.
  • An online stationary ordering system
  • A ski pass registration and sale system
  • Online interest registration system with colour-coded map of township lots available for purchase

Unit tests can help or hinder refactoring

Having a suite of tests which cover the intended behaviour of a class in isolation allows the development team to feel more comfortable that subsequent changes to the implementation of that class have not had undesirable side-effects.

If a blanket policy is in place to have some numeric value associated to represent "good test coverage," then some test cases can become an overhead that needs to be worked through when refactoring takes place.