Software

Composite keys: friend or foe? ... or, why my iPod can't handle duplication

Playing with my iPod yesterday, I found a very irritating bug. I have two albums called "Still", one by Joy Division and one by Wolverine. When I select either one of them from the albums list on the iPod, I get both albums smushed together rather than just the one I selected. In fact, despite Cover Flow showing both albums, the albums list only shows one with all the tracks in it.

Fibo-what-i?

Just a minor puzzlement today. PC-BSD 7 has been released, and is apparently very good. I might even try it. What's perplexing me is that it's codenamed the "Fibonacci edition". 7 isn't even in the Fibonacci sequence ...

Poor old NeoOffice

Some while ago, I wrote about NeoOffice, an OpenOffice.org port for the Mac. It provided what OpenOffice.org could not - a native interface. OpenOffice.org 2.x still used the X11 interface so integration was clunky at best.

Unfortunately for NeoOffice, that's just about to change. I've been playing with a release candidate of OpenOffice.org 3.0 for the Mac, and it's great. Fully native interface, and everything seems to work. No niggly little keybinding bugs. No scrolling issues. No strangely drawn dialog boxes. It "Just Works".

I'm not really sure where that leaves NeoOffice now, though. While I've appreciated their work, I can't really see any reason to still use it now that the "real" OOo works natively. And seeing as porting OOo 2.x to a native Aqua interface was the prime motivation of NeoOffice, I can't really see what they can bring to the table.

At the moment, the NeoOffice site claims that presentations run faster than OOo 3.0. I'm sure there are other Mac integration efforts they can use to make sure they stay a little way ahead of the OpenOffice.org curve, but for the basic functionality they seem to have been left somewhat high and dry by this latest OOo release.

Time will tell. In the meantime, you have to donate cash to get access to NeoOffice 3, while you can get the OOo release candidate for free. They don't expect to have a free release 'til January 2009. I think I'll just stick with OOo. Sorry, NeoOffice guys.

Mozilla launches Failfox 3

Tuesday 17th June was supposed to be a big day in Firefox history. The long awaited version 3 of the popular browser was to be released to record breaking numbers of downloads. The world would be in awe of the majesty of ... wait, maybe that's going a bit far.

Anyway, Tuesday came and went, and I didn't download it. I tried, but I failed. There were two things that stopped me in the end. First, the stability of the servers. All the various domains returned 'Http/1.1 Service unavailable' errors in the evening when I actually tried to get it. That didn't help.

The main thing that stopped me, though, was that it was released at 10am on the 17th. 10am PDT that is. California time. Those of us with a vague grasp of world geography will know that California is on the trailing edge of the world timezones. Indeed, by the time 10am PDT rolled around, it was already Wednesday the 18th at the international date line. Being sat there looking at the Firefox 2 link on the 17th didn't do wonders for the world at large's perception of the Mozilla organisation's ability to, well, organise.

In my mind, there were two possible things they could have done to make it not suck like it did. Either release it at midnight GMT (or UTC as people now like to refer to it), making sure that the two extreme timezones have at least 12 hours on the 17th where it is available. This would satisfy the world record download attempt's rules of it only being one day. The other way would be to launch at midnight on the 16th on the international date line, meaning it would require 48 hours before the whole world had seen midnight on the 17th.

Either way, the Firefox site gave no indication of intentions, fell over repeatedly and generally left those further east of California wondering what the hell was going on. Remember, Silicon Valley people, that most of the world sees the dawn long before you do. Without giving us more information than "the 17th" we'll all just get bored and wander off to the pub. Which, in fact, I did.

TFS Made To Suck Less!

I suppose I should come clean about something. I recently installed the Team Foundation Server PowerTools and have been using them successfully for a while. They have one or two very handy features that make TFS suck less. Get them direct from the TFS PowerTools page at MSDN.

Online Mode

Using the tfpt.exe command line, the 'online' mode will search your repository for changed files, added files and removed files and check out, add or remove the files as necessary. It also has a simple preview mode. This means that, with only one extra step, you can fix all the missing icons or forgotten checkouts or whatever. It would be nice not to have to do this step at all, but at least it's not entirely manual now.

Annotation

The PowerTools add a new feature to the Source Control Explorer: Annotation! Now you can actually see, line by line, who changed what, why and when. Jolly good.

Recursive Diff

Probably the biggest, most important change is the ability to diff entire directory trees. This will show you a nice window with all the missing files, all the changes, all the things that have not been checked out but should have, and everything else all in one lovely window. This alone is worth installing the PowerTools for.

Unchanged File Undo

