WTF: BBC have a “no news day”

You have probably heard of “slow news days” (generally marked by the news channels on the TV having to show happy stories), but the BBC website today was havign a case of a “no news day”:

BBC home page with blank news
BBC home page with blank news

Look closely at the News section on the left, it looks like this:

Where's the news gone?
Where's the news gone?

A case of cost cutting in the present gloomy economic climate perhaps? 😉

Running Windows 7 beta on Sun xVM VirtualBox

Windows 7I have recently installed the Windows 7 beta on a VM on my Vista box using Sun’s xVM VirtualBox. I had just two issues: no network driver and the Guest Additions reported they weren’t compatible with Windows 7. The solution to both was:

  1. Mount the Guest Additions CD
  2. Choose the “Open folder to view files” option when it auto-starts
  3. Right click on VBoxWindowsAdditions and VBoxWindowsAdditions-x86. Select properties and enable XP SP2 compatibility (Vista compatibility might work, I just didn’t test it).
  4. Run VBoxWindowsAdditions.
  5. Now right click on Computer in the start menu and select properties, then device manager.
  6. Select the Ethernet controller under Other Devices, right click and select Update Driver Software.
  7. Choose the Browse my Computer option and search in D:\. Install the driver.

After restarting Windows 7, automatic mouse capture and release worked correctly and the network sprang into life.

Why “clever” code is often really quite stupid

To my mind, clever developers write clever code and that clever code is always:

  1. Easy to understand
  2. Effective
  3. Efficient

in that order. If you write code that isn’t easy to understand, then you aren’t being clever and nor is your code. I suggested this idea on StackOverflow in response to the “What is the most clever code you’ve ever seen?” question. It generated a lot of negative feedback from some folk, though the positive score (at the time of writing at least 😉 ) suggests more folk agree with me than disagree.

The fact that “clever” code often is anything but was highlighted by a recent article on The Daily WTF. It gives an example of a classic piece of “clever” code that not only resulted in an incomprehensible mess, but also ran far slower than could be achieved with a simple, easy to understand solution. In this case, the developer used the obscure C feature of long jumps, rather than a simple for or while loop.

So next time you are tempted to write a “clever” programming solution to some problem, ask yourself whether you are really being clever, or whether you are being a Homer Simpson.

How to block the automatic installation of IE8

no-to-ieMicrosoft have announced that IE8 will be released as a priority update via the Windows update service, which means that – unless you only do manual updates – you’ll get it when Microsoft want, rather than when you want. Fear not though, for in these weird times we live in, Microsoft have gone and done something sensible for once: they’ve offered a simple, official, mechanism for preventing it being automatically installed. For the average – non technical – user, the process will be automatic. This is a good thing. For technically savvy users, the avoidance route is simple, and the option remains to manually upgrade when ready. This too is a good thing.

If you want to take control of the update of IE on your machine:

  1. Download the installer exe.
  2. Run the installer and extract the command to a suitable folder.
  3. Start a cmd window, cd to your chosen folder and type:

If you later change your mind, either find it is the optional updates via Windows Update, or start a cmd window once more, cd to your chosen folder and type:

See the download page and FAQ for all the gory details of the affected register key etc if you want to know more.

Gumbo, Thermo, Cosmo, FXG, Flash Catalyst and Degrafa

Back in the summer of 2008, I wrote an article on two forthcoming Adobe products: Gumbo and Thermo. Whilst it mentioned a number of forthcoming technologies, its focus was not in explaining what they all were. Recently I was reading more about technologies related to these when it struck me that there are a lot of code names around products resulting from Flash 10 and that I tend to get confused over them at times. I’m writing this post pretty much for my own use as a handy aide-mémoire. Hopefully others might find it useful too.

Gumbo is the code name for the forthcoming Flex 4. It is due for release in the second half of this year (2009), though two beta releases are planned for the next six months. Gumbo offers a huge range of new – and useful – features, such as ASDoc support within MXML files, simple two-way data binding and support for Pixel Bender (see below). The two key features though are:

  1. Components become easily skinnable. The whole way that components are created has been recoded, and there is now a clear divide between a component’s functionality and appearance. These new skinnable components have been given the nickname “gumbonents”.
  2. The MXML 2009 specification has been expanded to include FXG (see below). This means that you can add simple shapes (or complex shapes built up from simple primitives) to your MXML, data bind them and easily skin them using the “gumbonent” skinning method.

You can read lots more about Gumbo on the Adobe Labs Gumbo site.

In Adobe’s own words:

“[FXG is ] an XML-based graphics interchange format for the Flash Platform. FXG contains high-level graphical and text primitives that can be used to create, group, transform and visually modify basic vector and bitmap shapes.”

Flex 4 sees the old MXML 2006 specification replaced with a shiny new MXML 2009 specification, which includes support for vector shapes and bitmap graphics, and also allows for things such as data binding to bitmap shapes and the like. FXG is a cut down version of this extension, allowing graphics to be described in an MXML-like form, with all the code-related stuff stripped out. What makes FXG exciting is that the users of CS4 products such as Photoshop can save their graphical creations as FXG files, allowing for the easy use of designs created with professional design tools within Flex.

See the FXG specification for more details.

This was the code name for a forthcoming product now called “Flash Catalyst” (see below).

Flash CatalystFlash Catalyst
This is a not-yet-released designer and developer tool for taking designs created in Photoshop etc and turning them into MXML code. It allows elements of the design to be identified as Flex components. The tool then generates the skin MXML required to allow the Flex application to behave as the designer wants. This tool fills the obvious gaping void that currently exists between design and implementation that currently exists within the Flex world.

See the Flash Catalyst section of Adobe labs for more details.

This was the code name for Adobe AIR 1.5, which was released last November. It added support for the new Flash 10 features, such as enhanced sound, 3D support, decent (finally!) text support etc, along with support for encrypted – rather than plain-text – data stores. It is fully compatible with Flex 3. FlexBuilder 3.02 provides support for it.

Pixel Bender
Pixel Bender is a new technology being built into multiple Adobe products, rather than being a product in its own right. At the time of writing, Flash 10 supports it natively and there is a Photoshop plugin available for applying Pixel Bender filters to Photoshop images. Flex 4 will also support it. It provides a hardware and platform-independent language for describing filters that can be applied to a set of data. Whilst the primary purpose is for manipulating graphical data (or images if you prefer) via filters, it is also likely to have uses in manipulating sound data for example. It is designed around very fast manipulation of “pixels” in isolation, or near-isolation (eg, taking into account its near neighbours). As such it will not be of use in generating histograms of an image, in generating hashes etc.

See the Adobe labs page on Pixel Bender for more details.

Whilst this isn’t an Adobe product, it relates closely to the new FXG features of Flex 4. It is a 3rd party extension to Flex 2 & 3 that provides support for low-level graphics primitives just as FXG/ MXML 2009 does. Whilst Adobe are making noises over working with the Degrafa team to ensure there is good interoperability between FXG and Degrafa, it is difficult to see a future for this product. The developers remain upbeat that Degrafa offers more and will have a future. Just as PaperVision didn’t die when Flash 10 (with built-in 3D support) was released, so Degrafa may not be killed off by FXG and may build on it instead.

If you are looking for FXG-like features from Flex 2 or 3 and cannot wait six months (or do not wish to upgrade to Flex 4), then Defraga has something to offer. Otherwise it’s probably best to wait for Flex 4.