Robert Baillie

Subscribe to Robert Baillie feed
More than 2 decades of writing software, and still loving it...
Updated: 8 hours 59 min ago

Ideas for improving innovation and creativity in an IS department

Thu, 2013-08-08 10:27
At our work we've set up a few 'action teams' to try to improve particular aspects of our working environment. The team that I'm a member of is responsible for 'Innovation and Creativity'. We're tasked with answering the question "How do we improve innovation and creativity in IS?" - How we can foster an environment that encourages innovation rather than stifles it. As a bit of a background, the company is a a medium sized (2,500 plus employees) based mainly in the UK, but recently spreading through the world, the vast majority of whom are not IS based. The IS department is about 100 strong and includes a development team of 25 people. It's an SME at the point where it's starting to break into the big-time and recognises that it needs to refine its working practices a little in order to keep up with the pace of expansion. We met early last week and have put together a proposal to be taken to the senior management tier. I get a feeling it will be implemented since our team...

A reading list for our developers

Thu, 2013-08-08 10:27
An idea I'm thinking of trying to get implemented at our place is a required reading list for all our developers. A collection of books that will improve the way that developers think about their code, and they ways in which they solve problems. The company would buy the books as gifts to the employees, maybe one or two every three months. Some questions though: Is it fair for a company to expect its employees to read educational material out of hours? Conversely: Is it fair for an employee to expect to be moved forward in their career without a little bit of personal development outside the office? If anyone has any books out there that they'd recommend - please let me know. Otherwise, here's my initial ideas - the first three would be in your welcome pack: Update:Gary Myers came up with a good point, being that any book should really be readable on public transport. That probably rules out Code Complete (although I read it on the tube, I can see that it's a little tricky),...

Database Build Script "Greatest Hits"

Thu, 2013-08-08 10:27
I know its been a quiet time on this blog for a while now, but I've noticed that I'm still getting visitors looking up old blog posts. It's especially true of the posts that relate to "The Patch Runner". Many of them come through a link from Wilfred van der Deijl, mainly his great post of "Version control of Database Objects". The patch runner is my grand idea for a version controlled database build script that you can use to give your developers sandbox databases to play with as well as ensuring that your live database upgrades work first time, every time. It's all still working perfectly here, and people still seem to be interested, so with that in mind I've decided to collate them a little bit. basically provide an index of all the posts I've made over the years that directly relate to database build scripts, sandboxes and version control. So, Rob's database build script 'Greatest Hits': On the basic idea of building a database in an agile mannerOn how you might start...

Can a change in execution plan change the results?

Thu, 2013-08-08 10:27
We've been using Oracle Domain indexes for a while now in order to search documents to get back a ranked order of things that meet certain criteria. The documents are releated to people, and we augment the basic text search with other filters and score metrics based on the 'people' side of things to get an overall 'suitability' score for the results in a search. Without giving too much away about the business I work with I can't really tell you much more about the product than that, but it's probably enough of a background for this little gem. We've known for a while that the domain index 'score' returned from a 'contains' clause is based not only on the document to which that score relates, but also on the rest of the set that is searched. An individual document score does not live in isolation, rather in lives in the context of the whole result set. No problem. As I say, we've known this for a while and so have our customers. Quite a while ago they stopped asking what the...

Handy "Alert Debugging" tool

Thu, 2013-08-08 10:27
One of the coolest things about OO Javascript is that methods can be written to as if they are variables. This means that you can re-write functions on the fly. Bad for writing maintainable code if you're not structured; Fantastic for things like MVC controllers (rather use the controller to forward calls on to the model, you use it to rewire the view so that it calls it directly, and all without the view even realising it!). What I didn't realise was that the standard window object (and probably so many others out there) can have its methods overwritten like any other. Probably the simplest example of that proves to be incredibly useful... changing the alert function so that the dialog becomes a confirm window. Clicking cancel means that no further alerts are shown to the user. Great for when you're writin Javascript without a debugger and have to resort to 'alert debugging'. window.alert = function(s) { if( !confirm(s) ) window.alert = null; } In case you're wondering... I...

Remote workforces and the 12 golden questions

Thu, 2013-08-08 10:26
I had an interesting conversation with a friend the other day about the difficulties in managing a remote team. That is a team who aren't all located in the same office. Some may be home workers, some may work in different offices.  The main crux of the discussion was around how you turn a group of people into team, garner some emotional connection between them, and to you and your company, and then get the best out of them. After a few days of gestation and rumination it came to me. The rules are the same as with a local team - you may do different things and the problems may be more difficult to overcome, but the techniques you use are fundamentally the same. That thinking led me back to Marcus Buckingham's fantastic book "First Break all the Rules". If you manage people and haven't read this book - shame on you. It is a must read. One of the main arguments in the book revolves around a set of questions you should ask of your staff defined by years of research by Gallup based...

Things I believe in

