Thursday, 30 October 2014

Legacy Projects - Mixed Blessings

I’ve been a software engineer for over 25 years now and my past is filled with legacy projects – some successful and some not so – some still live and others long since dead – and most importantly some that I would be happy to work on again and others that I certainly wouldn’t.
So how do you get to pick and choose which ones come back and which ones stay buried in the past. I think the real answer is you don’t, it just sort of happens and you have to put up with what you get.
You could change jobs to get rid of legacy projects but it’s a bit drastic, especially when you’ve got a good job with some interesting new projects on the horizon. It doesn’t always work either, when I left Racal Marine in the mid 90’s I was contacted a year later to go back on Saturday mornings to work on a millennium bug. I had no ties and could have easily said no but I felt obliged even though the bug was nothing to do with me and had been created many years before I’d even started working there.
I did two stints to fix the same bug for two slightly different deployments. The first one was a bit of a disaster for me financially because I did the work in less than half the budgeted time I had given and only got paid half the money – hardly worth getting out of bed on a weekend for. But I ensured the second one was done on a fixed price and after a quick fix I ran with the cash.
The worst project I worked on was at Primary Image where I was responsible for writing the SCSI scripts which ran on an embedded SCSI controller and controlled a tape drive for archiving digital video. The ‘happy path’ software was fine but as soon as the error handling code was added the scripts became a rabbit’s warren of execution paths.
Looking back it feels as though that was all I worked on at the company but there were other enjoyable projects. This one had been put to bed and was running happily until a client in Ireland reported that they couldn’t retrieve data from the tape and they needed it to catch a man suspected of cashing a fake social security cheque. The prospect of revisiting the code was a nightmare but it had a silver lining – I flew out to Dublin for the day, discovered it was user error and flew back. The only disappointing thing was not getting to see any of Dublin except from the back of a cab because the bank manager insisted I accompany him to their free staff canteen for lunch instead of site seeing and then gave me a lift to the airport on his way home to save me the taxi fare only to deny me another opportunity of site seeing before my late flight.
While working at Atkins (the whole millennium so far) I have worked on a number of large projects which have stayed with me in one form or another. The Carbon Tools Knowledgebase was a carbon modelling system created to be delivered as Software as a Service, we spent a fortune building it only for the recession and a change of CEO to cause it to be cancelled. Another was Transport Direct, a public web site offered by the Department for Transport which was the only true national multi-modal door-to-door journey planner available, it was cancelled because the EU insisted the DfT retender to extend the 12 year contract and they couldn’t justify the expense.
Instead of deleting the Knowledgebase system from the servers when it was cancelled I moved it to some new servers so that a few people who had been using it could still use it on the QT. One of these users has just sold the complete service to a national organisation and the project has come back to life – and guess who the only person left in the company with knowledge of the system is? Yep, yours truly.
It was always ‘my baby’ and in some ways I’m happy that it has come back to life, but I have other things to work on now and it’s a distraction. I’ve been helping somebody familiarise themselves with the code and pointing them in the right direction to investigate the few minor issues with the software. But I can’t help wondering how he’s getting on and want to chase it up.
Most of the IP for Transport Direct belongs to the DfT, so they made it Open Source when shutting down the project in the hope that somebody might pick it up and offer the public the service again. There isn’t a car planning service that can provide a journey plan for future days with predicted congestion, so there is now a gap in the market, albeit one that wouldn’t generate any revenue. It has already been picked up for exactly this reason and I’ve been contacted by the company concerned asking for assistance with getting it running.
I’m less inclined to get involved in this software again but I feel guilty denying Atkins the opportunity to make some consultancy money from the situation. And we might miss out on selling the bits of IP that we own from the project.
With the advent of Linked-In and other social media sites I wonder if changing jobs would get me away from these legacy projects in the same way that it has done in the past – I think the fact that the DfT have always managed to find me and others with party invitations in the last few years of the project when we were no longer directly involved suggests maybe I couldn’t.

Wednesday, 25 June 2014

Blue light makes me see Red


Some time ago our broadband cable modem stopped working and after waiting a week for somebody to come and look at it they left us with a replacement which doubled as a Wifi hub. A new bit of free kit would have been welcomed, even though we already had a Wifi router that distributed the old signal, if only it didn't come with a little flashing LED on the front of the device.

As the broadband is provided by our cable TV company the wire comes through a hole in the living room wall next to the television, which means the router has to go in the front room next to the television, the same can probably be said for 90% of their customers, so why would they put a flashing signal light on the front of the device. How distracting is that when you are trying to watch TV? Very, I can tell you. And to make matters worse the light is blue, if you make the mistake of looking at it your eyes will go funny for a few seconds because they have trouble focussing on blue light and the intensity of blue LEDs is greater than red or green ones.

