Rob Farley

Rob Rob Farley has been consulting in IT since completing a Computer Science degree with first class honours in 1997. Before moving to Adelaide, he worked in consultancies in Melbourne and London. He runs the development department in one of Australia's leading IT firms, as well as doing database application consultancy and training. He heads up the Adelaide SQL Server User Group, and holds several Microsoft certifications.

Rob has been involved with Microsoft technologies for most of his career, but has also done significant work with Oracle and Unix systems. His preferred database is SQL Server and his preferred language is C#. Recently he has been involved with Microsoft Learning in the US, creating and reviewing new content for the next generation of Microsoft exams.

Over the years, Rob's clients have included BP Oil, OneLink Transit, Accenture, Avanade, Australian Electorial Commission, the Chartered Institute of Personnel and Development, the Royal Borough of Kingston, Help The Aged, Unisys, Department of Treasury and Finance (Vic), National Mutual, the Bible Society and others.

Did you mean to come here? My blog is now at

31 October 2005

SQL2005 Beta exams

Why do I do this to myself?

I've registered to do two beta exams for SQL2005 - 071-431 and 071-441, which are the betas for 070-431 and 070-441. Nov30 and Dec2 are the big days for me, and I'm slightly stressed about them already. I shouldn't be, but I am. It doesn't matter if I don't pass them, it's just an added bonus if I do. I've had SQL2005 installed for quite a while now, and I feel like I know quite a bit about the new features - so theoretically I should do alright. But even so...

Anyone else out there doing these exams? Feel like studying together?

Daylight savings in databases

I feel tired today, because it feels like I got up an hour earlier than normal. Didn't help that I went to bed at a normal 'time', with my body wondering why I was going to bed early. And of course the kids had to be off to school at what felt like really early to them as well.

Databases suck when it comes to daylight savings. Typically the server they are installed on will be set to a timezone that will adjust automatically, and the database doesn't record the timezone with a datetime field. So an event that starts with a getdate() and then closes a few minutes later with another getdate() suddenly seems to take over an hour, or perhaps negative time.

One option is to have databases on machines that don't adjust for daylight savings, and then adjust according to the local time of the client (or web server). But then you find that the events of a week ago seem to change by an hour, because they were being displayed in winter time, and suddenly now they're being displayed as summer time. And users really hate that.

It would be really nice if databases could be configured to understand daylight savings really well, so that you could ask them how many hours there were in March or October (eg: datediff(hour, '1-oct-2005', '1-nov-2005') ) and have it give you an odd number, not an even one. Or even better, the western world could just accept that everyone is happy with having the day centred around 1pm, and leave daylight savings on all year round. Everyone seems to prefer having more daylight in the evenings than in the mornings, so where's the problem? (Except that Greenwich Mean Time would never be correct in Greenwich)

28 October 2005

Is it worth mentioning?

What's the likelihood of someone reading my blog who doesn't already know that VS2005 Professional and SQL2005 Developer are now available for download from MSDN?

27 October 2005

AdSSUG meeting in November after all?

Tonight was a bit of fun. I was talking to David Lean on Msgr. Looks like he might be speaking to AdSSUG on Dec 15th (I know I said the 8th, but we tend to have meetings the day after the second Wednesday, rather than the second Thursday). During the conversation he said that Greg Linwood wanted my phone number. I gave it to him but said that my wife was on the phone. And Greg couldn't email me, because his wife was online. So we were talking through Dave. Well, I thought it was funny.

Seems Greg's going to be in Adelaide for the second weekend in November, so there are yet-to-be-confirmed rumours that we might have a meeting in November after all (apart from the launch). If you're reading this and are yet to hear from me that the meeting is happening, drop me a line to let me know if you'd be interested. You know... rob_farley at hotmail. I'm hoping that it would be the lunchtime of the 10th. If I get lots of people emailing me to say "Nah - not interested", then I'll try to trade Greg's slot in for one in January or February.

Isn't running user groups fun? Oh yeah - if you're reading this and you're going to be coming to the community launch event on Nov21, and you're interested in speaking for a few minutes about some great SQL2005 thing, then let me know and I'll put in touch with Mr Lemphers. :)

26 October 2005

Catching up with Kleefy

I got to catch up with Michael Kleef today. He's a good guy. If you don't know him, then keep your eye out for an opportunity to meet him. He'll be at the community launch events that are coming.

I can't write much at the moment - I'm about to get picked up (home time!) - but at the next Adelaide SQL Server User Group meeting I have a good shirt and keyring to give away. So make sure you come along. Probably December 8th.