Tue, 2008-04-22 03:17
It's easier to re-build a system from its tests than to re-build the tests from their system. You can measure code complexity, adherence to standards and test coverage; you can't measure quality of design. Formal and flexible are not mutually exclusive. The tests should pass, first time, every time (unless you're changing them or the code). Flexing your Right BICEP is a sure-fire way to quality tests. Test code is production code and it deserves the same level of care. Prototypes should always be thrown away. Documentation is good, self documenting code is better, code that doesn't need documentation is best. If you're getting bogged down in the process then the process is wrong. Agility without structure is just hacking. Pairing allows good practices to spread. Pairing allows bad practices to spread. Cycling the pairs every day is hard work. Team leaders should be inside the team, not outside it. Project Managers are there to facilitate the practice of developing software, not to...


Mon, 2007-08-20 10:54
And you think software patents are bad... China Regulates Buddhist Reincarnation

Problems with CVS removes?

Fri, 2007-07-20 11:30
Accidently removed a file in CVS that you want to keep? Sounds like a stupid question, because when you know the answer to this problem it just seems blindingly obvious, but what if you've issued a 'remove' against a file in CVS and before you commit the remove you decided that you made a mistake and still want to keep it? I.E you issued (for example) > cvs remove -f sheep.php But not issued > cvs commit -m removed sheep.php I've heard work arounds such as: Edit the "entries" file in the relevant CVS directory in your workspace, removing the reference to the file. This makes the file appear unknown to CVS.Perform an update in that directory. This gets the repository version of the file and updates the "entries" file correctly All you actually need to do is re-add the file: > cvs add sheep.php U sheep.php cvs server: sheep.php, version 1.6, resurrected When used in this way, the add command will issue an update against the file and retrieve the repository version of...

Tab Complete in Windows

Tue, 2007-06-26 14:04
Another one of those things that I can never remember off the top of my head so find myself constantly looking it up whenever I get access to a new machine. I figure it may as well be my own site that I get the info from :-) To switch on 'Tab Complete' in Windows command line change the following registry keys to '09': HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionCharHKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar


Fri, 2007-06-22 12:09
Saw a cracking Haiku on a t-shirt the other day: Haiku are easy But sometimes they don't make sense Refridgerator. Then my mind started dwelling on it: Got the release out But the testing's not finished It's falling over Or Database is slow Just can't see what's wrong with it Set autotrace on Or A quick refactor Turns into a bigger job Should have unit tests


Mon, 2007-05-28 12:02
And to follow on from the last post... my current personal bests: I figure if I keep them here, at least I'll always know where they are! 5km Run23:44 (Battersea Park, 'Beat the Baton' 28/05/07) 10km Run53:23 (Hyde Park, 'Run London' 08/10/06) Half Marathon2:17:49 (Redcar, 'Tees Valley Half Marathon' 12/03/06) Rubik's cube57 seconds


Mon, 2007-05-28 11:44
You've gotta have targets. The more I try to motivate myself to do things, the more I realise that if I don't have a target it's incredibly difficult. When I realised this it came as a big surprise to me. I'm really not the sort of person to have a 5 year plan or career goals, but it seems that if I don't set myself an only just achievable goal I find it very difficult to motivate myself to do much. I keep myself fit so that I get the most out of playing football. But just having that in mind isn't enough to get me out and running. If I didn't set myself a target time for a 5km or 10km run and then book a place at a running event, then I'd just sit on my fat arse every night watching TV. OK, so I may be exaggerating my self deprecation, but you get the idea. I find that this affects me in many different aspects of my life. To motivate myself to run I set a target (public) 5km or 10km time (this year it's 22:30 and 50:00 respectively). To motivate myself to learn to do the...


Wed, 2007-04-11 02:20
I'm pretty sure that most people that read this blog will also read The Daily WTF. But just in case you don't, there's a nice entry on 'soft-coding'. Overall the article makes sound sense, but there's a line right at the end that resonates with me, especially since I read it the day after someone told me that they needed a developer for a whole day (9 hours) to roll out their system... With the myriad of tools available today, there is no reason that your deployment process need be any more complicated than a simple, automated script that retrieves the code from source control, compiles it, copies/installs the executables, and then runs the relevant database scripts. It makes me feel like I'm not alone.


Fri, 2007-03-23 02:44
I've had this conversation a couple of time with people, and I've realised that I can't get to a satisfactory answer without some research. And I'm lazy. So I'm going to pose a question... and if I don't get a satisfactory answer here I might well send it to The New Scientist in the hope that they'll answer it. Assuming that the cost of setting up and maintaining the infrastructure is already taken care of, which is more energy efficient: an electric kettle or a stove top kettle?

I am still here...

Mon, 2007-03-19 17:27
Sorry people, I promise I'm still here and I WILL get round to finishing my text on estimating and answering the request for more info on the database patch runner. I will, I will, I will! The problem is, I've started reading again, and I've started playing on-line poker. Damn it :-) But I'm enjoying it, especially a Cohn book on Agile Estimation and Planning. It is an absolute MUST read. It takes off where the estimation chapter from User Stories Applied left off, and it really doesn't dissappoint. Unfortunately it seems to say an awful lot that I agree with, and was going to form the bulk of my next couple of posts. So if you like what I have to say on the topic, then Mike Cohn is definately worth a read... he goes into a lot more detail than I ever will here! Obviously I'm reading an awful lot on Texas Hold 'em as well... but I'm not going to tell you what 'cause that might take away my advantage ;-)

Producing Estimates

Mon, 2007-03-19 17:25
OK, so it's about time I got back into writing about software development, rather than software (or running, or travelling, or feeds) and the hot topic for me at the moment is the estimation process. This topic's probably a bit big to tackle in a single post, so it's post series time. Once all the posts are up I'll slap another up with all the text combined. So – Producing good medium term estimates... I'm not going to talk about the process for deriving a short term estimate for a small piece of work, that's already covered beautifully by Mike Cohn in User Stories Applied, and I blogged on that topic some time ago. Rather I'm going to talk about producing an overall estimate for a release iteration or module. I've read an awful lot on this topic over the last couple of years, so I'm sorry if all I'm doing is plagiarising things said by Kent Beck, Mike Cohn or Martin Fowler (OK, the book's Kent as well, but you get the point), or any of those many people out there that blog, and...