Milestones

Business, OS X, Personal, Travel 7 Comments

I’m the kind of person who likes to keep busy; not in a ‘mad about DIY / the garden’ kind of way that tends to be the most socially acceptable form of being a ‘project oriented person’, but I always have a bunch of things on the go and never seem to have enough time to do them all. I’m always ‘working’ evenings & weekends, but a lot of the time I really don’t think of it as work, because a large portion of the time I’m doing exactly what I want to do.

If you’re anything like me you’ve had difficulty explaining to your wife / significant other that in our kind of world, there’s really no discrete black-and-white transition between ‘work’ and ‘not work’ that starts at 9am and ends at 5pm every day like clockwork. In fact there are a multitude of subtle levels ranging from ‘definitely work’ (e.g. something I don’t particularly want to do but someone has paid me to do it), to ‘not really work at all’ (e.g. having fun with technology that as a spin-off might help make a living now or later). Unfortunately these subtle graduations are invisible to the casual observer, often leading to discussions which begin with ‘You’re working again!’, ‘Not really…’, and from then on get complicated.

In the end, it’s probably not a solvable problem, but one thing that does help is taking the odd break, where you at least pretend not to think about what others would deem ‘work’ for a while. Holidays are obvious candidates, but also a good trigger for maybe taking a weekend off or something is recognising a milestone, or a cluster of milestones.

OgreSpeedTree and OgreSpeedGrass emerged from beta this morning, with official 1.0 versions being released. I’m pretty damn pleased with the result, and that’s a fairly unusual situation; I normally have a list of things as long as my arm that I consider ‘unfinished’, but in this case I’m very content with stamping a 1.0 badge on them. My attention can now switch to finalising Ogre 1.6, which is currently at the Release Candidate stage.

It’s also 2 years since I made the decision to give up having a regular day job and try my luck as a free agent / start-up. My initial measure of success was not to go broke (either personally or bankrupting the company) in the first 2 years, and I’m pleased to say that hasn’t happened. It’s certainly had ups and downs, and probably given my prior senior tech position I’ve undoubtedly earned less personally as a result, but the company has still grown, I’m still paying myself a wage that isn’t too insulting, and the benefits have easily compensated for that. Besides the flexibility and the satisfaction of knowing I’ve found and earned every penny I’ve made (which somehow makes the money feel more valuable than a guaranteed monthly paycheck), it’s been good for my personal development to mix it up a bit. And most importantly, I’m not bored :)

It’s also almost 8 years ago that I wrote this fateful message in my (very old, very manual) blog:

18th October 2000: Exam done! Work on OGRE will restart soon. First, web site revamp to be done.”

Inauspicious, but that was the seed - the time when OGRE as we know it swung into full development and started this whole crazy sequence of events off; if I’d known the significance of it at the time, I wonder whether it would have affected how I did things?

Laozi was right when he said “A journey of a thousand miles begins with a single step.”. Those words motivate me to this day - that no matter how big or challenging something looks, the most important thing is to start. My experience certainly tells me that genius and raw talent / ability is often not the most important factor when it comes to achieving things, it’s usually more about taking that first step, and having the tenacity or pure bloody-mindedness to keep going for as long as it takes. That’s particularly good for me since even if I might not be as smart as some, I’m probably more stubborn. :) And that in turn feeds back into what I was talking about at the start of this post.

But, stopping occasionally to admire the view is good too :) Maybe I’ll do that this weekend.

Parallel-split Shadow Maps are cool

Development, OGRE, OS X, Uncategorized 2 Comments

OgreSpeedTree with PSSMWe’re on the final home straight for Ogre 1.6 (aka Shoggoth), which should hit RC1 next week. One of the final features I wanted to squeeze in was support for Parallel-split Shadow Maps (PSSM), which uses multiple shadow maps per light in a hierarchical fashion to improve the quality while keeping the size down, particularly in outdoor scenes using global directional light. If you’ve played Assassin’s Creed, you will have seen this technique in action already.