24 October 2005


Dan pointed out that EXTERNAL_ACCESS is enough to let my median aggregate work, rather than marking it UNSAFE.

Value of a cheap car

When we moved from London to Adelaide, Roslyn moved a few weeks before I did. She bought an old Camira just to get around, we didn't expect to keep it all that long.

We still have it, I've been using it to get to work, as it's been fairly reliable and we've seen no real need to replace it. It probably wasn't even worth $1000, and so long as I was happy to be seen in it, it would do the job. Also... a car worth less than $1000 isn't worth putting fire 'n theft insurance on. After all, you figure that no-one's going to bother stealing it...

Over the weekend, it went missing from outside our house. We reported it gone, and this morning we got a call to say it had turned up, with no visible damage. Yeah, except for a missing indicator, missing mud flaps, that type of thing. Oh, and the dirt. Stupid amounts of it.

It didn't start either. We would've used the jumper leads in the boot, except that they'd been nicked. So we borrowed some from my mother-in-law, and have added them to the list of things to get. Managed to start it, and hoped to get back to work in it. Didn't. Tried to drive it home... but it really doesn't go. We ended up towing it home, and we'll work out what to do next later.

My practice amp was in the boot, and Joel's booster-seat is gone. And I had a bible in there (hope they read it!). So it wasn't just the jumper-leads that got stolen.

I called this post 'Value of a cheap car', because until I get a replacement, we'll be inconvenienced in the school-run and getting to work. Can't be helped I suppose, but it's definitely annoying.

22 October 2005

Median aggregate working

Well, I feel like I cheated, but I do have a working user-defined aggregate function that calculates the median.

I wrote earlier about it not really being possible. Well, I managed to implement one that works, even if it's very nastily done, really slow, with other issues too.

I persist the data in a file, and then in the Terminate() function, I read it back into an ArrayList, sort it, and grab the middle record. It's not very elegant, but it works.

The issues are:

1/ I had to mark it as unsafe because it accesses the file system. So then I had to make the database trustworthy and use an sa account to import the assembly.

2/ If the query is interrupted, the file isn't deleted properly. I can't implement IDispose, because the CLR object is disposed after every record, so that idea doesn't work at all. So instead, I would use a separate process to look for old files and remove them.

3/ It's really slow. On AdventureWorks on my laptop, it took less than a second to work through the 290 records in Employee, but 13 seconds to get through SalesOrderHeader. But it does give the correct records. I figure it's no good for a website, but it could be okay for a scheduled report, and to be honest... if it's something that a SQL developer is putting together, then they can use row_number() to get the median out. This is more useful as an available function that could be used in a report built by a business user in Report Manager.

I guess 'really slow' is subjective. I hope so anyway. :)

I won't post code here... I'm sure you all know how to write data to a file and then read it back again. You can always post a comment if you really want to see the source code.

21 October 2005

Unlocked PCs

Darren wrote about leaving his machine unlocked when he went away to lunch.

Here's a way to really annoy someone... saw it done once.

You take a screenshot, using the PrintScreen button. Save it to an image, and set it to the background. Then you lock the machine, and move the login box to the very side, where it's hardly visible.

Much better than being malicious of course, and they tend to get the point...

Ready Tour 05

Haha... why do I keep typing Toure instead of Tour?

Today at ADNUG there was another plug for ReadyTour05. In Adelaide, we're going to be limited to about 100 people, so I'm really hoping that the SQL Group (you remember, the one I run now) are going to be able to register really quickly and get in before the spots all disappear.

ADNUG and cross-browser compatibility

ADNUG had a lunchtime meeting today - Dave Glover spoke, on some of the new stuff that got mentioned at PDC. Nothing really new for quite a few people, but I was surprised to hear people suggesting that many of the new things would cause us all to be dependent on Internet Explorer.

I use Firefox generally these days. I tend to use IE for reading Hotmail, because that's what MSN Msgr launches when I click on the button that says how many unread emails I have. But generally, I like Firefox. I like the plugins, stuff like that. And I like the fact that Microsoft is being browser-aware like never before. There are very few things that don't work just as well in Firefox than in IE, and we're all being assured that ATLAS will work cross-browser. I like this about Microsoft, and I think they're probably not advertising this as much as they should be.

18 October 2005

I missed out!

It seems I missed out on getting the acting role I was after. It went to Daniel Craig instead. Mind you, he's 37, I'm only 30 - so perhaps I'll get it next. I'd need to get my original accent back though. And get into acting. I think I have the 'rugged good looks' department covered. Eh? Oh.

