It’s been a while since I made a blog post. Today, however, there is something worth writing about.
XIP-1324 went live today in Talis Aspire. That code number won’t mean anything to most people but it’s indelibly imprinted into my brain and will be for the foreseeable future.
Today’s release contained an updated version of our reading list editor and is the result of several months work. I started it around Christmas and took it through many iterations of subtle tweaks and also quite a bit of scope creep from what was originally planned. Nad dipped in and out as time allowed at the start and BrickRed took the reins a couple of weeks before the end to sort out the data conversions, squash a few bugs and give it a good test as I was diverted onto another project. So, thanks to all who helped out along the way.
The crux of XIP-1324 is giving users the ability to create/edit reading lists in draft and keep working on them until they are happy with the result and then publish them as live. There may not be much visiblly different in the UI (some of the other features can be found in the associated release blog post) but it involved some complex changes to our caching mechanism and a total internal rework of how the list editor worked under the hood.
I also wrote the first version of the list editor over a year ago and that caused its own problems. There was a decision then to use rdfQuery – some of this was based on need – the ability to suck an RDF model out of an XHTML+RDFa marked up page and then save multiple changes to a reading list in one go. This didn’r scale well however and performance was poor with extracting the model from the page, especially when we ended up sending hte old and new model to the server at save time to update the changes to the list. Maximum practical list size then was about 100 items and even that was touch and go in IE7 – the most used browser by our end users.
It’s a shame I can’t point at a live runnining copy of the editor that’s open to the general pubiic but if you want to see some of the general reading lists then try out any of the live instances at Plymouth, Sussex, St Andrews or Nottingham Trent Universities.
It’s been a long journey but I am so very glad it is now live.
A while ago I wrote about an issue with CPU spiking in Internet Explorer 7, recently I encountered another instance of this that required a different fix. To recap, we have a rich-client drag-drop interface across two scrolling panes. You can drag and drop within the main pane on the left (a nested list with 'sections' and 'items') and you can also drag things from a pane on the right onto the pane on the left. A read-only display of this (without the drag/drop and right-hand pane can he seen here for reference. Last time, we had a CPU spike causing slow juddering drag/drop when there were were only about 7 or 8 items in the left hadn pane. This got progressively worse as you dragged more items onto the list. After trying various things from Steve Souders' excellent blog and other Googling it ended up with selectively switching elemts of the screen off until I could narrrow it down to see what was causing the problem. It turned out to require a few CSS 'min-height's being set on a couple of attributes but I'm not 100% sure why. I'm guessing it could be some manifestation of the IE 'hasLayout' problem and the min-height could have been the equivilent to the Holly Hack to coax the IE rendering engine into working properly. This time however the same symptoms manifested themselves but a different cause and different solution was found. More selective disabling of page elements/events and head-scratching later this one turned out to be caused by an absolute positioned button in the top-right of the left-hand scrolling pane. There was no need for this to be absolutely positioned so I just tweaked the CSS again to float it to the right of the list title and, hey-presto, IE7 CPU spike goes away and performance returns to normal. It's these kind of things that give IE the reputation it has with web developers…. 🙂 Love it or hate it, it certainly gives you some interesting issues to sort out.
A couple of weeks ago I was out on a lunchtime walk around the Business Park and bumped into someone I used to work with a few years ago at Severn Trent Systems (about 200m from where I work now). It seems that the project we both used to work on is still alive and well and it made me start wondering about other projects I've worked on; how long they lived for in these fast-changing times and how many still have traces of them being used today. The project in question was an asset inventory system for Severn Trent Water. It was written in PowerBuilder (I wonder how many people still use that?!) and, horribly, used Tuxedo as a middleware component rather than do traditional 2-tier client/server, which PowerBuilder was brilliant at. So, going from memory, here's a potted history of projects I've worked on. I wonder what happened to them all… 1989-1991ish – Mainframe COBOL stock systems that had been around for years and years for Kay & Co (Worcester), part of the Great Universal Stores group at the time. Anyone for Decision Table COBOL ? 1991-1992ish – Model204 stock systems, again for Kay & Co. I've still never come across anyone from other companies who had ever used this although it was a pretty neat language. 1992-1995 – Various DOS-based systems, again for Kay & Co. Varying hardware from twin-5.25 floppy Apricot machines to PC's with and without hard drives, then onto more standard Windows PCs. All written in Clipper / dBase. 1995-1996 – Windows GUI development with PowerBuilder, again for Kay & Co – writing applications for the Catalogue Bargain Shops. 1996-1997 – More PowerBuilder stuff at Fame Computers – what a crap move that was after many good years at Kays… 1997-2003 – A couple of PowerBuilder and then Java J2EE applications for Severn Trent Systems. The AIMS project was probably written in around 1999/2000 in PowerBuilder and is still apparently being used now. 2003 – A great time at SmartStream Technologies in Bristol working with great people on a great new rich-client project. Doing AJAX without it being known as AJAX then, it was a voyage of discovery and a great time. Shame the long commute got too much to bear. Good times there…. 2004-2006 took me contracting for a few years at about 4 companies and it was a mixture of brilliant new development of AJAX applications just as those technologies were emerging and the usual case of being hired to help out on failing run of the mill J2EE apps… The companies and projects will remain nameless so the good can't be distinguised from the bad ! 2006 until now brings things up to date at Talis, first as a contractor for 1.5 years, then as a permanent employee. I consider myself pretty lucky over the years with the exposure I've had to different projects, technologies and languages. It's been a great journey and I hope it continues.
I've known for a good while now that I need to make more time out of work hours to look at the things I don't get chance to do at work. This list gets longer and longer and the time to look at things on it rarely seems to materialise. I get bits of time here and there to read up on things, dabble and generally do small bit of work but struggle to find enough long chunks of quality time to get a proper project going. This has to change before the list of things buzzing around my head gets too unmanageable. Number 1 on my list is to do some traditional LAMP development as it's a hole in my skills. I'm fine with the L, A and P but have never really done much with MySQL in relation to PHP applications. I've done loads of SQL over the years – mainly Oracle and Sybase with a bit of SQLServer thrown in but only really dabbled with MySQL and never done any traditional RDBMS stuff with PHP. When work is focussed with what you could class as Linux/Apache/RDF/PHP and Linux/Apache/SemWeb/PHP I need to ensure I keep a broad skill-set and not totally forget (although I have forgotten a lot already) how to be fluent in SQL. So, top home project is LAMP-based and probably using Zend Framework as a starting point as I've only ever used Zend Mail on that and the framework looks pretty comprehensive. I've blown the cobwebs off my home dev environment tonight, got a stub Zend project checked into my Subversion 1.5 repository (yes, I know I still need to look at the 1.5 merge tracking features as I'd really like to use it at work) and I'm now ready to get on with it. I just hope I get the time to make some progress with it. I'm not quite sure what the project will be yet – it'll probably just start of as trying out loads of the features the framework supports and see where it leads. A 'ToDo' list manager would be ironic – spending time creating something to list all the things that I don't find time to do…
I'm getting a bit tired of lazy recruitment agents and their tactics to try and have an easy ride. Normally it's just endless email spam about totally irrelevant roles in totally ittelevant locations for a pathetic amount of money. Most get totally ignored but the exceptionally irrelevant ones get a reply with something along the lines of “What part of my C.V. did you actually think made me relevant for this position?”. Then there are the phone calls… “Are you looking for work?” “No, not right now…” “Do you know anyone who is looking for work?” “Mind your own business and do the hard work finding them yourselves“. A recent tactic seems to be trying to connect to me on LinkedIn – just so that they can see what other contacts I have and then approach them. Hmmm…. Nice try but I'm not adding you in, sorry. Unfortunately they are a necessary evil in this line of work. Over the years I have come across a few good ones – those who know me well, know what I am really looking for, have placed me before and always seem to come up with perfect match roles. These are the ones to keep in touch with, the ones who take the time to find out what you really want and know when to ring you when something comes up. Those who cold-call are no better than tele-sales people, using a scatter-gun approach to find someone suitable and annoying the other 99% in the process – they just give the recruiters a bad name. So, to those recruiters who know me well and have always delivered the goods, “thanks”, and keep up the good work. For those who can't be bothered, I wish you well as it reflects badly on your company and I very much doubt you'll ever place me anywhere. Just to clear things up – for the record, I'm not looking for anything right now – understood?
A couple of weeks ago I needed to look something up regarding Subversion and headed off to grab the latest copy of “Version Control with Subversion” online. Whilst looking through it I noticed that Subversion 1.5 had been released without me noticing and that there were a couple of interesting new features. The main one for me was support for tracking merges up from trunk to a branch. This is always something I have had mixed success with, normally trying to avoid multiple merge ups from trunk or even trying to avoid merging up from trunk at all because of the inevitable issues when merging the branch back down into trunk. Subversion 1.5 allegedly helps with this so I put it on my list of things to do to investigate. The first part of that was done last night when I set up a new Subversion 1.5 repository on my home Gentoo Linux server. After initially thinking about setting up a general repository for all users and accessing it through Apache/DAV I soon ditched that option due to lack of time and an annoying HTTP 500 error from the repository when trying to authenticate. In the end, to just get me up and running, I set up a new repository in my own user home directory and accessed it remotely using the SVN+SSH protocol – job done… So the repository is all now set up, I can access it remotely from my MacBook and I'm ready to go with trying out the new Subversion 1.5 merge tracking feature. More on this soon….