For example, the screenshot on the right there is using 3 shadow maps for the single directional light, the closest one being 1024×1024, and the other two being 512×512 - together they are 38% of the size of a single 2048×2048 shadow map and yet provide greater detail. The 3 shadow textures are displayed for debug purposes on the right - notice that all 3 are using LiSPSM projection to bias the texture precision toward the camera which also helps. If you look really closely on the full resolution shot, you can see the transition from the highest resolution shadow map to the second shadow map about halfway up the screen, it changes near the top of the closest tree shadow. It’s quite hard to see though, which is kinda the point :)

One of the challenges with supporting PSSM is that Ogre had previously assumed that there is a 1:1 mapping between lights and shadow maps, which clearly had to be overcome - this limitation also prevented easy use of dual parabaloid and full cubic shadow maps for point lights of course. It was one of those things that had been languishing on my TODO for a while, begging me to find some time for it, and that’s where it still was until Pang Lih-Hern (aka lf3thn4d) from Malaysia came along and did it for me :) What a star! His initial patch allowed multiple shadow textures per light in a very sensible way, and he then implemented a PSSM facility on top of that, via our pluggable ShadowCameraSetup system (which he also extended in the patch to be aware of shadow map iteration). I adapted the PSSM code from his demo to be a little more flexible (it now handles any number of splits, and a more flexible split configuration) , so that setting it up goes something like this (simple projected shadows here, depth shadowmaps are also possible of course but let’s not overcomplicate it):


float shadowFarDistance = 3000;
mSceneMgr->setShadowTechnique(SHADOWTYPE_TEXTURE_ADDITIVE_INTEGRATED);
mSceneMgr->setShadowTextureCountPerLightType(Light::LT_DIRECTIONAL, 3);
mSceneMgr->setShadowTextureCount(3);
mSceneMgr->setShadowTextureConfig(0, 1024, 1024, PF_X8R8G8B8);
mSceneMgr->setShadowTextureConfig(1, 512, 512, PF_X8R8G8B8);
mSceneMgr->setShadowTextureConfig(2, 512, 512, PF_X8R8G8B8);
PSSMShadowCameraSetup* pssm = new PSSMShadowCameraSetup();
pssm->calculateSplitPoints(3, mCamera->getNearClipDistance(), shadowFarDistance);
pssm->setSplitPadding(mCamera->getNearClipDistance());
pssm->setOptimalAdjustFactor(0, 2);
pssm->setOptimalAdjustFactor(1, 1);
pssm->setOptimalAdjustFactor(2, 0.5);
mSceneMgr->setShadowCameraSetup(ShadowCameraSetupPtr(pssm));
mSceneMgr->setShadowFarDistance(shadowFarDistance);

Notice that I used Integrated Shadows, this is a requirement of PSSM since only shaders with integrated shadow support can decide on the fly which shadowmap to sample from.

My sincere thanks to lf3thn4d for helping us get this feature in to Ogre 1.6 (and to all those who send us patches in fact). If you want to see it and OgreSpeedTree in motion, there is a video available; that’s the low-quality streamed version but you can also download the higher resolution version if you want.

Leaping Lately to Leopard

OS X, Tech 14 Comments

For a geek, I can exhibit luddite tendencies sometimes. I don’t run Vista yet on anything other than secondary test machines, because I really don’t like it very much  - I feel it’s burning additional machine resources in a way that adds little or no value to my productivity or user experience compared to XP, and I’ve had several usability / stability hassles with the test machines I’ve had. I also remain very skeptical about the relative importance of Dx10 given that the vast majority of users either don’t have Vista, or don’t have a card worthy of being called Dx10 compliant, even in gamer circles. In short, I love reading about and playing with new tech, but when it comes to spending my money and resources (particularly time), practicality and not hype tends to rule my mind.