He seems an odd choice, and I'm not sure he'll last. Of the other Bond replacements, Roger Moore and Pierce Brosnan were the most successful because they'd already done similar roles on the small screen, proving themselves nicely. Brosnan was Remington Steele, and Moore was The Saint. I've always thought that the guy who plays Bond shouldn't be a 'bad guy', particularly not a guy who seemed good but then turned out bad. This was something I didn't like about Timothy Dalton - he always had that look about him that he wasn't entirely trustworthy, probably something he picked up in Flash Gordon - and I think it's a reason why some people will never be able to play Bond.

I think Clive Owen would do okay. He showed the ruthlessness in The Bourne Identity, and it means that when he's on the screen, people will be comfortable with that aspect to him straight away.

But ideally, I'll be enough of a megastar in 8 years' time, so that when they look for a replacement for Mr Craig, they'll consider me. ;)

13 October 2005

Median aggregate

Surely there must be a way of making a median aggregate in SQL CLR. Dan Sullivan doesn't think there is. It's easy to write something that will do it in T-SQL, but this isn't a proper aggregate function, like ones you can make with SQL CLR.

So where are the issues?

Well, the MaxByteSize limit of 8k is a pain, because without it, you'd be able to store your whole list of values, and then sort them and find the middle in the Terminate function.

If CLR aggregates could access the database, then the list of values could be stored in a working table. But you can't do that either (plus it would be really inefficient).

I'm still not convinced it's impossible. One day I'll work it out.

Will you be in Adelaide on Nov 21/22?

November 21 is the one that really matters. This is when Microsoft are putting on the VS2005/SQL2005/BTS2006 launch event for the user groups. The following day is the invite-only event which is going to be aimed at educating industry.

I don't have a bunch of official links yet... I'll try to post something when I get some.

England beats Poland

Good news: England beat Poland overnight. We had already qualified for the World Cup Finals, but potentially this could make us one of the top seeds, and mean that we don't have to face Brazil or Argentina in the group phase. Could it be our year, 40 years on?

And Australia will meet Uruguay for their chance, after Uruguay managed to beat Argentina 1-0. Either Argentina weren't really trying, or Australia is en route to disappointment again.

Personally, I think Australia shouldn't be part of the Asian Confed. The Oceanic Confed should be part of Asia. If Oceania exists, then Australia should be in it - but all the Oceanic teams would get better by playing against the Asian teams. Australia doesn't get enough competitive matches. Friendlies just aren't the same.

Pocket Blogger

I'm writing this on my PocketPC using PocketBlogger. It's an app that I would've written myself if I couldn't find a decent alternative ... and I think I still might. I want more functionality. Time is the killer of course.

The other one that I wouldn't mind writing is an SSH client, and SFTP too. I'll see how time goes.

Big market for mini phone-apps

Small apps written for Smartphones and PocketPCs seem to be really popular - particularly if they're freeware.

Dave Glover's ConvertIT has got so popular he's had to globalise it! I guess when I get around to finding something to write as my way of learning the .Net Compact Framework, I'll have to make sure I do a good job, in case I get lots of people downloading it.

Egress upgrade

This week, Egress got an upgrade, to version 2.4. It's an app for PocketPC, which Dave mentioned recently. It's a nice little app... but I wouldn't mind if you could auto-sync to external OPMLs. That would help Dave in his quest too.

My favourite features of the new version are:

1/ An exit button - this is really handy on a PocketPC. Previously you could quit with Ctrl-Q, but it's hard to do that using Transcriber.
2/ A 'mark all as read in this channel' button - which is just a shortcut to a sub-menu item. If you click something 10 times each time you use the app, then it should be on a shortcut.

Great to have Karl paying attention to it.

08 October 2005

New shirt!

My wife is fantastic. :)

Today we were walking through West Lakes mall, just passing the time while we waited for Wallace and Gromit to start. On a side-note, it's really good. We've seen a lot of kids' movies recently, Charlie (who thinks that the TV kid looks like the Logan twins from Big Brother? And look at the favicon for that Charlie site - haven't seen that Netscape icon for a while) and Sky High, and Shark Boy is on the list to see too. That's one I can happily miss. But there seems to be a lot of good films coming up in the summer too. Narnia (hope my 5yo isn't terrified by it), Chicken Little, Ice Age 2, Valiant, plus others I will have forgotten. And the standard seems to be improving too! I have to admit enjoying the three I've seen these holidays, and the previews for the other ones all look pretty good too.