A problem that arises from the 'check out required' nature of TFS is that sometimes Visual Studio checks things out automatically that are then never edited. When you check in, the files haven't changed so are not included in the changeset. This means you have a bunch of unchanged files marked as checked out. Very annoying.

Enter the tfpt.exe command line tool, with its 'uu' command. I assume that 'uu' stands for 'undo unchanged' or something. It basically performs an 'undo' on any checked out files that haven't actually changed since being checked out.

News just in: Team Foundation Server sucks. More at 11.

One of the banes of my current working life is the heaping mound of crud known as Team Foundation Server. I know I've ranted about it before, and I'm sure I'll rant again. Such is the heinous evil that is TFS.

This time, I'm going to list 4 things that TFS does (or doesn't) that means it's completely unsuited to modern development practice. I'll be comparing the functionality with that of Subversion, currently a very popular open source VCS that I like a great deal.

So, on with the rant ...

Virgin Media: It's all gone horribly wrong

So I've been a Telewest/Blueyonder/Virgin Media customer for some years now. I've gone up the service chart from 56K modems to 10Mbps internet connections. I've been a customer through all the buy-outs and shenanigans. And only now am I pissed off. Why?

Apparently I'm getting a "free" upgrade to 10Mbps from 4Mbps by the end of this week. So is everybody else on 4Mbps. Whoop-de-doo, eh? Whoop-de-doo ....

... because as we all know, nothing is free. The price for this extra bandwidth? Traffic management.

Traffic management when done right can help a network cope with all sorts of stuff. However, in this instance, it's just a synonym for "punishment". I'm presently being "traffic managed" because I had the cheek, the shear audacity to download 800MB in a five hour period. Damn my eyes.

"But wait a minute," I hear you ask, "surely on a 4Mbps connection you could theoretically grab 9GB in a five hour period?" And you'd be absolutely right. In fact, 800MB in five hours is the equivalent of a 384Kbps connection. So much for 10Mb, eh?

And to add insult to injury, the free support line is gone. Now it's an 0906 number that costs 10p just to call it, and 25p a minute after that. And wouldn't you know it, you just can't hurry them up. I've never known support personnel speak so slowly. They must get extra commission for sounding like they wouldn't know a computer if I hit them in the face with one.

My only problem now is that they're still one of the best of a particularly bad bunch. I mourn the UK ISP industry, I really do.

MegaHAL/Irssi - All new version 2.0!

I've just finished rewriting my MegaHAL/Irssi script to be a lot cleaner and a lot easier to configure. You can get it from the MegaHAL/Irssi page.

New features include:

  • Configurable using standard Irssi /set commands instead of hacking the script
  • Supports changing nick without hacking the script
  • Generally requires less hacking of the script ...

So, erm, yes. Enjoy!

VBA Unicode done right, redux

Some time ago I wrote a short article on forcing VBA to use some form of unicode to allow simple insertion of non-latin1 text into VBA modules. It sort of worked, for the most part, kind of. Well, it didn't. The problem is down to the VBA editor being locked to the local encoding of the machine it is running on. You can only type characters from BIG5 in China, Shift-JIS in Japan, and so on. If you have a need to make a VBA module that uses strings suitable for all locales ... you're pretty much stuffed.

Except you're not. If you do it properly, you can have any unicode character displayed in any VBA locale. So how do you do it properly? Well, you're supposed to use ChrW$() to generate unicode characters individually. Yes. Really.

Stop Patching Like Monkeys

It seems that my previous rant on the evils of runtime modification of types is no longer alone in this big wide world of hacks and bodges. No indeed, it seems there is even a semi-official name for this practice; Monkey Patching. How very appropriate.

The basic problems being highlighted in this post basically reiterate what I already said before. Monkey patching means that bugs are hard to find because you simply don't know what code is running at any point in time.

Now, I make my opinion of the blind Ruby-loving, Rails-abusing trend followers no secret. I think they're bad coders, for a start. That's not to say they're stupid, or don't understand the technology. I'm just saying that they're throwing away good practice in favour of little more than a quick fix. They're not engineering, they're bodging. I also think they're guilty of herd mentality. They are undoing years of software engineering to be in with the "it" crowd, and monkey patching is just one example of how this manifests.

With monkey patching, you get code that you simply can not debug. The best you can hope for is that you get lucky and happen to spot that some completely unrelated module is actually changing code you rely on at runtime. Why do they do this? Because it's hip, it's cool, it's what the "new wave" of developers are doing. The new wave of developers are wrong. Arguing for monkey patching against software engineering has as much merit as arguing creationism against scientific method. It's not good enough to simply believe you'll be smart enough to debug it when everything falls apart.

Just ... stop it.

Syndicate content