Another example is that I only just upgraded my MacBook Pro to OS X Leopard, even though it’s been out for 9 months already. When it first came out I was reticent to upgade immediately, wary of early problems and also that I was only just getting used to OS X anyway. Since then, I’ve always seemed to have an excuse not to do it - some impending trip / presentation / deadline which meant it wasn’t convenient, and really just lack of time.

Nevertheless, I finally made some time to do it last night, mostly because a couple of people in my family are getting or likely to be getting Macs soon, and of course those will come with Leopard, so I’d like to be in sync. Also Snow Leopard isn’t going to be out for another year by the sounds of it, so it’s still worth me upgrading and not waiting for the next one.

My early impressions have been good - it’s very much an evolution rather than revolution, but then if it ain’t broke, don’t fix it. I like how once again the things that are good for flashy demos are actually very useful in practical terms too, in particular ‘Quick Look‘ is really very handy. Basically you can just press the Spacebar whenever you’re selecting an item in Finder or whatever, and it pops up a window allowing you to browse the content of the file, whether it’s a PDF, Powerpoint presentation, document, image, archive, whatever - and it does this without starting any applications, so it’s super-duper-fast. Incredibly handy for skimming through a bunch of documents when you’re not sure exactly which one you want just from the filename, without the overhead of firing up apps and loading everything fully.

Other things are handy too, Spaces are handy but nothing new if you’ve used multiple desktops on other systems before, and the fold-out stacks make shortcuts to common folders more convenient than before. I doubt I’ll use many of the other features - all my important stuff is backed up on a server so I don’t need Time Machine (although I will definitely be recommending that one to my parents), and I’m too attached to Firefox and Thunderbird to get excited about the Safari and Mail enhancements. Oh, I could see myself using the presentation features of iChat though, that’s something I normally have to use GoToMeeting or similar for.

As an upgrade I think Leopard is a bit expensive at £70 for what it is (another reason I put it off), but nevertheless it’s a nice increment to what has become my favourite desktop OS over the last 12 months. I really can’t see that changing in the near future either - with Snow Leopard, Apple seems to be taking the opposite approach of those in Redmond by concentrating on optimizing & further streamlining what they have rather than stuffing in more and more features, which sounds good to me. OS X already does everything I want, and is no slouch in the performance dept already, certainly compared to the hulking, sweating mass that is Vista, but if they can make it even faster, and smaller, then all the better.

Hmm, I’m definitely becoming an Apple cheerleader. A bit scary, but hey, they make stuff I really like to use. Sure you have to pay a little extra, but I’d rather choose to pay for something I can take pleasure in using, than be coerced into paying for something that at best leaves me apathetic, and at worst annoys the hell out of me.

Spreading the word

OS X, Personal, Tech 15 Comments

I feel like I’m becoming something of an advocate for Apple machines these days, which is not something I ever saw coming. I hadn’t even used one until almost 12 months ago, and like many long-time PC users am guilty of having poked fun at them in the past (hur hur, one mouse button, hur hur, poor game support) but now that I’ve had one for a while, I’ve changed my tune. I’m finding that I can heartily recommend them for quite a wide cross-section of users, particularly when it comes to a portable machine.

My parent’s XP-based Dell laptop keeled over and died recently and while they’ve managed without a PC for a little while (!), they’re missing it. They’re faced with being forced (in practice) to switch to Vista if they buy a new Windows laptop, and they’d heard bad things about it (and not just from me I might add, their friends bought a Vista machine recently and have complained to them a lot about it) so were wondering what to do. My parents aren’t particularly technical but know their way around a computer, so long as nothing goes wrong, and aren’t looking for a gaming or power machine, just something that does email & internet, office tasks etc. Someone else in the family ‘knows someone at Microsoft’ (join the club ;)) and suggested to them that if they were reticent about Vista, the sequel would be out next year so they could always look forward to that, but of course that got me chuckling. I explained that not only was Vista several years late, so predictions about the release of a sequel are somewhat premature, at this point we have no idea of what it will be like.