So, we were walking past a sports shop, and I put my head in to see if they had Arsenal tops. I could see they had tops for other teams, like ManUtd and AdelaideUtd, and I was curious... Turns out they did, and they had a special on. So I have an early birthday present. :)


I needed to get a map for part of Melbourne. In London I got spoilt by (just throw a postcode into the querystring and there you are) and (love those overlaid photos!). Here in Adelaide, I tend to use, which isn't great, but at least I can provide URLs for the maps. So I wanted to find a map for part of Melbourne, and I honestly turned to I know! I didn't expect that I'd find it particularly useful, but it actually wasn't bad at all. I've heard Andrew Coates rave about it, but I was pleased to actually find it useful. Shame you can't just pump in querystring values, but such is life.

Of course, I still miss streetmap and multimap. But then again, I still miss having postcodes that actually describe where the building is.

07 October 2005

A couple of days with Victor

It's the school holidays here in South Australia. So I took a couple of days off this week and we went to Victor Harbor (What's missing? 'u' - seriously there's no 'u' in it).

First day, the weather wasn't great, but it was good for walking around Granite Island, letting the boys play, and stop thinking about work.

Next day, we went to Greenhills Adventure Park. That's a whole lot of fun if you have kids. There's a bunch of stuff to do, and if you go mid-week, slightly off-season (ie, not in January), then it's empty enough to be able to do lots of stuff. Joel got slightly freaked out by the water slides (but loved them and went over and over), Samuel got frustrated that his quad-bike wasn't fast enough, and Roslyn picked up some lovely bruises. As for my highlight, well, I didn't go on slides or bouncey castles, etc and my back is still sorer today than I'd like (especially around my neck where I got sunburnt), but I did try doing some archery - for one of the first times since I helped run the archery club at high-school. I did badly most of the time, but on the 2nd set of 4, I got my height about right, and on the fourth set of 4, I managed to get two shots pretty close to the centre of the target. I was pretty pleased with that! They were even touching each other!

The annoying thing about taking days off is that the amount of work doesn't seem to decrease. I feel really busy today. But I guess it's just the way it goes. One day I'll get around to taking a proper holiday. :) But it was heaps of fun to get away from normality.

New role at AdSSUG

A couple of months ago, Jeremy Huppatz asked for volunteers to become part of a committee to help run the Adelaide SQL Server User Group. I think it's a worthwhile group, so I put my hand up. Now he's stepping right out of it, so now I'm the group president.

I feel like this has been a bad month to take over. I was asked a few weeks ago, but I didn't want to overstep my bounds until it had been cleared with the rest of the committee. So now it's official, and I'm now trying to make sure that the first meeting is arranged properly - it's on Monday! It's been pencilled in (and almost completely arranged) for a few weeks, but today it still needed to be advertised!

Anyway - if you're reading this and you want to come along on Monday night, then please do. The next meeting will be organised in better time, I promise.

Launch dates not official yet

Dropped Chuck Sterling a line today, about his blog entry on the VS/SQL 2005 launch tour dates. He dropped a line to Finula Crowe (apparently I'm not allowed to mention her MediaCast), and she wrote back that the dates and locations are NOT confirmed yet.

But hopefully something will appear on Monday. I want to know what's happening in Adelaide!!!

03 October 2005

Should Functionality via Web Services Mean Low-Spec hardware?

A few years ago (2002) I was at a Microsoft conference in London. It was a pretty big deal - the speakers included Don Box, Bill Gates, and even Dave Glover!

At the end of Bill Gates' session, there was a question and answer time. And a prize for best question (an MSDN Universal Subscription). I don't remember what the best question was, but I do remember the question I was going to ask, except that they ran out of time and I missed out.

The conference was all about web services, and how this was introducing a new level of distributed computing. I remembered from my "History Of Computing" class at uni that the advent of home computing was largely brought about by the "IBM-compatible" concept allowed because of MS-DOS. Now it seemed like the very person who decided that computing should happen in the home was saying that it should now happen at the other end of a SOAP call.

So I was going to ask if future versions of Windows would be designed for low-spec hardware with high-spec networks. Whether future versions of Word would make calls to web services to repaginate or add bullets.

I wish I had been able to ask my question. I wish that a version of Windows was coming out that could run on all those old machines that schools are forever needing to upgrade. Instead I find myself looking at the features of Windows Vista, wondering how long it will be until schools are using it, or even when government departments will be using it. My kids already whinge that their computers aren't good enough to run Windows XP, that they're stuck on 98 and 2000. I'd like to get them networked, and install Windows-via-WebServices, which could run on a 500MHz machine.

But it's late and I should sleep.