Within hours of owning it I had turned the device around so that I couldn't see the offending LED. That cured the problem until it got dark, when the light was reflected off the white walls illuminating the corner of the room in a ghostly shimmering blue glow. A DVD from a nearby shelf propped up against the back of the device, which used to be the front, cured that. I was hoping that the title of the DVD would be something amusing or prophetic but sadly not, except that 'No Way Back' does sort of describe the situation we find ourselves in.

The event got me wondering about the LEDs and user interfaces of the other devices in the front room and elsewhere in the house. When everything is turned 'off' there are five red LEDs (Wii, PS3, TV, cable TV receiver and a sub-woofer), one green LED (good signal on the cable TV box) and if the lights are out the slight glimmer of the aforementioned blue LED. And if the cable TV box is recording its full quota of programmes there are another three red LEDs. A few more and we'll be giving W.O.P.R. a run for its money. 
 
Moving into the dining room the hifi displays a clock with a blue backlight when off and the adjoining kitchen has a microwave with a clock - no backlight this time. The dishwasher turns its myriad of LEDs off when it is turned off, as does the washing machine in the utility room. The clock on the microwave is useful but I can't understand the logic of putting a clock on a hifi or yet another dreaded blue light, thankfully it isn't in the front room next to the television (that hifi has no LEDs even when it’s on).

Interestingly the dishwasher has a timer on its display which shows you have many of the 2 hours 15 minutes are left before the wash is complete, a pretty pointless feature because if you need something out of it before the wash is complete you just open the door and take it out. The washing machine on the other hand, which is made by the same manufacturer, doesn't have a timer despite sharing most of the other controls with the dishwasher. That timer would be really useful because we often find ourselves waiting an indeterminate amount of time for the wash cycle to complete so that we can hang the washing on the line before we go out.

We have another hifi, television, freeview box and an old fashioned video recorder in the bedroom and more LEDs. The hifi has a power button with a blue backlight when it is off, but thankfully it’s on the top of the device and can't be seen. The CD player has a red LED and the freeview has a blue LED when it’s off and no LEDs when it is on - probably demonstrating that somebody has thought about usability even if they haven't considered that users might put it in a bedroom that they want to be dark. The old video recorder has no LEDs but it does have a nice pale green clock which means it is still powered up years after we last used a video tape. It tells us what time we visit the loo in the middle of the night – an essential requirement that I cannot explain or justify.

I was going to say that the CD player doubles as a DVD player but it's probably the other way around because there is no track display on the device, instead the track details and timer appear on the TV screen, fine if you're watching a DVD but not much good when playing a CD, who'd want to have the TV on to listen a CD?

So what  have I learnt from this quick study of the LEDs in our house? Not a lot really except that there are a lot of them on the newer devices and very few, if any, on the old devices. There are more blue ones than I expected and some are off when on while others are on when off, and yet more are on all the time. I've also discovered that clocks and timers are deployed liberally but not logically.

Time for bed now where I'll have to remember to turn my head to the left to avoid that damned blue LED on the freeview box.

 

Running, Poo and Strava


“I used to timetrial with Epsom Cycling Club.” I tell everybody that when the subject of cycling comes up. It sounds like I gave up last month or maybe last year but in actual fact it’s been over 7 years now. I know because I wasn’t a veteran when I cycled and I’m 46 now. I’ve cycled intermittently in the meantime but nothing serious.
 
The reason I gave it up was twofold, firstly I had just progressed to road racing and somebody knocked me off in my first event twisting my knee, and secondly it was a relief. By definition timetrialling is all about beating your last time, which for somebody as competitive as me heaps on the pressure. I used to get so stressed before an event that it would give me diarrhoea.  For the first mile or so of each timetrial I would feel like shit (sorry couldn’t resist that pun) and be full of negative thoughts about why I was putting myself through this, and then I’d settle down, get into a rhythm and rather enjoy myself, fuelling a repeat performance the following week.

I felt extremely guilty about giving it up but I had a dodgy knee to blame it on. The knee must have gotten better because now I can’t even tell you which one it was. So why am I writing this now you might ask, well, last November I noticed that I had put weight on. I didn’t wake up one morning and think ‘where did that come from’ it was a gradual thing that I was aware of but ignoring. It was time to get the bike back out, maybe I could join winter training and consider timetrailling again next spring. Not a bad plan if I could have managed to cycle 50 miles on a Sunday morning with the guys who hadn’t had 7 plus years off. I needed to start cycling during the week to get fit enough to start training if that makes sense.