They even asked me what I thought about desktop Linux, since they’d seen it as an option in one or other shop they went into - something that surprised me actually. However with no on-site support from me (since they’re now 3+ hours flight & train time away) I considered that to be a recipe for disaster, given my experiences even with the latest Ubuntu. Great if you’ve got a tech you can call when things go wrong, not so good otherwise, so I ruled that out.

So, my advice? Although they’d probably be ok with Vista, particularly since SP1, given they would have to re-adjust to Vista’s changes anyway, and given the kinds of things they want to do with it, I really think a MacBook would be a better fit for them as very casual, relatively non-technical people. I didn’t recommend this lightly, because they’re not made of money (being retired) and they will have to save up a little more than they would have to buy a budget Vista laptop, but I honestly think it will be better in the long run for them. There are no drivers to worry about, OS X is definitely easier for regular people to use even counting the adjustment from Windows, and in general everything usually just works with considerably less faffing about. The software to do most of what they want is already there as standard, and works in a consistent fashion. I also think face-to-face support is more readily available if they can find a Premium Apple Reseller; they had been shocked at the outrageous prices they were quoted just to *look* at their slowly dying Dell to see if it was economically fixable. Small Apple specialists seem to be better at providing that kind of more personal service if our local premium reseller is anything to go by, certainly more so than unit-shovellers like PC World / Currys.

Simply put, I honestly think people like my parents will have a better experience with a Mac longer term. I’ve advised them to find a decent reseller first and play with one to make sure they’re happy with the idea of making the transition, and that they’ll have some local hardware support to make them feel comfortable given I can’t be there to organise it, but I think if they get over that bump it’ll be plainer sailing for them.

Hex Colour Picker for OS X

OS X No Comments

If, like me, you were wondering why the excellent Pixelmator got out of the door without an easy way to see the colours you’ve picked in HTML-friendly hexidecimal form, the way you can in Photoshop - well, it’s actually that OS X has an altogether more elegant way of handling this kind of thing.

I didn’t know this, but the colour picker widget shown in PixelMator is a standard OS X one, and you can plug in new widgets for it. One such plugin is the Hex Colour Picker. Once installed, PixelMator picks it up as a new toolbar button on the colour picker widget (as will every other app using this widget) and you can copy the HTML-friendly colour from there. Simple, but very effective.

By-value static member variables & XCode debug builds

C++, Development, OGRE, OS X 2 Comments

Well, this had me baffled for a while. I’ve been beavering away on allowing custom, user-supplied memory allocators in Ogre, hopefully for inclusion in the upcoming 1.6, and I came across a very weird problem in OS X. The wrapper for customising regular allocations (ie new/delete as opposed to STL allocations, those are in a different std::allocator compatible class), looks like this:

template <class Alloc>
class AllocatedObject
{
protected:
    static Alloc smAllocPolicy;

Pretty obvious stuff, we clearly redirect new/delete operators via that allocator policy. We then go on to define some default allocators (which can be replaced), something like this:

typedef AllocatedObject<StdAllocPolicy> DefaultAllocatedObject;
typedef DefaultAllocatedObject SomeObjectAlloc;

.. and then in our first-party class definition:

class SomeObject : public SomeObjectAlloc
{

All fairly straight forward - all that typedefing is just a compact way of allowing per-class user configurable allocators while still keeping the type duplication to a minimum. I can also place those typedefs in such a way that they can be easily replaced just by user headers or preprocessor blocks. Now, obviously I need to instantiate that smAllocPolicy member, otherwise I’m in trouble. So, here’s what I initially tried to do, in a cpp:

template <> DefaultAllocationPolicy DefaultAllocatedObject::smAllocPolicy;

Seems ok, right? Again I’ve used the typedefs here so that the instantiation will work even if I changed the basis for the types. This worked fine on Visual C++ 2005, Ubuntu 7.1 and in release mode on OS X. But, in debug mode on OS X, I got this:

ld: Undefined symbols:
__ZN4Ogre15AllocatedObjectINS_14StdAllocPolicyEE13smAllocPolicyE
/Users/steve/projects/Shoggoth/ogre/Mac/Ogre/../build/Ogre.build/Debug/Ogre.build/Objects-normal/ppc/OgreEntity.o reference to undefined __ZN4Ogre15AllocatedObjectINS_14StdAllocPolicyEE13smAllocPolicyE
/usr/bin/libtool: internal link edit command failed

WTF? I double-checked that the .cpp was included in the target, that the .LinkFileList file included the right object file, that ZeroLink was disabled (not that that would have any effect but to delay any link errors until runtime anyway). I tried getting rid of the typedefs and making it explicit, no dice. It had me scratching my head for some time, I was convinced I was instantiating this static and the object file was getting linked, so why the problem? In the end, the solution was to to change the instantiation to this:

template <> DefaultAllocationPolicy DefaultAllocatedObject::smAllocPolicy = DefaultAllocationPolicy();

I’m really not sure why in debug mode I was forced to include an explicit construction & assignment of this policy class rather than it being constructed by value in place, as seems to have happened with the other compilers and indeed in release mode under OS X. I usually don’t hold complex types statically by value, so usually I’d have an explicit initialisation in code like this to init pointers to 0 or numerics to something reasonable, so I wouldn’t have tried this particular thing on OS X before, but I did not expect to have to construct a complex type manually (and copy-construct effectively, although that’s likely to be optimised out). The fact that it worked in release mode and on other compilers makes me wonder how idiosyncratic that behaviour is. Maybe I’m just too tired and need to read Stroustrup again. If anyone has a rational explanation, I’d be glad to hear it.

Working around GLSL attribute aliasing problems on OS X

OGRE, OS X 3 Comments

As much as I love using OS X, one of the double-edged swords is that the graphics driver updates are controlled by Apple. On the one hand, that’s a bonus because you have a better idea of what you’re dealing with out in the wild, and people get prompted to update their drivers (as part of the regular OS X auto-update). On the other hand, it’s a pain in the ass because the drivers tend to lag behind those from the GPU manufacturers and therefore have bugs the mainstream ones don’t.

I just recently committed a patch from ‘hellcatv’, one of the more prolific Mac users in our community to deal with a few driver bugs in some of the older Powerbooks, and also some quirks of the recent Intel GMA-based iMacs - stuff like choking on glCompressedTexSubImage2DARB for no good reason (ie, forget uploading part of a DXT-compressed texture, it’s all or nothing). I’m indebted to him for testing on a huge range of Macs that I’d never have access to, without spending a load of cash and filling up my home office with yet more surplus hardware (my wife would not entirely approve of either methinks). One of the remaining problems we’ve had is that the OS X GLSL drivers on the recent NVIDIA-based MacBook Pros suffered from vertex attribute aliasing-associated performance problems that other platforms did not.

Now, NVIDIA has always had a fixed set of vertex attribute assignments for the built-ins - gl_Vertex is 0, gl_Normal is 2, etc. If you used gl_Normal in a shader, but also bound a custom attribute (say, skeletal blend weights) to index 2 too, you’d get a performance drop because of the aliasing. That’s fine - so instead, when we used custom attributes, we didn’t fix the indexes we used, we let the linker decide, taking into account what was actually used in the shader. We’d include the attributes in the shader, and then after glLinkProgramARB, we’d ask the program object what indexes it had chosen for the custom attributes, then wire them up that way. The well-behaved drivers (Windows, Linux) on NVIDIA would avoid clashing with any built-in attributes that had been referenced in the shader and we’d have a nice tight list of unique indexes, but on OS X, the driver would stupidly often assign custom attributes to built-in indexes that were in fact being used in the shader. Tsk, bad driver, no treats for you today.

It’s been reported to Apple as a bug, but so far, no dice on the fix front, so I decided it was time to try to work around it. The first thing I tried was simply telling the driver at the pre-link stage that I wanted any occurrences of the custom vertex attributes we supported to be placed out of the way of any possible built-ins that might be used. So for example, I did this:

glBindAttribLocationARB(mGLHandle, 6, "blendWeights");
glBindAttribLocationARB(mGLHandle, 7, "blendIndices");

That seemed to take effect, and calling glGetAttribLocationARB after the link reflected that I was indeed getting indexes 6/7 bound, rather than the 1/2 that the driver kept picking before (bad, because I used gl_Normal in this shader which is index 2). However, despite the indexes being out of the way of anything else, the shader still performed really poorly. I tried a few other indexes, like 14 and 15 which overlap with the top 2 UVs but which are rarely used (you can’t exceed 15, at least on NVIDIA), but the result was the same.

Cue head-scratching. There should be no aliasing problems anymore, yet still the shader performs like an asthmatic ant carrying some heavy shopping. So, the last thing I tried was going the whole hog, and implementing support for custom attribute replacements for all of the built-ins, all at known, fixed indexes matching currently known hardware defaults & limitations, ie:

Index Built-in Custom Name
0  gl_Vertex vertex
1 n/a blendWeights
2 gl_Normal normal
3 gl_Color colour
4 gl_SecondaryColor secondary_colour
5 gl_FogCoord n/a
7 n/a blendIndices
8 gl_MultiTexCoord0 uv0
9 gl_MultiTexCoord1 uv1
10 gl_MultiTexCoord2 uv2
11 gl_MultiTexCoord3 uv3
12 gl_MultiTexCoord4 uv4
13 gl_MultiTexCoord5 uv5
14 gl_MultiTexCoord6 uv6, tangent
15 gl_MultiTexCoord7 uv7, binormal

And what do you know, that works. The skinning shader runs considerably better like that - still not great, I think the Apple GLSL implementation is not that good, but at least 2-3 times faster than it did before. It kinda sucks to have had to do it that way, I really liked being able to leave it up to the driver to organise the attribute bindings and only using the ones I needed because that’s more in the spirit of the GLSL way, but clearly being more rigid is the more reliable way. I know that I could have packed the tangent in attribute 6 instead to save a UV entry, but the use of 6 seemed to have some performance issues still so I’ve gone with the fixed bindings I would have used with ARB programs. It’s incredibly rare to need more than 5 UVs going into a vertex program anyway in my experience.

So, the advice appears to be that if you need a custom binding in GLSL and you want it to run well on a Mac, using all custom attribute bindings in the vertex shader and fixing the indexes seems to be the way to go.

Nasty Surprises

OS X, Tech 10 Comments

I don’t have as much time with it as I’d like, but over the last six months or so I’ve grown to like OS X. It’s slick, easy to use and generally just gets out of my way, and I keep finding neat little tricks I don’t expect (like dragging the icon on the title bar of the current window to create a shortcut to the document you’re viewing - nice).

However, today something about it had me swearing like a trooper. I’m actually surprised I haven’t come across it before, but the crux of the matter was the behaviour of Finder when you copy a folder into a location which already contains a folder of the same name. In Windows  Explorer if you answer ‘Yes’ to the confirmation dialog the contents of the folder you’re copying will be merged into the destination, only overwriting files of the same name. Finder conversely will completely replace the copy of the folder that is currently there, deleting its previous contents and replacing them with only the contents of the source folder you’re copying. I managed to completely screw my Eclipse install this way (which I use for Java dev sometimes) by copying ‘features’ and ‘plugins’ folders from a plugin archive, which ended up excising every previous plugin and feature that was already in there, including the core. Gah.

In fairness, the prompt that comes up does ask you whether you want to replace the folder that’s there. However, having been conditioned on Windows, I interpreted that in the non-literal sense to mean ‘merge’ and answered in the affirmative, little knowing that it really did mean ‘replace’. Unfortunately the replaced content doesn’t end up in the Trash either, so I had to reconstruct my Eclipse install from scratch. Once again, gah. Luckily it didn’t take that long since it kept all my automatic remote plugin sources, it’s only manually installed plugins like this one that needed re-doing.

I guess it’s arguable that the reason for my confusion was that I’m just used to Explorer’s interpretation of ‘replace’ to mean ‘replace files in folders’ and not ‘replace entire folders’. I’m therefore not going to suggest that this paradigm is necessarily wrong and should be changed to match Windows - in fact I’ll acknowledge that semantically it’s an accurate description of the operation. However I do think that not providing a merge option is a serious oversight in Finder, since it’s very common to want to do this. Simply including a third option called ‘Merge’ in the confirmation dialog which currently just says ‘Replace’ or ‘Stop’, would serve a dual purpose - indicating to users familiar with other OS’s what the true meaning of ‘Replace’ is in this context, and also allowing you to perform an operation that is after all very useful. OS X prides itself on how obvious and direct most operations are and on the whole it succeeds, but in this case, the ease with which a simple misunderstanding can cause permanent data loss is unacceptable to me. Come on Apple, you can do better than that.

MacHeist 2008

OS X 1 Comment

Damien kindly sent me a link today to MacHeist, a site that sells bundles of Mac software for a limited time at rather extraordinary prices, while also donating 25% of the revenue to charity. I took a look, and on seeing the bundle that was there, immediately bought it. It’s $49 for 14 applications, and whilst inevitably there’s some dead wood in there and things I wouldn’t normally buy, the inclusion of PixelMator made it a no-brainer for me on its own - the entire bundle is $10 cheaper than buying PixelMator is usually anyway. Total bargain - I’d intended to buy PixelMator anyway but hadn’t gotten around to it yet, so now I get it cheaper and with a bunch of other stuff thrown in.

I can also see myself using SpeedDownload since I’m currently managing with the free version of iGetter (unfortunately there’s no direct equivalent of Free Download Manager on OS X). Some of the others look interesting too although I probably would never have bought them on their own.

So, a good deal, and the charity aspect is good too. If you want to take advantage of this offer you only have about a day and a half to do it. :)

What do you know, other OS’s have teething problems too

Linux, OS X, Tech, Windows 5 Comments

Those of you who read this blog regularly will know that I’m pretty unimpressed with Vista, whether it’s the ham-fisted UAC implementation, the ‘burn resources for zero practical benefit’ attitude of Aero and the generally derivative nature of most of its enhancements. As an OS it rates very much in the ‘could do better’ camp, and when measured against a 5-year development cycle it edges into ‘what the bloody hell have you all been doing?’ territory.

However in the interests of balance it’s worth pointing out that it’s not the only OS released recently to have some issues. OS X 10.5 aka ‘Leopard’ has just been released, to less than a rapturous welcome in some cases - it appears there’s much to like about it, but there’s also some counter points and even a fair amount of bitching going on about some of the design elements, and it appears that the upgrade can be far from smooth for users of some add-on software. The latter you could blame on said add-on software screwing with the kernel, but it appears to be fairly popular software so I’m surprised Apple didn’t incorporate that into their testing, given how big they are on usability. I never jump in on a first iteration of core software like this anyway, I don’t have the time for it, although my Mac is currently in for repairs in any case.

There was also the new release of Ubuntu, 7.10 aka Gutsy Gibbon, and that’s been fraught with some networking issues in particular - the kind of thing you would have thought should be pretty solid by now, and some people are also having some Xorg issues (something I’m not unused to!) with the new version.

Of course, no doubt all these things will be rectified via patches and the like, but it’s only fair to say that Microsoft aren’t the only ones to have rollout problems on a new OS. I have to say that my installation & setup experience with Vista was actually very good (especially since drivers had stabilised by the time I installed it), it’s the end result that I found rather underwhelming.

I do intend to install Leopard early next year, and the new Ubuntu may well get an outing on one of my new test boxes I plan to set up soon. In both cases I’ll let others take the initial hit though, early adoption is not something I particularly have time to waste on right now.