But it was November. Dark and damp before and after work, not the ideal conditions for getting back on the bike, so I went jogging instead. I haven’t run since I was at school when I used to challenge for the lead at cross country despite being terrible at sports. I picked a route round the block which was just over 3 miles and ran it 2 or 3 times a week. It took me nearly an hour each time but that didn’t matter, this wasn’t a challenge, it was just a means of getting fit and losing some weight.

I really enjoyed it and didn’t experience any stress or doubts as to what I was doing and more importantly I didn’t suffer from diarrhoea before every run. However, after the first mile or so I do often have a terrible sense of needing to go for a poo. Fortunately the sensation passes eventually and I don’t have to do a Paula Radcliff.

After a while it was getting easier to run around the block and to add a bit of nostalgia for the cross country running at school I lengthened my route to include a bridlepath up on to Epsom downs. I could have done without the gradient but it was the only off-road path near home that didn’t involve getting the car out. I was surprised at how enjoyable I found it and the soft earth underfoot has the added bonus of being kinder on my knees.

All was going hunky-dory until I started to wonder how fast I was going and installed Strava on my phone in April. If you haven’t used Strava, it records your progress using GPS as you run or cycle and uploads it onto the Internet when you’ve finished. It then looks for timed segments that you have run and adds you to a leaderboard for that segment. It also has a leaderboard for the most miles run or cycled in a calendar month.

There was one segment on my route, a ½ mile section on the bridlepath up on to the downs. A 4% climb rising 99ft which rather appropriately for the title of my article is called ‘Rifle Butts’. It said it took me 5 minutes 44 seconds and I was 18th out of 19 people who had run it in the past.

From that day onwards I haven’t been running without my phone and have even been out to buy new running gear with zip pockets to accommodate it – I don’t like the idea of sticking it on my upper arm as I run alone in the dark, it feels like having a sticker on my back that says “Hello mugger, I have an expensive phone with me if you’d like it.”

My time for the Rifle Butts has steadily reduced over the past few months without me even trying and then on Friday I went for a run and was surprised to see that I had gone faster again without noticeably putting in any extra effort. So on Sunday I decided to have a go at doing a really fast time, if for no other reason than to get it out of my system so that I could go back to leisurely running. It felt good and I was sure I’d bettered my time by a long way.

When I got home and uploaded my run to Strava I was shocked to see that I was only 1 second faster up Rifle Butts than I had been on Friday. How was that possible? I was sure it was better. Now what? Do I get all stressed out on my next run or just forget about it and concentrate on enjoying myself?

Saturday, 6 August 2011

I invented the Linked List or A Shaw Thing

When I left home to go to University (or Polytechnic as it was called then) in 1986 I already had 6 years of experience writing software on the many home computers I had owned, so when I attended one of my first courses called Data Structures and was introduced to a technique called a Linked List my first reaction was, ‘I’ve used those loads of times,’ therefore, ‘I invented the Linked List.’ I’d never thought of giving the structure a name and didn’t know that somebody else had.
The same phenomena has been happening to me ever since. There are two reasons for this, firstly when I’m asked to provide computer software to solve a problem my first reaction is not to look on the software shelf for something already available (or COTS as it is commonly known) because there’s no fun in that and secondly, my company’s clients don’t normally have enough money to pay us and buy software off the shelf.
Creating your own version isn’t always a bad thing, for one you will never be frustrated when the software you have bought does quite do what you want it to do and there is no way to extend it. And you won’t be paying for all the bloatware that you will never use. If you can create your own version quickly and cheaply, and can add features as and when the client asks for them, then it is a great way to create a good reputation for yourself – my current project manager recently said ‘there wasn’t a technical problem that I couldn’t solve.’
It does sometimes have its downsides though. I recently attended a Software Architecture course based on TOGAF which had an exam at the end of the course. I breezed through the training because there was nothing that I hadn’t seen before, but when it came to the exam I failed. Not because I didn’t know the material but because The Open Group had given names (or more accurately acronyms) to everything that I had been referring to as something else for years, and I couldn’t reprogram my memory in a few days.
The software industry isn’t the only place where ‘Shaw Things’ occur. If you have ever been asked to sum all the numbers between 1 and 100 and have intuitively thought that if you write the numbers out in sequence and then in reverse sequence beneath them and add up the pairs, that you have one hundred 101s so that total is 10100 / 2 = 5050 then you have just used Gauss’s algorithm. And if you have ever made a white sauce by mixing milk, butter and flour then you’ve made a Béchamel sauce.
So if you have ever created something only to discover that somebody else has also created it and given it a name when you never thought to do so, you now know that the phenomena is called A Shaw Thing unless of course somebody else has already named this phenomena in which case A Shaw Thing is actually A Shaw Thing.