This page is a collection of news feeds from friends of mine and myself. Its not, as the name might imply, a planet of Horms, or for the most part even stuff written by me. For that, please go here.

Nearby Planets: Planet SLUG, Planet Linux Australia, Planet FP-Syd
Subscriptions: Adrian Chadd Alan Robertson Alexander Reeder Amanda Reid Anand Kumria Andrew Cowie Andy Fitzsimon Benno Chizuko Horman Chris DiBona Chris Yeoh Craige McWhirter Dave Miller Dave Ruys David Luyer Erik de Castro Lopo Horms Hugh Blemmings James Morris Jan Schmidt Jaq Jeff Waugh Jeremy Kerr John Ferlito Joseph Arruda Kfish Mark Greenaway Martin Pool Mary Gardiner Matt Palmer Nick Jenkins Ozone Pete Ryland Peter Hardy Peter Nixon Pia Waugh Raster Raz Real World Haskell Robert Collins Roger Barnes Russell Coker Rusty Sam Johnston Silvia Pfeiffer Ted T'so Tom Davies Tong Master Tractorgen - Commits Tridge Wichert Akkerman fusion94 あや

-----

March 13, 2010

Erik de Castro Lopo

FP-Syd #22.

On Thursday February 25th we held the first meeting for 2010 of the Sydney Functional Programming group. The meeting was held at Google's Sydney offices and we had 17 people show up to hear our two presenters.

First up we had your correspondent (Erik de Castro Lopo), giving a presentation titled "Hacking DDC" on my bug fixing work on Ben Lippmeier's DDC compiler. I explained a little about what DDC and Disciple were; a Haskell like language with some interesting extensions to the type system. I then suggested that anyone curious as to why these extensions were interesting should read the first chapter of Ben's PhD thesis "Type Inference and Optimisation for an Impure World". I then went on how using Darcs for the revision control made it easy to use one branch per bug or feature I'm working on, specifically, it allowed me to work on one until I got stuck and then move on to another without the debugging of the first interfering with the second.

Our second presenter for the evening was Tim Docker who gave us an explanation of a Domain Specific Language (DSL) for handling dates in financial systems. Code written in his DSL looked a lot like Ocaml, but the implementation was in C++.

A big thanks to Tim for presenting and Google for providing the meeting venue and the snacks.


March 13, 2010 03:47 AM

-----

March 12, 2010

Russell Coker

CAL – Self-Serving and Useless

Brendan Scott linked to a couple of articles about CAL (the Copyright Agency Limited) [1]. I have previously written about CAL and the way that they charge organisations for the work of others without their consent [2]. My personal dispute with CAL is that they may be charging people to use my work, [...]


March 12, 2010 09:48 PM

Roger Barnes

Photo of the day - 13 Mar 2010 - On the Tiles

On the Tiles
On the Tiles


March 12, 2010 08:53 PM

-----

March 11, 2010

Mark Greenaway

This is just amazingly silly

Assemblyman seeking to ban all salt in restaurant cooking


March 11, 2010 11:55 PM

Roger Barnes

Photo of the day - 12 Mar 2010 - St Anne's Church, Ryde, NSW

St Anne's Church, Ryde, NSW
St Anne's Church, Ryde, NSW


March 11, 2010 09:02 PM

Erik de Castro Lopo

Intel Embedded Graphics Driver Fail.

In my day job I do Linux embedded work and as people in the embedded world know, Linux is a pretty commonly used embedded OS. Today I was evaluating a new board and found it had an Intel graphics chip that was not properly detected by Ubuntu 9.10. The ever trusty lspci said this:


  00:02.0 VGA compatible controller: Intel Corporation System Controller Hub
        	(SCH Poulsbo) Graphics Controller (rev 07)

We all know that Intel employs a bunch of well known Xorg developers, so this shouldn't be a problem, right?

Unfortunately, it is a problem. Intel's offering for this chipset is the Intel® Embedded Graphics Drivers web page where they offer a 124 megabyte download (registration required). After registration you get to choose which driver pack you want and which OS you are downloading it for. Ubuntu was not on the list and neither was Debian. I chose Fedora 10 (released in 2008) as that was the most recent one.

Now, you can image my surprise when the driver download for Fedora Linux contained just four files:


  Archive:  /tmp/IEGD_10_3_GOLD.zip
      testing: UsersGuide_10_3_1525.pdf   OK
      testing: IEGD_10_3_GOLD_1525.exe    OK
      testing: IEGD_SU_10_3_GOLD.pdf      OK
      testing: RELNOTES_10_3_1525.txt     OK
  No errors detected in compressed data of /tmp/IEGD_10_3_GOLD.zip.

Yep, thats right, the driver download for Fedora Linux contains two PDF files, a text file and an executable installer for Windows.

Being the curious (and paranoid) type I decided to explore this further, by running the installer under WINE in a chroot. After the installer you get left with several metric craploads of Java Jar files, and another windows executable iegd-ced.exe that supposedly configures this nightmare. I ran it (again, under WINE in a chroot) but it didn't seem to do anything sensible or worthwhile so I looked around amongst the other installed files and found IEGD_10_3_Linux.tgz.

Inside that tarball there are a bunch of Xorg library binaries (for several different versions of Xorg), a large chunk of source code that gets compiled into the Linux kernel and even better yet, a couple of Microsoft Visual Studio project files. WTF?

Unbe-fscking-lievable. Needless to say, I will avoid any hardware which uses this chipset and any other hardware that requires binary only kernel blobs packaged this badly. Doing so makes my life easier.

The people at Intel who thought this was a good idea must have their own personal mother-lode of stupid.


March 11, 2010 09:47 AM

Mark Greenaway

Time to learn Javascript properly.


March 11, 2010 05:48 AM

-----

March 10, 2010

Roger Barnes

Photo of the day - 11 Mar 2010 -



March 10, 2010 08:50 PM

-----

March 09, 2010

Roger Barnes

Photo of the day - 10 Mar 2010 - Gladesville Hospital

Gladesville Hospital
Gladesville Hospital


March 09, 2010 09:02 PM

-----

March 08, 2010

Roger Barnes

Photo of the day - 09 Mar 2010 - Gladesville Hospital

Gladesville Hospital
Gladesville Hospital


March 08, 2010 08:42 PM

Dave Miller

strlen(), oh strlen()...

I've been going through the glibc sparc optimized assembler routines to see if anything can be improved. And I took a stab at seeing if strlen() could be made faster. Find first zero byte in string, pretty simple right?

The first thing we have to discuss is the infamous trick coined by Alan Mycroft, way back in 1987. It allows to check for the presence of a zero byte in a word in 3 instructions. There are 2 magic constants:

#define MAGIC1		0x80808080
#define MAGIC2		0x01010101
If you're checking 64-bits at a time simply expand the above magic values to 64-bits on 64-bit systems.

Then, given a word the check becomes:

	if ((val - MAGIC2) & ~val & MAGIC1)
		goto found_zero_byte_in_word;
Essentially we're subtracting MAGIC2 to induce underflow in each byte that has the value zero in it. Such underflows cause bit 8 to get set in that byte. Then we want to see if bit 8 is set after subtraction in any byte where bit 8 wasn't set before the subtraction.

To get the most parallelization on multi-issue cpus, we want to compute this using something like:

	tmp1 = val - MAGIC2;
	tmp2 = ~val & MAGIC1;
	if (tmp1 & tmp2)
		goto found_zero_byte_in_word;
to reduce the number of dependencies such that the computation of tmp1 and tmp2 can occur in the same cpu cycle.

Then there is all the trouble of getting the source buffer aligned so we can do the fast loop comparing a word at a time. The most direct implement is to read a byte at a time, checking for zero, until the buffer address is properly aligned. This is also the slowest implementation.

The powerpc code in glibc has a better idea. If dereferencing a non-word-aligned byte at address 'x' is valid, so is reading the word at 'x & ~3' (or 'x & ~7' on 64-bit). This is because page protection occurs on page boundaries, and x and 'x & ~3' are on the same page.

The only thing left to attend to is to make sure we don't match the alignment pad bytes with zero. This is solved by computing a mask of 1's and writing those 1's into the word we read before we do the Mycroft computation above. In C it looks something like:

	orig_ptr = ptr;
	align = (unsigned long) ptr & 3;
	mask = -1 >> (align * 8);
	ptr = (void *) ((unsigned long) ptr & ~3UL);
	val = *ptr;
	val |= ~mask;
	if ((val - MAGIC2) & ~val & MAGIC1)
		goto found_zero_byte_in_word;
At which point we can fall into the main loop.

Once we find the word containing a zero byte, we have to iteratively look for where it is in order to compute the return value. How to schedule this is not trivial, and it's especially cumbersome on 64-bit (where we have to potentially check 8 bytes as opposed to 4).

Anyways, let's analyze the 64-bit Sparc implementation I'm hacking on at the moment. I'm targetting UltraSPARC-III and Niagara2 for performance analysis. Simply speaking UltraSPARC-III can dual-issue integer operations, and Niagara2 is single issue and predicts all branches not taken (basically this means: minimize use of branches).

davem_strlen:
	mov	%o0, %o1
	andn	%o0, 0x7, %o0

	ldx	[%o0], %o5
	and	%o1, 0x7, %g1
	mov	-1, %g5
Save away the original string pointer in %o1. At the end we'll compute the return value as "%o1 - %o0". Align the buffer pointer and load a word as quickly as possible. We load the first word early so that we can hide the memory latency into all of the constant and mask formation we need to do before we can make the Mycroft test.

%g5 holds the initial part of the mask computation (-1, which gets expanded fully to 64-bits by this move instruction) and %g1 will have the shift factor.

	sethi	%hi(0x01010101), %o2
	sll	%g1, 3, %g1

	or	%o2, %lo(0x01010101), %o2
	srlx	%g5, %g1, %o3

	sllx	%o2, 32, %g1
	sethi	%hi(0x00ff0000), %g5
%o2 is going to hold the "0x01" expanded to 64-bits subtraction magic value. %o3 wil first hold the initial word mask, and then it will holds the "0x80" magic constant. We can compute the two 64-bit magic constants into registers in 5 instructions.

Pick either of the two constants, we choose the "0x01" here because we'll need it first. This is loaded first using "sethi", "or". This gives us the lower 32-bits of the constant, then we shift up a copy by 32-bits, then or that into the lower 32-bit copy to compute the final value. "0x80" is "0x01" shifted left by 7 bits so a simple shift is all we need to load the other 64-bit constant.

The "0x00ff0000" constant will be used while searching for the zero byte in the final word.

Next, we mask the initial word and fall through into the main loop.

	orn	%o5, %o3, %o5
	or	%o2, %g1, %o2

	sllx	%o2, 7, %o3
Mask in the pad bits using mask compute in %o3. Finish computation of 64-bit MAGIC1 into %o2, and finally put MAGIC2 into %o3. We're ready for the main loop:
10:	add	%o0, 8, %o0

	andn	%o3, %o5, %g1
	sub	%o5, %o2, %g2

	andcc	%g1, %g2, %g0
	be,a,pt	%xcc, 10b
	 ldx	[%o0], %o5
This is a real pain to schedule because there are many dependencies. But the "andn", "sub", "andcc" sequence is the Mycroft test, and those first two instructions can execute in one clock cycle on UltraSPARC-III. The ",a" annul bit on the branch means that we only execute the load in the branch delay slot if the branch is taken.

Now we have the code that searches for where exactly the zero byte is in the final word.

	srlx	%o5, 32, %g1
	sub	%o0, 8, %o0
We over advanced the buffer pointer in the main loop, so correct that by subtracting 8. Prepare a copy of the upper 32-bits of the word into %g1.
	andn	%o3, %g1, %o4
	sub	%g1, %o2, %g2

	add	%o0, 4, %g3
	andcc	%o4, %g2, %g0

	movne	%icc, %g1, %o5
	move	%icc, %g3, %o0
This is divide and conquer. Instead of doing 8 byte compares, we first see if the upper 32-bits have the zero byte. We essentially redo the Mycroft test on the upper 32-bits of the word.

If the upper 32-bits have the zero byte, we use %g1 for the comparisons. Otherwise we retain %o5 for the subsequent comparisons and advance the buffer pointer by 4 bytes. This is what the final two conditional move instructions are doing. Note that these conditional moves use '%icc', the 32-bit condition codes.

The astute reader may wonder why we just can't use the upper 32-bits of the Mycroft computation we made in the main loop? This doesn't work because the underflows can carry and cause false positives in upper bytes of the word. For example, consider a value where bits 35 down to 24 have hex value "0x0100". The subtraction of MAGIC2 will result in "0x8080". The real zero byte is the lower one, not the upper one. So we can't merely use the upper 32-bits of the already computed 64-bit Mycroft mask, we have to recompute it over 32-bits by hand.

Now we're left with 32-bits to check for a zero byte, we make extensive use of conditional moves to avoid branches:

	mov	3, %g2
	srlx	%o5, 8, %g1

	andcc	%g1, 0xff, %g0
	move	%icc, 2, %g2

	andcc	%o5, %g5, %g0
	srlx	%o5, 24, %o5
	move	%icc, 1, %g2

	andcc	%o5, 0xff, %g0
	move	%icc, 0, %g2

	add	%o0, %g2, %o0
We check starting at the low byte up to the highest byte. Because the highest byte, if zero, takes priority. We add the offset of the zero byte to the buffer pointer.

Finally:

	retl
	 sub	%o0, %o1, %o0
We compute the length and return from the routine.

Many many moons ago, in 1998, Jakub Jelinek and his friend Jan Vondrak wrote the routines we use now on sparc. And frankly it's very hard to beat that code especially on multi-issue processors.

The powerpc trick to align the initial word helps us beat the existing code for all the unaligned cases. But for the aligned case the existing code holds a slight edge.

So now I've been trimming cycles as much as possible in the new code trying to reach the state where the aligned case executes at least as fast as the existing code. I'll check this work into glibc once I accomplish that.

The Mycroft trick extends to other libc string routines. For example for 'memchr' you replicate the search character into all bytes of a word, let's call it 'xor_mask' and in the inner loop you adjust each word by using:

	val ^= xor_mask;
Then use the Mycroft test as in strlen(). Another complication with memchr, however, is the need to check the given length bounds.

This can be done in one instruction by putting the far bounds into your base pointer register (called '%top_of_buffer' below), then using offsets starting at "0 - total_len" (referred to as '%negative_len' below).

Then your inner loop can do something like:

	ldx	[%top_of_buffer + %negative_len], %o5
	addcc	%negative_len, 8, %negative_len
	bcs	%xcc, len_exceeded
	 ...
We exit the loop when adding 8 bytes to the negative len causes an overflow.

If you're interested in this kind of topic, bit twiddling tricks and whatnot, you absolutely have to own a copy of "Hacker's Delight" by Henry S. Warren, Jr.


March 08, 2010 05:09 PM

Raster

Enlightenment Libraries on the N900

Well I would get to it sooner or later, so here's EFL (Evas, Elementary) on the N900, and yes - an OpenGL-ES2.0 rendering engine is used too for most of the videos. For comparison elementary also is shown with a software rendering engine. It all works. no worse than anything else I'd say and probably better in most ways considering how much is actually being done. Below they are for your enjoyment.


March 08, 2010 12:00 PM

Russell Coker

Designing a Secure Linux System

The Threat Bruce Schneier’s blog post about the Mariposa Botnet has an interesting discussion in the comments about how to make a secure system [1]. Note that the threat is considered to be remote attackers, that means viruses and trojan horses – which includes infected files run from USB devices (IE you aren’t safe just [...]


March 08, 2010 06:48 AM

Storage vs RAM Size

In a comment on my post Shared Objects and Big Applications about memlockd [1] mic said that they use memlockd to lock the entire root filesystem in RAM. Here is a table showing my history of desktop computers with the amounts of RAM, disk capacity, and CPU power available. All systems better than [...]


March 08, 2010 03:48 AM

-----

March 07, 2010

Roger Barnes

Photo of the day - 08 Mar 2010 - Knock First Please

Knock First Please
Knock First Please


March 07, 2010 08:50 PM

-----

March 06, 2010

Roger Barnes

Photo of the day - 07 Mar 2010 - Gladesville Hospital

Gladesville Hospital
Gladesville Hospital


March 06, 2010 08:59 PM

Adrian Chadd

University? Aiee!

My university load hasn't yet caught up with me (read: pressuring me to meet deadlines) so I'm setting myself the task of enforcing even more work than I feel I should do.

A better way of saying this is: I know I should be doing more, but I can't bring myself to just "study" without specific, stressful short term goals in mind. So I'm going to invent some reasons.

I'm especially interested in what the heck I'm going to do about English Creative Writing. Apparently I'm supposed to write, write, write. Question is - what the heck do I write about?


March 06, 2010 02:08 AM

-----

March 05, 2010

Roger Barnes

Photo of the day - 06 Mar 2010 - Pyrmont Panorama - Planet

Pyrmont Panorama - Planet
Pyrmont Panorama - Planet

A different perspective


March 05, 2010 09:04 PM

-----

March 04, 2010

Roger Barnes

Photo of the day - 05 Mar 2010 - Sydney Park - Tree

Sydney Park - Tree
Sydney Park - Tree

A bit of composited light painting


March 04, 2010 09:00 PM

Russell Coker

Opera and Trusting Applications vs Trusting Servers

The Opera-Mini Dispute I have just read an interesting article about the Opera browser [1]. The article is very critical of Opera-Mini on the iPhone for many reasons – most of which don’t interest me greatly. There are lots of technical trade-offs that you can make when designing an application for a constrained environment [...]


March 04, 2010 12:48 PM

-----

March 02, 2010

Roger Barnes

Photo of the day - 03 Mar 2010 - Battery Point, Hobart, Tasmania

Battery Point, Hobart, Tasmania
Battery Point, Hobart, Tasmania


March 02, 2010 08:55 PM

-----

March 01, 2010

Roger Barnes

Photo of the day - 02 Mar 2010 - Salamanca Markets, Hobart, Tasmania

Salamanca Markets, Hobart, Tasmania
Salamanca Markets, Hobart, Tasmania


March 01, 2010 08:40 PM

-----

February 28, 2010

Russell Coker

Carpal Tunnel Syndrome

Diagnosis A few weeks ago I was referred to a specialist for the treatment of Carpal Tunnel Syndrome. I first noticed the symptoms in early January, it started happening at night with a partial numbness in the fingers of my left hand. I didn’t think much of it at first as it’s the expected [...]


February 28, 2010 09:48 PM

Roger Barnes

Photo of the day - 01 Mar 2010 - Jellyfish, Constitution Dock, Hobart, Tasmania

Jellyfish, Constitution Dock, Hobart, Tasmania
Jellyfish, Constitution Dock, Hobart, Tasmania


February 28, 2010 08:51 PM

Mark Greenaway

Hard hack: Behringer HellBabe wah

A while ago I bought one of these. It has good build quality, and a good sound, but suffers from a fatal design flaw: the rocker pedal doesn't have enough travel in it. So it didn't get much use.

Enterprising people on the Internet weren't going to be deterred by something as trifling as this. If you don't mind voiding the warranty, you can follow these detailed instructions to fix the mechanical problem. I substituted a small paring knife for a scalpel, and dumb luck for precision, but everything worked perfectly and now I have a beautiful sounding wah pedal for much less than you'd pay for a brand name one.

A word of caution though, you may lose an afternoon playing with the result :)


February 28, 2010 06:50 AM

Russell Coker

I have a Chocolate Fridge

The German supermarket chain Aldi recently had a special deal of a “wine-fridge” for $99. A wine fridge really isn’t that specialised for wine, it is merely a fridge that has a heater and is designed for temperatures in the 11C to 18C range. An good wine fridge will have special wood (or [...]


February 28, 2010 03:48 AM

-----

February 27, 2010

Adrian Chadd

Help! (LGM - I'm looking at you!)

I'm looking for the power connector pinout for this Apple IIc which was rescued from UCC a while ago. The power adaptor may still be at UCC (7 or so pin DIN connector; 15VDC) but I don't hold out much hope.

A free beer goes to the first person who can help me track down the damned power connector pinout!


February 27, 2010 07:43 AM

Damned ISPs and cost minimisation

So my ISP was helpfully told by their DSL wholesaler that they cheerfully moved their ADSL1 ports in my exchange to ADSL2 ports because they became available. They didn't ask up front - apparently they just did it and told said ISP of mine after the fact.

Then my DSL line goes dead.

My line is already marginal at best. Whatever the heck it's plugged into now - even with an ADSL1 profile - doesn't actually work.

Then it twigs. When they said "ADSL1 to ADSL2 ports", they meant "Telstra ADSL1 to {some other provider} ADSL2." We tried an ADSL1 profile on the line but it still gives just as shitty noise and attenuation levels - 50dB attenuation on downstream! It syncs, then it drops out 30 seconds later.

In any case. It's finally been escalated to an urgent fault (hah!) inside said DSL wholesaler and their DSL provider .. which unfortunately won't be looked at until Tuesday. I've told my ISP that if they can't manage to fix it by Wednesday that I want the port migrated back to Telstra ASAP. I then reminded him (and he laughed with me about it) that I was paying a premium BECAUSE I had a functional Telstra ADSL1 port that worked over the 4km run to my house. Yup, I'm paying extra because I'm on a Telstra port and I'm quite happy to continue doing so.

At least my ISP is cool. I'll have to bring beer around to the owners' place next week after he's lit the relevant fires to fix this for me.


February 27, 2010 07:41 AM

Tractorgen - Commits

Enumerate ALL devices.

m kernel/dev/pci.d

Enumerate ALL devices.


February 27, 2010 04:49 AM

Fixed documentation.

m kernel/dev/pci.d

Fixed documentation.


February 27, 2010 04:49 AM

Working PCI scanning.

m kernel/dev/pci.d

Working PCI scanning.


February 27, 2010 04:49 AM

Adding PCI device scan.

m kernel/arch/x86_64/architecture/cpu.d
m kernel/arch/x86_64/architecture/pci.d
m kernel/core/kmain.d
m kernel/dev/pci.d

Adding PCI device scan.


February 27, 2010 04:49 AM

Fixing up PCI implementation.

m kernel/arch/x86_64/architecture/cpu.d
m kernel/arch/x86_64/architecture/pci.d

Fixing up PCI implementation.


February 27, 2010 04:49 AM

Simplifying

m kernel/arch/x86_64/architecture/pci.d
m kernel/dev/pci.d

Simplifying


February 27, 2010 04:49 AM

Documentation additions.

m kernel/arch/x86_64/architecture/pci.d

Documentation additions.


February 27, 2010 04:49 AM

Added implementation of PCI config writes.

m kernel/arch/x86_64/architecture/cpu.d
m kernel/arch/x86_64/architecture/pci.d

Added implementation of PCI config writes.


February 27, 2010 04:49 AM

Added implementation of PCI config reads.

m kernel/arch/x86_64/architecture/cpu.d
m kernel/arch/x86_64/architecture/pci.d

Added implementation of PCI config reads.


February 27, 2010 04:49 AM

Added some implementation to PCI stubs. Fixed ioIn for Cpu.

m kernel/arch/x86_64/architecture/cpu.d
m kernel/arch/x86_64/architecture/pci.d
m kernel/dev/pci.d

Added some implementation to PCI stubs. Fixed ioIn for Cpu.


February 27, 2010 04:49 AM

-----

February 25, 2010

Roger Barnes

Photo of the day - 26 Feb 2010 - Jellyfish, Constitution Dock, Hobart, Tasmania

Jellyfish, Constitution Dock, Hobart, Tasmania
Jellyfish, Constitution Dock, Hobart, Tasmania


February 25, 2010 08:35 PM

Russell Coker

Terms of Abuse for Minority Groups

Due to the comments on my blog post about Divisive Behavior [1] I’ve been considering the issue of terms of abuse of minority groups – a topic of which racial abuse is only one aspect. It seems that there are many discussions about which terms are offensive and when they are offensive, most of which are [...]


February 25, 2010 03:48 PM

-----

February 24, 2010

Roger Barnes

Photo of the day - 25 Feb 2010 - Rhapsody of the Seas, Docked in Hobart, Tasmania

Rhapsody of the Seas, Docked in Hobart, Tasmania
Rhapsody of the Seas, Docked in Hobart, Tasmania


February 24, 2010 09:08 PM

Jaq

Monitoring Cron Jobs

(This article comes from one I helped edit and publish inside work, so I can't take any credit for the ideas expressed within, though I do vehemently and violently subscribe to the sentiment! Thanks to Alan Sundell for originally educating me.)

When you set (or don't set at all) MAILTO in a crontab fragment, typically it's because you want to be notified if your job fails -- failure in this case if and only if the job only prints to stdout/stderr if there is an exceptional condition... However not all jobs print only on exceptional conditions, many use stderr for logging, and email is just not a great solution to this problem, especially at scale.

Problems with alerting by email from cron.

Why is it a bad idea to rely on cron mail?

If a cronjob running successfully is critical to operation, then it seems that what you really need is some kind of monitoring system that addresses all of these things, and can send alerts to some oncall rotation that determines who is responsible for handling alerts.

A potential solution

Here's an idea that might help with that.

  1. Direct the output of your job to some log file for debugging, in the event of persistent failure. Note the truncate:

    MAILTO=""
    */1 * * * * root cronjob > /var/log/cronjob.log 2>&1
    

    (If you decide to appent, not overwrite the log each execution, then make sure you logrotate that file.)

  2. At the end of cronjob, update a status file, like so:

    scriptname=$(basename $0)
    date +%s > /var/tmp/cronjob-last-success-timestamp
    

    Ensure that your job exits on error before reaching the last line!

  3. Collect the content of that file regularly with your monitoring system; scrape it with the nagios host agent, pump it into collectd, whatever you hip open source cats are using these days.

  4. Configure your monitoring system to send a notification on the timestamp having not been updated in some time period.

    if cronjob-last-success-timestamp
      <
    (time() - 30m)
      then alert
    
  5. Profit!

Now you only generate an alert if the cron job hasn't succeeded in the last 30 minutes (a threshold you can adjust to match your monitoring scrape intervals and service SLAs), and with a sufficiently mature monitoring system you can now express dependencies, suppress the notification, and send it to an oncall rotation, and so on!

Most significantly, we have converted a system that always reported failure, into a system that is based around checking for success -- a failsafe.


February 24, 2010 12:27 PM

Raster

Evas OpenGL and OpenGL-ES improvements

Well the world turns and things move on... and that's true of Evas. Not only did it get 3D - it has had an OpenGL engine for a while. Recently this has been revamped. It's a full OpenGL AND OpenGL-ES2.0 engine - it does both with the same codebase (and a few minimal #ifdefs). It's entirely built around shaders and is very complete. This is in addition to the already very optimised Evas software engine and the myriad of others. There are already ports to WebOS on the Palm Pre, and it should all work on any Linux system, Desktop, Laptop or embedded (ARM, x86 etc. etc.). (Android excluded as it's not Linux - not Linux as ins the normal usage of the word meaning Linux plus the whole userspace ecosystem than comes with it).

Not only is the OpenGL engine of Evas able to work, it ALSO supports texture-from-pixmap - which means... I just added a simple compositor module to E17 that uses this. It can either composite with software or with OpenGL and shortcut to zero-copy via texture-from-pixmap. It even all works with OpenGL-ES2.0. On Desktop it works nicely with NVIDIA drivers, though others may have mileage that varies, but in my experience most other drivers are not as complete or stable as NVIDIA's closed ones (even they have a few issues).

So what else is great about this? Well I also found some nice speedups. It's now at the point where I can run E17 + compositor (OpenGL-ES2.0) on an SoC at 480x800 AND keep silky smooth framerates with Evas based apps (like Elementary) while scrolling around AND compositing. I'm seeing composited framerates beat 100FPS. That is - the app can render at 100FPS.. or more... and still have its window be composited. I know there are even excess copies in the pipeline driver-side that are still to be fixed/improved. This baby is on fire.

Don't forget... this is also all running under X11. There will be some overhead but not much. It's a myth that X11 makes things slow - it's bad drivers that do that, and badly written X11 apps or toolkits. So let it be known that Evas has for many years supported OpenGL as a rendering path, as well as software, but now also fully supports OpenGL-ES2.0 ,and it's getting love and attention. This means that you can without any change in your apps, use either software or OpenGL - or a myriad of other engines, and get the best out of your hardware, if it has working and stable OpenGL drivers libraries or not.

Here is the performance data for this ARM based SoC - 480x800 screen, 32bpp. Yes, it has an OpenGL-ES2.0 Hardware core (SGX based). Numbers are in frames per second.

Test Software OpenGL-ES2.0
Widgets File Icons 17.50 19.13 (+9.3%)
Widgets File Icons 2 46.90 66.42 (+41.6%)
Widgets File Icons 3 32.87 17.26 (-47.5%)
Widgets File Icons 4 45.72 86.58 (+89.4%)
Image Blend Unscaled 16.72 49.29 (+194.8%)
Image Blend Solid Middle Unscaled 12.02 27.56 (+129.3%)
Image Blend Fade Unscaled 8.84 30.92 (+249.8%)
Image Blend Fade Power 2 Unscaled 8.84 30.92 (+249.8%)
Image Blend Solid Unscaled 80.31 78.54 (-2.2%)
Image Blend Solid Fade Unscaled 13.52 30.88 (+128.4%)
Image Blend Solid Fade Power 2 Unscaled 13.52 30.94 (+128.8%)
Image Blend Nearest Scaled 6.61 43.50 (+558.1%)
Image Blend Nearest Solid Scaled 69.48 64.72 (-6.9%)
Image Blend Smooth Scaled 1.59 36.71 (+2208.8%)
Image Blend Smooth Solid Scaled 31.15 64.74 (+107.8%)
Image Blend Nearest Same Scaled 34.20 77.97 (+128.0%)
Image Blend Nearest Solid Same Scaled 104.67 87.20 (-16.7%)
Image Blend Smooth Same Scaled 34.01 60.17 (+76.9%)
Image Blend Smooth Solid Same Scaled 121.32 86.62 (-28.6%)
Image Blend Border 2.05 36.00 (+1656.1%)
Image Blend Solid Middle Border 25.16 38.28 (+52.1%)
Image Blend Solid Border 33.04 46.62 (+41.1%)
Image Blend Border Recolor 1.71 18.66 (+991.2%)
Image Map Rotate 4.17 71.79 (+1621.6%)
Image Map Solid Rotate 4.73 121.01 (+2458.4%)
Image Map Nearest Rotate 14.84 82.85 (+458.3%)
Image Map Nearest Solid Rotate 25.13 120.54 (+379.7%)
Image Map Color Rotate 3.75 50.77 (+1253.9%)
Image Map Color Solid Rotate 4.20 119.53 (+2746.0%)
Image Map Color Nearest Rotate 8.16 50.94 (+524.3%)
Image Map Color Nearest Solid Rotate 10.52 120.06 (+1041.3%)
Image Map Color Alpha Rotate 3.67 50.76 (+1283.1%)
Image Map Color Alpha Solid Rotate 3.70 50.75 (+1271.6%)
Image Map Color Alpha Nearest Rotate 7.77 50.89 (+555.0%)
Image Map Color Alpha Nearest Solid Rotate 7.86 50.90 (+547.6%)
Image Map 3D 1 35.07 75.81 (+116.2%)
Image Map 3D 2 21.42 83.48 (+289.7%)
Image Map 3D 3 19.16 62.44 (+225.9%)
Image Map 3D 4 11.04 62.39 (+465.1%)
Image Map 3D 5 37.66 137.53 (+265.2%)
Image Map 3D 6 60.70 177.48 (+192.4%)
Image Map 3D Flow 15.43 23.65 (+53.3%)
Image Quality Scale 23.66 191.34 (+708.7%)
Image Data ARGB 121.94 27.85 (-77.2%)
Image Data ARGB Alpha 33.01 19.57 (-40.7%)
Image Data YCbCr 601 Pointer List 61.12 33.08 (-45.9%)
Image Data YCbCr 601 Pointer List Wide Stride 48.79 53.40 (+9.4%)
Image Crossfade 68.51 135.38 (+97.6%)
Text Basic 62.73 56.12 (-10.5%)
Text Styles 5.10 5.22 (+2.4%)
Text Styles Different Strings 4.06 4.60 (+13.3%)
Text Change 43.11 45.51 (+5.6%)
Textblock Basic 54.10 53.64 (-0.9%)
Textblock Intl 180.16 94.14 (-47.7%)
Rect Blend 8.03 26.90 (+235.0%)
Rect Blend Power 2 8.05 26.93 (+234.5%)
Rect Solid 73.41 79.09 (+7.7%)
Rect Blend Few 689.16 187.13 (-72.8%)
Rect Blend Power 2 Few 663.81 187.10 (-71.8%)
Rect Solid Few 967.81 203.34 (-79.0%)
Image Blend Occlude 1 Few 520.61 155.05 (-70.2%)
Image Blend Occlude 2 Few 178.36 122.45 (-31.3%)
Image Blend Occlude 3 Few 119.99 144.50 (+20.4%)
Image Blend Occlude 1 372.49 60.59 (-83.7%)
Image Blend Occlude 2 89.63 48.63 (-45.7%)
Image Blend Occlude 3 30.46 69.11 (+126.9%)
Image Blend Occlude 1 Many 150.62 23.74 (-84.2%)
Image Blend Occlude 2 Many 36.58 19.72 (-46.1%)
Image Blend Occlude 3 Many 12.25 31.17 (+154.4%)
Image Blend Occlude 1 Very Many 13.86 2.13 (-84.6%)
Image Blend Occlude 2 Very Many 3.54 2.29 (-35.3%)
Image Blend Occlude 3 Very Many 2.02 4.16 (+105.9%)
Polygon Blend 15.70 12.81 (-18.4%)
EVAS SPEED 78.40 66.03 (-15.8%)


February 24, 2010 12:00 PM

-----

February 23, 2010

Roger Barnes

Photo of the day - 24 Feb 2010 - Constitution Dock, Hobart, Tasmania

Constitution Dock, Hobart, Tasmania
Constitution Dock, Hobart, Tasmania


February 23, 2010 08:58 PM

Russell Coker

Divisive Behavior

Past Sins Sam Varghese wrote an article about Matthew Garrett’s LCA talk “The Linux community: what is it and how to be a part of it” [1]. In page 2 Sam quotes Martin Krafft as asking about how Matthew’s behavior had changed between 2004 and the present, Sam cites some references for Matthew’s actions in [...]


February 23, 2010 09:48 AM

Silvia Pfeiffer

HTML5 Media and Accessibility presentation

Today, I was invited to give a talk at my old workplace CSIRO about the HTML5 media elements and accessibility.

A lot of the things that have gone into Ogg and that are now being worked on in the W3C in different working groups – including the Media Fragments and HTML5 WGs – were also of concern in the Annodex project that I worked on while at CSIRO. So I was rather excited to be able to report back about the current status in HTML5 and where we’re at with accessibility features.

Check out the presentation here. It contains a good collection of links to exciting demos of what is possible with the new HTML5 media elements when combined with other HTML features.

I tried something now with this presentation: I wrote it in a tool called S5, which makes use only of HTML features for the presentation. It was quite a bit slower than I expected, e.g. reloading a page always included having to navigate to that page. Also, it’s not easily possible to do drawings, unless you are willing to code them all up in HTML. But otherwise I have found it very useful for, in particular, including all the used URLs and video element demos directly in the slides. I was inspired with using this tool by Chris Double’s slides from LCA about implementing HTML 5 video in Firefox.


February 23, 2010 03:05 AM

-----

February 22, 2010

Roger Barnes

Photo of the day - 23 Feb 2010 - Rhapsody of the Seas, Docked in Constitution Dock, Hobart, Tasmania

Rhapsody of the Seas, Docked in Constitution Dock, Hobart, Tasmania
Rhapsody of the Seas, Docked in Constitution Dock, Hobart, Tasmania


February 22, 2010 08:40 PM

Russell Coker

Net Neutrality

Martin Krafft advocates a model of Internet access where advertisers pay for the Internet connection [1]. The first problem with this idea is the base cost of providing net access – which in most cases is wires to the premises. Every service that involves a cable to someone’s house (Cable TV, Cable/DSL net [...]


February 22, 2010 03:48 AM

-----

February 21, 2010

Sam Johnston

Private cloud security is no security at all

It's ironic that the purveyors of "Private Cloud" sell their wares on the premise of enhanced privacy and security - a totally unjustified claim which is too often accepted without question - and that they are quick to dismiss the huge benefit of the armies of security boffins employed by "public" cloud vendors (whose future is largely dependent on keeping customer data safe). It's also very convenient for them that the term itself is disparaging of "public" cloud in the same way that "Blog With Integrity" badges imply that the rest of us are somehow unethical (one of the main reasons I personally have and will always dislike[d] it). It is with that in mind that I was intrigued by Reuven Cohen's announcement today regarding Enomaly, Inc. having recently joined the Intel Cloud Builder Program (whatever that is). It was these two quotes that I found particularly questionable regarding their Enomaly ECP product: Intel was among the first to full(sic) understand the opportunity in enabling a truly secure virtualized cloud computing environments(sic) for service providers and Telco's. Our work with the Intel Cloud Builder Program will help to accelerate our efforts to deliver a massively-scalable, highly-available, high-security cloud platform to our customers. The reason I'm naturally suspicious of such claims is that I've already discovered a handful of critical security vulnerabilities in this product (and that's without even having to look beyond the startup script - a secure-by-default turbogears component that was made insecure through inexplicable modifications): CVE-2008-4990 Enomaly ECP/Enomalism: Insecure temporary file creation vulnerabilities CVE-2009-0390: Argument injection vulnerability in Enomaly Elastic Computing Platform (ECP) Enomaly ECP/Enomalism: Multiple vulnerabilities in enomalism2.sh (redux) I had to dig a little (but not much) deeper for the silent update remote command execution vulnerability. I also inadvertently discovered another serious security vulnerability (sending corporate BestBuy credentials in the clear over the Internet to a 3rd party service), which as it turns out was also developed by Enomaly, Inc. It's only natural that I would be suspicious of any future security claims made by this company. It doesn't help my sentiment either that every last trace of the Open Source ECP Community Edition was recently scrubbed from the Internet without notice, leaving angry customers high and dry, purportedly pending the "rejigging [of their] OSS strategy". While my previous attempts to fork the product as Freenomalism failed when we were unable to get the daemon to start, having the code in any condition is better than not having it at all. In my opinion this is little more than blatantly (and successfully I might add) taking advantage of the Open Source community for as long as necessary to get the product into the limelight. Had they not filled this void others would certainly have done so, and the Open Cloud would be better off today as a result. As part of cloud standards work I was interested in taking a look at the "secure" mechanism they developed for distributing virtual machines: VMcasting is an automatic virtual machine deployment mechanism based on RSS2.0 whereby virtual machine images are transferred from a server to a client which securely delivers files containing a technical specification and virtual disk image.Another bold claim that initially appeared justified by a simple but relatively sensible embedding of crytpographically strong checksums into descriptor and manifest files that were in turn digitally signed using GPG. Unfortunately no consideration was given to the secure retrieval of the archive itself (nor the RSS feed listing the archives for that matter), nor were signatures actually required by the specification, meaning that it would be trivial for an attacker to insert their own unsigned packages and/or replace existing signed packages with modified, unsigned ones. Or replayi


February 21, 2010 04:42 PM

-----

February 20, 2010

Mark Greenaway

Food security

Science magazine has an issue on feeding the future. I've linked it because I just love some of the article names. I can't decide whether I prefer the article about holding back the plague of rats, or the one that suggests we eat less meat and more insects. Mmmm, crickets!


February 20, 2010 11:29 PM

Roger Barnes

Photo of the day - 21 Feb 2010 - Constitution Dock, Hobart, Tasmania

Constitution Dock, Hobart, Tasmania
Constitution Dock, Hobart, Tasmania

We successfully dealt with the Lake St Clair Ferry, the Derwent Bridge Hotel's booking and transfer arrangements, the coach operators booking service and an unexpected visit from the Fourth Reich Motorcycle Club. Well rested, fed and showered, we found ourselves in Hobart for a couple of days of sightseeing, markets, women's tennis and more drinking. :)


February 20, 2010 09:03 PM

Silvia Pfeiffer

Google’s challenges of freeing VP8

Since On2 Technology’s stockholders have approved the merger with Google, there are now first requests to Google to open up VP8.

I am sure Google is thinking about it. But … what does “it” mean?

Freeing VP8
Simply open sourcing it and making it available under a free license doesn’t help. That just provides open source code for a codec where relevant patents are held by a commercial entity and any other entity using it would still need to be afraid of using that technology, even if it’s use is free.

So, Google has to make the patents that relate to VP8 available under an irrevocable, royalty-free license for the VP8 open source base, but also for any independent implementations of VP8. This at least guarantees to any commercial entity that Google will not pursue them over VP8 related patents.

Now, this doesn’t mean that there are no submarine or unknown patents that VP8 infringes on. So, Google needs to also undertake an intensive patent search on VP8 to be able to at least convince themselves that their technology is not infringing on anyone else’s. For others to gain that confidence, Google would then further have to indemnify anyone who is making use of VP8 for any potential patent infringement.

I believe – from what I have seen in the discussions at the W3C – it would only be that last step that will make companies such as Apple have the confidence to adopt a “free” codec.

An alternative to providing indemnification is the standardisation of VP8 through an accepted video standardisation body. That would probably need to be ISO/MPEG or SMPTE, because that’s where other video standards have emerged and there are a sufficient number of video codec patent holders involved that a royalty-free publication of the standard will hold a sufficient number of patent holders “under control”. However, such a standardisation process takes a long time. For HTML5, it may be too late.

Technology Challenges
Also, let’s not forget that VP8 is just a video codec. A video codec alone does not encode a video. There is a need for an audio codec and a encapsulation format. In the interest of staying all open, Google would need to pick Vorbis as the audio codec to go with VP8. Then there would be the need to put Vorbis and VP8 in a container together – this could be Ogg or MPEG or QuickTime’s MOOV. So, apart from all the legal challenges, there are also technology challenges that need to be mastered.

It’s not simple to introduce a “free codec” and it will take time!

Google and Theora
There is actually something that Google should do before they start on the path of making VP8 available “for free”: They should formulate a new license agreement with Xiph (and the world) over VP3 and Theora. Right now, the existing license that was provided by On2 Technologies to Theora (link is to an early version of On2’s open source license of VP3) was only for the codebase of VP3 and any modifications of it, but doesn’t in an obvious way apply to an independent re-implementations of VP3/Theora. The new agreement between Google and Xiph should be about the patents and not about the source code. (UPDATE: The actual agreement with Xiph apparently also covers re-implementations – see comments below.)

That would put Theora in a better position to be universally acceptable as a baseline codec for HTML5. It would allow, e.g. Apple to make their own implementation of Theora – which is probably what they would want for ipods and iphones. Since Firefox, Chrome, and Opera already support Ogg Theora in their browsers using the on2 licensed codebase, they must have decided that the risk of submarine patents is low. So, presumably, Apple can come to the same conclusion.

Free codecs roadmap
I see this as the easiest path towards getting a universally acceptable free codec. Over time then, as VP8 develops into a free codec, it could become the successor of Theora on a path to higher quality video. And later still, when the Internet will handle large resolution video, we can move on to the BBC’s Dirac/VC2 codec. It’s where the future is. The present is more likely here and now in Theora.


ADDITION:
Please note the comments from Monty from Xiph and from Dan, ex-On2, about the intent that VP3 was to be completely put into the hands of the community. Also, Monty notes that in order to implement VP3, you do not actually need any On2 patents. So, there is probably not a need for Google to refresh that commitment. Though it might be good to reconfirm that commitment.


February 20, 2010 07:57 AM

Rusty

Rusty’s Travels

Headed through Germany 26th through 3rd March or so, then Lithuania via Poland.  Back via Singapore on 24/25 March.

My email will be intermittent (I hope!) but if you’re around and want to grab a meal or a beer with us, ping me!


February 20, 2010 07:02 AM

-----

February 19, 2010

Erik de Castro Lopo

Conroy : Is He a Duck?

The Australian Federal Minister for Communications, Stephen Conroy, may not actually be corrupt; I certainly have no evidence that he is, but a number of recent incidents sure look like corruption to me. For instance:

The real irony is that under Conroy's proposed scheme to filter the internet in Australia comments like this blog entry may end up being censored. The problem with Conroy's filter is not that it filters porn, but rather that the list of what is being filtered is secret and hence could easily include web sites which contain comments which the government or the Minister for Communications want silenced.


February 19, 2010 09:47 PM

Roger Barnes

Photo of the day - 20 Feb 2010 - Lake St Clair, Overland Track, Tasmania

Lake St Clair, Overland Track, Tasmania
Lake St Clair, Overland Track, Tasmania


February 19, 2010 08:41 PM

Raz

Life imitating art: catfood?!

So, it turns out that it’s not just “prawns” who find catfood irresistible; so do cane-toad-killing meat ants. I am not making this up. (via)


February 19, 2010 09:08 AM

Sam Johnston

How Open Cloud could have saved Sidekick users' skins

The cloud computing scandal of the week is looking like being the catastrophic loss of millions of Sidekick users' data. This is an unfortunate and completely avoidable event that Microsoft's Danger subsidiary and T-Mobile (along with the rest of the cloud computing community) will surely very soon come to regret.

There's plenty of theories as to what went wrong - the most credible being that a SAN upgrade was botched, possibly by a large outsourcing contractor, and that no backups were taken despite space being available (though presumably not on the same SAN!). Note that while most cloud services exceed the capacity/cost ceiling of SANs and therefore employ cheaper horizontal scaling options (like the Google File System) this is, or should I say was, a relatively small amount of data. As such there is no excuse whatsoever for not having reliable, off-line backups - particularly given Danger is owned by Microsoft (previously considered one of the "big 4" cloud companies even by myself). It was a paid-for service too (~$20/month or $240/year?) which makes even the most expensive cloud offerings like Apple's MobileMe look like a bargain (though if it's any consolation the fact that the service was paid for rather than free may well come back to bite them by way of the inevitable class action lawsuits).

"Real" cloud storage systems transparently ensure that multiple copies of data are automatically maintained on different nodes, at least one of which is ideally geographically independent. That is to say, the fact I see the term "SAN" appearing in the conversation suggests that this was a legacy architecture far more likely to fail. This is in the same way that today's aircraft are far safer than yesterday's and today's electricity grids far more reliable than earlier ones (Sidekick apparently predates Android & iPhone by some years after all). It's hard to say with any real authority what is and what is not cloud computing though, beyond saying that "I know it when I see it, and this ain't it".

Whatever the root cause the result is the same - users who were given no choice but to store their contacts, calendars and other essential day-to-day data on Microsoft's servers look like having irretrievably lost it. Friends, family, acquaintances and loved ones - even (especially?) the boy/girl you met at the bar last night - may be gone for good. People will miss appointments, lose business deals and in the most extreme cases could face extreme hardship as a result (for example, I'm guessing parole officers don't take kindly to missed appointments with no contact!). The cost of this failure will (at least initially) be borne by the users, and yet there was nothing they could have done to prevent it short of choosing another service or manually transcribing their details.

The last hope for them is that Microsoft can somehow reverse the caching process in order to remotely retrieve copies from the devices (which are effectively dumb terminals) before they lose power; good luck with that. While synchronisation is hard to get right, having a single cloud-based "master" and a local cache on the device (as opposed to a full, first-class citizen copy) is a poor design decision. I have an iPhone (actually I have a 1G, 3G, 3GS and an iPod Touch) and they're all synchronised together via two MacBooks and in turn to both a Time Machine backup and Mozy online backup. As if that's not enough all my contacts are in sync with Google Apps' Gmail over the air too so I can take your number and pretty much immediately drop it in a beer without concern for data loss. Even this proprietary system protects me from such failures.

The moral of the story is that externalised risk is a real problem for cloud computing. Most providers [try to] avoid responsibility by way of terms of service that strip away users' rights but it's a difficult problem to solve though because enforcing liability for anything but gross negligence can exclude smaller players from the market. That is why users absolutely must have control over their data and be encouraged if not forced to take responsibility for it.

Open Cloud simply requires open formats and open APIs - that is to say, users must have access to their data in a transparent format. Even if it doesn't make sense to maintain a local copy on the users' computer, there's nothing stopping providers from pushing it to a third party storage service like Amazon S3. In fact it makes a lot of sense for applications to be separated from storage entirely. We don't expect our operating system to provide all the functionality we'll ever need (or indeed, any of it) so we install third party applications which use the operating system to store data. What's to stop us doing the same in the cloud, for example having Google Apps and Zoho both saving back to a common Amazon S3 store which is in turn replicated locally or to another cloud-based service like Rackspace Cloud Files?

In any case perhaps it's time for us to dust off and revisit the Cloud Computing Bill of Rights?


February 19, 2010 02:59 AM

"Bare Metal" cloud infrastructure "compute" services arrive

Earlier in the year during the formation of the Open Cloud Computing Interface (OCCI) working group I described three types of cloud infrastructure "compute" services: Physical Machines ("Bare Metal") which are essentially dedicated servers provisioned on a utility basis (e.g. hourly), whether physically independent or just physically isolated (e.g. blades) Virtual Machines which nowadays uses hypervisors to split the resources of a physical host amongst various guests, where both the host and each of the guests run a separate operating system instance. For more details on emulation vs virtualisation vs paravirtualisation see a KB article I wrote for Citrix a while back: CTX107587 Virtual Machine Technology Overview OS Virtualisation (e.g. containers, zones, chroots) which is where a single instance of an operating system provides multiple isolated user-space instances. While the overwhelming majority of cloud computing discussions today focus on virtual machines, the reason for my making the distinction was so as the resulting API would be capable of dealing with all possibilities. The clouderati are now realising that there's more to life than virtual machines and that the OS is like "a cancer that sucks energy (e.g. resources, cycles), needs constant treatment (e.g. patches, updates, upgrades) and poses significant risk of death (e.g. catastrophic failure) to any application it hosts". That's some good progress - now if only the rest of the commentators would quit referring to virtualisation as private cloud so we can focus on what's important rather than maintaining the status quo. Anyway such cloud services didn't exist at the time but in France at least we did have providers like Dedibox and Kimsufi who would provision a fixed configuration dedicated server for you pretty much on the spot starting at €20/month (&lt;€0.03/hr or ~$0.04/hr). I figured there was nothing theoretically stopping this being fully automated and exposed via a user (web) or machine (API) interface, in which case it would be indistinguishable from a service delivered via VM (except for a higher level of isolation and performance). Provided you're billing as a utility (that is, users can consume resources as they need them and are billed only for what they use) rather than monthly or annually and taking care of all the details "within" the cloud there's no reason this isn't cloud computing. After all, as an end user I needn't care if you're providing your service using an army of monkeys, so long as you are. PCI compliance anyone? Virtually all of the cloud infrastructure services people talk about today are based on virtual machines and the market price for a reasonably capable one is $0.10/hr or around $72.00 per month. That's said to be 3-5x more than cost at "cloud scale" (think Amazon) so expect that price to drop as the market matures. Rackspace Cloud are already offering small Xen VMs for 1.5c/hr or ~$10/month. I won't waste any more time talking about these offerings as everyone else already is. This will be a very crowded space thanks in no small part to VMware's introduction of vCloud (which they claim turns any web hoster into a cloud provider) but with the hypervisor well and truly commoditised I assure you there's nothing to see here. On the lightweight side of the spectrum, VPS providers are a dime a dozen. These guys generally slice Linux servers up into tens if not hundreds of accounts for only a few dollars a month and take care of little more than the (shared) kernel, leaving end users to install the distribution of their choice as root. Solaris has zones and even Windows has MultiWin built in now days (that's the technology, courtesy Citrix, that allows multiple users each having their own GUI session to coexist on the same machine - it's primarily used for Terminal Services &amp; Fast User Switching but applications and services can also run in their own context). This delivers most of the benefits of a virtual machine, only witho


February 19, 2010 02:57 AM

HOWTO: Fix OS X by uninstalling Adobe Flash

Adobe Flash just ruined my day for the last time... I've just arrived in Paris and needed to do some work before a meeting this afternoon. As it's noisy here I didn't hear the MacBook's fans running at full speed trying to compensate for a single rogue Flash ad in a tab in Google Chrome. The result was that my full 4 hour battery was reduced to less than 40 minutes and I now have no chance of getting everything I wanted to do done. Instead I'm going to use the remaining 20 minutes to tell you how to rid yourself of Flash once and for all, and in doing so enjoy the following benefits: Significantly improved security (Snow Leopard even shipped with a vulnerable Flash player!) Significantly improved performance (Flash regularly consumes most of the resources of even the most powerful machines) Significantly longer battery life (the CPU consumes a lot more energy when it is busy) Significantly less noise (MacBooks crank up the fans to deal with the extra heat) No more annoying and invasive advertisements (virtually all of the most annoying ads are Flash) Less distractions (while sites like YouTube have legitimate uses, the overwhelming majority of time spent there is procrastination) A better Internet (Adobe's penetration figures are already complete bullshit but by voting NO to Flash you're sending developers a strong message) An open Internet (Adobe Flash is a proprietary plugin that hampers the adoption of open standards like HTML 5) A level playing field with one less monopoly (Adobe was the first company to achieve near-ubiquitous penetration rate with a proprietary plug-in, and it will hopefully be the last. Late entrants like Silverlight don't stand a chance because there is just no incentive.) Without further ado (as I'm running out of juice):Download the Adobe Flash Player uninstaller for your system (e.g. uninstall_flash_player_osx.dmg) Open the Flash Player Uninstaller: Authenticate: Watch: Done: Enjoy a Flash-free computing experience (it only takes about 30 seconds). PS: You might be surprised to find that (provided you're using a recent browser like Safari 4, Chrome, Firefox 3.5, etc.) videos such as those at Apple.com (including the Get a Mac ads) as well as sites like DailyMotion's OpenVideo will "just work", natively, in the browser, without Flash. That's the future right there... PPS: For the fanbois on whom the message that I'm not interested is lost, feel free to flame away below. The demise of Flash is going to happen, probably sooner than you would like, so why endure another day? Update: After 2 weeks without Flash I've had far fewer problems, can open many more tabs and have not had to restart my browser at all. Even YouTube has its own HTML5 video demo pages up now so it's only a matter of time before Flash will be relegated to the wonderful world of Internet advertising. For those who are stuck with Flash for whatever reason I recommend ClickToFlash which at least prevents it from being loaded without user interaction.


February 19, 2010 02:57 AM

Face it Flash, your days are numbered.

It's no secret that I'm no fan of Adobe Flash:

It should be no surprise then that I'm stoked to see a vigorous debate taking place about the future/fate of Flash well ahead of schedule, and even happier to see Flash sympathisers already resorting to desperate measures including "playing the porn card" (not to mention Farmville which, in addition to the myriad annoying, invasive and privacy-invading advertisements, I will also be more than happy to see extinct). In my mind this all but proves how dire their situation has become with the sudden onslaught of mobile devices deliberately absent flash malware*.

Let's take a moment to talk about statistics. According to analysts there are currently "only" 1.3 billion Internet-connected PCs. To put that into context, there are already almost as many Internet-connected mobile devices. With a growth rate 2.5 times that of PCs, mobiles will soon become the dominant Internet access device. Of those new devices, few of them support Flash (think Android, iPhone), and with good reason - they are designed to be small, simple, performant and operate for hours/days between charges.

As if that's not enough, companies with the power to make it happen would very much like for us to have a third device that fills the void between the two - a netbook or a tablet (like the iPad). For the most part (again being powered by Android and iPhone OS) these devices don't support Flash either. Even if we were to give Adobe the benefit of the doubt in accepting their deceptiveoptimistic claims that Flash is currently "reaching 99% of Internet-enabled desktops in mature markets" (for more on that subject see Lies, damned lies and Adobe’s penetration statistics for Flash), between these two new markets it seems inevitable that their penetration rate will drop well below 50% real soon now.

Here's the best part though, Flash penetration doesn't even have to drop below 50% for us to break the vicious cycle of designers claiming "99% penetration" and users then having to install Flash because so many sites arbitrarily depend on it (using Flash for navigation is a particularly heinous offense, as is using it for headings with fancy fonts). Even if penetration were to drop to 95% (I would argue it already has long ago, especially if you dispense with weasel wording like "mature markets" and even moreso if you do away with the arbitrary "desktop" restriction - talk about sampling bias!) that translates to turning away 1 in 20 of your customers. At what point will merchants start to flinch - 1 in 10 (90%)? 1 in 5 (80%)? 1 in 4 (75%)? 1 in 2 (50%)?

As if that's not enough, according to Rich Internet Application Statistics, you would be losing some of your best customers - those who can afford to run Mac OS X (87% penetration) and Windows 7 (around 75% penetration) - not to mention those with iPhones and iPads (neither of which are the cheapest devices on the market). Oh yeah and you heard it right, according to them, Flash penetration on Windows 7 is an embarassing 3 in 4 machines; even worse than SunOracle Java (though ironically Microsoft's own Silverlight barely reaches 1 in 2 machines).

While we're at it, at what point does it become "willful false advertising" for Adobe and their army of Flash designers to claim such deep penetration? Victims who pay $$lots for Flash-based sites only to discover from server logs that a surprisingly large percentage of users are being turned away have every reason to be upset, and ultimately to seek legal recourse. Why hasn't this already happened? Has it? In any case designers like "Paul Threatt, a graphic designer at Jackson Walker design group, [who] has filed a complaint to the FTC alleging false advertising" ought to think twice before pointing the finger at Apple (accused in this case over a few mockups, briefly shown and since removed, in an iPad promo video).

At the end of the day much of what is annoying about the web is powered by Flash. If you don't believe me then get a real browser and install Flashblock (for Firefox or Chrome) or ClickToFlash (for Safari) and see for yourself. You will be pleasantly surprised by the absence of annoyances as well as impressed by how well even an old computer can perform when not laden with this unnecessary parasite*. What is less obvious (but arguably more important) is that your security will dramatically improve as you significantly reduce your attack surface (while you're at it replace Adobe Reader with Foxit and enjoy even more safety). As someone who has been largely Flash-free for the last 3 months I can assure you life is better on the other side; in addition to huge performance gains I've had far fewer crashes since purging my machine - unsurprising given according to Apple's Steve Jobs, "Whenever a Mac crashes more often than not it’s because of Flash". "No one will be using Flash, he says. The world is moving to HTML5."

So what can Adobe do about this now the horse has long since bolted? If you ask me, nothing. Dave Winer (another fellow who, like myself, "very much care[s] about an open Internet") is somewhat more positive in posing the question What if Flash were an open standard? and suggesting that "Adobe might want to consider, right now, very quickly, giving Flash to the public domain. Disclaim all patents, open source all code, etc etc.". Too bad it's not that simple so long as one of the primary motivations for using Flash is bundled proprietary codecs like H.264 (which the MPEG LA have made abundantly clear will not be open sourced so long as they hold [over 900!] essential patents over it).

Update: Mobile Firefox Maemo RC3 has disabled Flash because "The Adobe Flash plugin used on many sites degraded the performance of the browser to the point where it didn’t meet Mozilla’s standards." Sound familiar?

Update: Regarding the upcoming CS5 release which Adobe claims will "let you publish ActionScript 3 projects to run as native applications for iPhone", this is not at all the same thing as the Flash plugin and will merely allow developers to create applications which suck more using a non-free SDK. No thanks. I'm unconvinced Apple will let such applications into the store anyway, citing performance concerns and/or the runtime rule.

Update: I tend to agree with Steven Wei that The best way for Adobe to save Flash is by killing it, but that doesn't mean it'll happen and any case if they wanted to do that they would have wanted to have started at least a year or two ago for the project to have any relevance, and it's clear that they're still busy flogging the binary plugin dead horse.

Update: Another important factor I neglected to mention above is that Adobe already struggle to maintain up-to-date binaries for a small number of major platforms and even then Mac and Linux are apparently second and third class citizens. If they're struggling to manage the workload today then I don't see what will make it any easier tomorrow with the myriad Linux/ARM devices hitting the market (among others). Nor would they want to - if they target HTML5, CSS3, etc. as proposed above then they have more resources to spend on having the best development environment out there.

* You may feel that words like "parasite" and "malware" are a bit strong for Flash, but when you think about it Flash has all the necessary attributes; it consumes your resources, weakens your security and is generally annoying. In short, the cost outweighs any perceived benefits.


February 19, 2010 02:47 AM

Cloud Computing Crypto: GSM is dead. Long live GSM!

GSM, at least&nbsp;in its current form, is dead and the GSMA's attempts to downplay serious vulnerabilities in claiming otherwise reminds me of this rather famous Monty Python sketch about a dead parrot: Fortunately consumers these days are savvy and have access to information with which to verify (or not) vendors' claims about security. So when they get together and say things like "the researchers still would need to build a complex radio receiver to process the raw radio data" the more cynical of us are able to dig up 18 month old threads like this one which concludes: So it appears you might be able to construct a GSM sniffer from a USRP board and a bunch of free software, including a Wireshark patch. (It appears that one of the pieces of free software required is called "Linux" or "GNU/Linux", depending on which side of that particular debate you're on :-), i.e. it works by using Linux's tunnel device to stuff packets into a fake network interface on which Wireshark can capture.Ok so extracting the 1's and 0's from the airwaves and getting them into the most convenient (open source) framework we have for the dissection of live protocols is a problem long since solved. Not only are the schematics publicly available, but devices are commercially available online for around $1,000. One would have assumed that the GSMA should have known this, and presumably they did but found it preferable to turn a blind eye to the inconvenient truth for the purposes of their release. The real news though is in the cracking of the A5/1 encryption which purports to protect most of us users by keeping the voice channels "secure". Conversely the control information which keeps bad guys from stealing airtime is believed to remain safe for the time being. That is to say that our conversations are exposed while the carriers' billing is secure - an "externalisation" of risk in that the costs are borne by the end users. You can bet that were the billing channels affected then there would have been a scramble to widely deploy a fix overnight rather than this poor attempt at a cover-up. The attack works by creating a 2Tb rainbow table in advance which allows one to simply look up a secret key rather than having to brute force it. This should be infeasible even for A5/1's 64-bit key but "the network operators decided to pad the key with ten zeros to make processing faster, so it's really a 54-bit key" and there are other weaknesses that combine to make this possible. A fair bit of work goes into creating the table initially, but this only needs to be done once and you can buy access to the tables as a service as well as the tables themselves for many common hashes (such as those used to protect Windows and Unix passwords - and no doubt GSM soon too!). The calculations themselves can be quite expensive but advances like OpenCL in the recently released Mac OS X (Snow Leopard) can make things a lot better/faster/cheaper by taking advantage of extremely performant graphics processing units (GPUs). Of course thanks to cloud computing you don't even need to do the work yourself - you can just spin up a handful of instances on a service like Amazon EC2 and save the results onto Amazon S3/Amazon EBS. You can then either leave it there (at a cost of around $300/month for 2Tb storage) and use instances to interrogate the tables via a web service, or download it to a local 2Tb drive (conveniently just hitting the market at ~$300 once off). Cloud storage providers could make the task even easier with services like public data sets which bring multi-tenancy in the form of de-duplication benefits to common data sets. For example, if Amazon found two or more customers storing the same file they could link the two together and share the costs between all of them (they may well do this today, only if they do they keep the benefit for themselves). In the best case such benefits would be exposed to all users in which case the cost of such "public domain" data would be ra


February 19, 2010 02:46 AM

Introducing Planet Cloud: More signal, less noise.

As you are no doubt well aware there is a large and increasing amount of noise about cloud computing, so much so that it's becoming increasingly difficult to extract a clean signal. This has always been the case but now that even vendors like Oracle (who have previously been sharply critical of cloud computing, in part for exactly this reason) are clambering aboard the bandwagon, it's nearly impossible to tell who's worth listening to and who's just trying to sell you yesterday's technology under today's label.

It is with this in mind that I am happy to announce Planet Cloud, a news aggregator for cloud computing articles that is particularly fussy about its sources. In particular, unless you talk all cloud, all the time (which is rare - even I take a break every once in a while) then your posts won't be included unless you can provide a cloud-specific feed. Fortunately most blogging software supports this capability and many of the feeds included at launch take advantage of it. You can access Planet Cloud at:

http://www.planetcloud.org/ or @planetcloud

Those of you aware of my disdain for SYS-CON's antics might be surprised that we've opted to ask for forgiveness rather than permission, but you'll also notice that we don't run ads (nor do we have any plans to - except for a few that come to us via feeds and are thus paid to authors). As such this is a non-profit service to the cloud computing community intended filter out much of the noise in the same way that the Clouderati provides an fast track to the heart of the cloud computing discussion on Twitter. An unwanted side effect of this approach is that it is not possible for us to offer the feeds under a Creative Commons license, as would usually be the case for content we own.

Many thanks to Tim Freeman (@timfaas) for his contribution not only of the planetcloud.org domain itself, but also of a comprehensive initial list of feeds (including many I never would have thought of myself). Thanks also to Rackspace Cloud who provide our hosting and who have done a great job of keeping the site alive during the testing period over the last few weeks. Thanks to the Planet aggregator which is simple but effective Python software for collating many feeds. And finally thanks to the various authors who have [been] volunteered for this project - hopefully we'll be able to drive some extra traffic your way (of course if you're not into it then that's fine too - we'll just remove you from the config file and you'll vanish within 5 minutes).


February 19, 2010 02:40 AM

How lobbyists are denying you a voice and destroying democracy

I came across an unsurprising but nonetheless disconcerting revelation today that is gives a very good example of what most of us knew all along: that "public comment" process are routinely subverted by commercial interests, generally at the public's expense. It comes in the form of a smoking gun courtesy DSL Reports: Who Knew Senior Citizens Hated Net Neutrality? There is currently an extremely important battle underway over securing Net Neutrality regulations and another where big media are actively attacking (by way of three-strikes policies like HADOPI in France) what is fast becoming a legal right: broadband access (thanks to Finland for getting the ball rolling: Fast Internet access becomes a legal right in Finland). Us (US?) consumers recently had a big win with the FCC getting on board the Open Internet bandwagon but not afraid to flog a dead horse, industry lobbyists have rolled out an army of puppets parroting their position; that Net Neutrality is somehow opposed to broadband adoption (which could not be further from the truth). In this case it's the Arkansas Retired Seniors Coalition, purporting to represent (surprise, surprise) retired seniors in Arkansas, ignoring the fact that your average senior quite probably doesn't know what net neutrality is, let alone care about it! They do care about Internet access though and as the slowest state in the south all it would take would be a seemingly suitable scapegoat and you'd have pitchforks in the streets. My guess is they don't even know the position taken by their representatives which makes this letter sent on their behalf at least deceitful: Arkansas Retired Seniors Coalition Net Neutrality Letter The problem which such astroturfing is that it makes public opinion both harder to reliably collect and easier to dismiss. Such shenanigans appear far more prevalent in the US than other countries I've lived in, but regulations there (e.g. DMCA) tend to flow on to the rest of us eventually so it's in everyone's interest to have their say. There really should be something done about the issue, however most solutions are relatively difficult to enforce. Examples include requiring a statutory declaration component such that egregious abuses can be punished (and to make people think twice about misrepresenting others), or requiring the individuals represented to make an overt act such as signing a petition. Rejecting messages that are too similar, and therefore obviously templates, raises the bar somewhat but does not stop determined attackers. The long term solution likely comes in the form of digital identity, whereby each individual can be reliably authenticated and the cost of involving them in decisions trends towards zero. As referendums are extremely expensive and inefficient (despite the availability of technology that could put them within reach for routine decision-making) we appoint representatives who we hope will accurately reflect our views on each of the topics. Obviously this is rare - for example your representative might share your views on fiscal policy but reject gay marriage in which case you have to choose what is more important to you. An arguably better solution is where individuals can take part in all decisions they care about, which is called a direct democracy (or pure democracy), and the use of technology to achieve better representation is a separate but related concept known as e-democracy. We should be paying more attention to both as it's like we only got half way there by establishing representative democracies in most of the western world.


February 19, 2010 02:40 AM

Who's lying about the Ulitzer Cloud Security Journal?

I've spent the last week jetting about for meetings and CloudCamps but now I'm trawling through the week's news and email it seems I'm not the only one who's been busy. On Wednesday SYS-CON announced the Cloud Security Journal on Reuven Cohen's behalf:

Reuven Cohen Launches Cloud Security Journal on Ulitzer

Providing Insight Into the Cloud Computing Security, Privacy and Related Threats

BY LIZ MCMILLAN
SEPTEMBER 23, 2009 10:45 PM EDT
Reuven Cohen launched today Cloud Security Journal on Ulitzer.
Cloud Security Journal offers dedicated coverage of cloud security & privacy news, practical insights and editorials that give readers a unique virtual perspective of the rapidly evolving area of cloud security, threats and privacy.
Reuven Cohen is Founder & Chief Technologist for Toronto based Enomaly Inc. - leading developer of Cloud Computing products and solutions focused on enterprise businesses.
Enomaly's products include the Enomaly elastic computing platform, an open source cloud platform that enables a scalable enterprise IT and local cloud infrastructure platform. Cohen is a thought leader in the emerging cloud computing industry and maintains a blog at www.elasticvapor.com.
Reuven's notorious for poking a finger in every pie but this development is particularly controversial given the existence of the Cloud Security Alliance and his company, Enomaly's average security track record. He already ruffled feathers by "Introducing the CSA" back in March so it struck me as odd that he should have risked a similar backlash some months later.

Sure enough he vehemently denies any such involvement, adding that "Scraping my RSS I can tolerate, but writing fake PR releases is going to far. Not cool." Now SYS-CON (aka Ulitzer) are not the most reputable source (see Aral Balkan's "My Sys-Con Nightmare" post, among others) but to announce something like this without your victim having any knowledge whatsoever seems a stretch even for them. FWIW Reuven was certainly supportive of the now defunct "Cloud Interoperability Magazine" launch so to try it on again with security would not be unprecedented.

I don't know who's lying about this (clearly someone is) but had this have happened to me I would have immediately instructed them in writing to remove all of my content and references to my name or any of my companies (as I have just done now). If that didn't work a DMCA notice and/or C&D letter would promptly follow. Yet Reuven has not done so. Why? It seems that in return for turning a blind eye to such indiscretions Reuven's company Enomaly is rewarded with over 10,000 mentions on sys-con.com and ulitzer.com (which was recently removed from Google's index, apparently following complaints about spamming and using others' content without permission).

Good on them for finding a free (albeit dodgy) source of free advertising. However by selling out and being "supportive" of Sys-Con/Ulitzer - criticising them on Twitter to save face but otherwise tolerating their antics - Reuven and Enomaly are giving airtime and an unwarranted air of legitimacy to an otherwise untrustworthy organisation. Worse still, inaccurate content from unreliable sources is being actively promoted by way of syndication, press releases and SEO spamming which is damaging to the cloud computing community as a whole.

I therefore urge Reuven Cohen and anyone else who's "feeling a little used and abused" to follow my example an request removal from SYS-CON sites. If that doesn't work then don't hesitate to take further action in the form of DMCA notices and/or C&D letters.


February 19, 2010 02:37 AM

Crystal ball: Data-only carriers to destroy the telco industry RSN

This is one of those random thoughts that fits in a tweet but deserves a little more explanation. Like most I currently pay around €100 a month for a mobile package that includes some texts, airtime (2+2 hours on and off peak), some data and usually some useless gimmicks (free calls at certain times or to certain phones, etc.). This of course makes it truly impossible to compare apples to apples and I almost feel like choosing the right plan should be a profession (I'm sure there must be businesses that do this for a living).

Under the covers though it's all just 1's and 0's and it's been that way for a while - Australia turned off it's analog mobile network (AMPS) while I was still there and like here in Europe uses the Global Standard for Mobiles (GSM). This shares the limited airwaves with timeslices (TDMA) and over in the US they do a similar thing with code (CDMA), probably because TDMA has timing problems when you get out to tens of kilometers (irrespective of the strength of the signal) and the US has a lot of land to cover. Point is that under the covers it's all data. Of course things have changed a bit since I was helping design Australia's first digital mobile network - now we've got 3G, LTE, WiFi, WiMax, etc. to play with too.

Traditional telephony was what we call "circuit switched", which means it was about creating a dedicated connection between two endpoints. First these were hardwired, then switched manually by operators, then clicks on the line would operate mechanical switches at the exchange, more recently tones (DTMF) would tell chips what to do and nowdays connections are set up out-of-band over data connections. But it all still revolves around circuits, even though these days we're not tying up a pair of copper for the duration of the call, rather sending as much data as we need to when we need it (silence often uses little or no bandwidth but then we have to simulate background noise at the other end so as not to confuse the human).

That is to say it's time we stopped thinking about circuits which tend to be billed by time (after all, the resource could not be shared when you were using it) and start thinking about data (which is typically billed by quantity transferred or bandwidth available). In other words we are paying (generally more) for our communications because of technological limitations that have long since been removed. Even Skype go to great lengths to identify which country you are calling from so as to impose the legacy billing system we are used to (so many cents per minute depending on the country) rather than take advantage of what the Internet has to offer in terms of being unaffected by geography.

Then there's texts which are an even bigger rort. These were basically an afterthought which are sent out-of-band over the relatively limited control channel - the one that's used to set up calls and so on (that's why they take a while to send and why you can jam a phone by sending/receiving too many). Knowing that everything is 1's and 0's anyway, did you ever stop to think about how many texts a minute of voice is worth (even using strong compression)? It's a *lot* but let's work it out. Full rate GSM consumes 13Kbps or just shy of 100,000 8-bit characters per minute assuming my maths are correct. Each SMS is 140 8-bit (or 160 7-bit) characters or around 700 texts per minute. In Australia those texts cost $0.25 each so we're paying $175.00 a minute to consume the bandwidth as texts when we'd pay around $0.50 to consume it as voice. You can see why they love them now, can't you!

The telcos have been on the gravy train for long enough at our expense and it's long since been time for the next generation of carrier to take over. There's a massive opportunity here for someone to enter the market with a data-only service and in doing so destroy the existing industry literally overnight. We've already got devices (iPhones, Android) that are more than capable of doing everything we need over data, but which are being deliberately crippled by hardware and software vendors in order to protect the legacy carriers. That's not to say that Apple and Google are to blame for contracts they are almost certainly forced into by the likes of AT&T, but seeing Google taking the high road while having to concede that "individual operators can request that certain applications be filtered if they violate their terms of service" is disappointing.

Why can't we have Google Voice on the iPhone? Or use Skype over 3G (without jailbreaking and installing 3G Unrestrictor)? Or open source/open standard SIP telephony for that matter? Why are we sending texts when we have instant messaging? Or dialing in to retrieve voicemails that could just as easily be translated and/or emailed? Why are we paying for silence on the line when we should be paying for bandwidth and/or quantity of data? Why do we pay for minutes at all?

The telcos will tell you it's to protect their networks, and ultimately to protect you, no doubt from the evils of illegal filesharing, terroristing and child pornography. There's an element of truth to this (it only takes a few greedy customers to ruin it for the rest and as always 10% of the users use 90% of the traffic), ut there are simple, effective solutions for this too. People will pay more for a premium/priority service and at the end of the day you can always reign in abusers with packet shaping. The fairest mechanism I can think of comes in the form of a logarithmic bandwidth policy whereby the more you use the slower you go, but the point is that there are solutions so this is pure FUD. My "unlimited" data connection was just throttled from 3G+ to 3G speeds at 800Mb and again at 1000 Mb (so much for unlimited), but I'd happily pay more for a more "unlimited" service if it meant I could say goodbye to minutes and texts forever.

It will happen - it's just a case of when (and where first). Australia's regularly used as a test market and capped ($99 all you can talk) style plans took over by storm a few years ago, so let's just help an existing innovative carrier like 3 or a new one altogether teach the incumbents a lesson, with any luck by the time I get back there.


February 19, 2010 02:37 AM

Silvia Pfeiffer

Accessibility support in Ogg and liboggplay

At the recent FOMS/LCA in Wellington, New Zealand, we talked a lot about how Ogg could support accessibility. Technically, this means support for multiple text tracks (subtitles/captions), multiple audio tracks (audio descriptions parallel to main audio track), and multiple video tracks (sign language video parallel to main video track).

Creating multitrack Ogg files
The creation of multitrack Ogg files is already possible using one of the muxing applications, e.g. oggz-merge. For example, I have my own little collection of multitrack Ogg files at http://annodex.net/~silvia/itext/elephants_dream/multitrack/. But then you are stranded with files that no player will play back.

Multitrack Ogg in Players
As Ogg is now being used in multiple Web browsers in the new HTML5 media formats, there are in particular requirements for accessibility support for the hard-of-hearing and vision-impaired. Either multitrack Ogg needs to become more of a common case, or the association of external media files that provide synchronised accessibility data (captions, audio descriptions, sign language) to the main media file needs to become a standard in HTML5.

As it turn out, both these approaches are being considered and worked on in the W3C. Accessibility data that are audio or video tracks will in the near future have to come out of the media resource itself, but captions and other text tracks will also be available from external associated elements.

The availability of internal accessibility tracks in Ogg is a new use case – something Ogg has been ready to do, but has not gone into common usage. MPEG files on the other hand have for a long time been used with internal accessibility tracks and thus frameworks and players are in place to decode such tracks and do something sensible with them. This is not so much the case for Ogg.

For example, a current VLC build installed on Windows will display captions, because Ogg Kate support is activated. A current VLC build on any other platform, however, has Ogg Kate support deactivated in the build, so captions won’t display. This will hopefully change soon, but we have to look also beyond players and into media frameworks – in particular those that are being used by the browser vendors to provide Ogg support.

Multitrack Ogg in Browsers
Hopefully gstreamer (which is what Opera uses for Ogg support) and ffmpeg (which is what Chrome uses for Ogg support) will expose all available tracks to the browser so they can expose them to the user for turning on and off. Incidentally, a multitrack media JavaScript API is in development in the W3C HTML5 Accessibility Task Force for allowing such control.

The current version of Firefox uses liboggplay for Ogg support, but liboggplay’s multitrack support has been sketchy this far. So, Viktor Gal – the liboggplay maintainer – and I sat down at FOMS/LCA to discuss this and Viktor developed some patches to make the demo player in the liboggplay package, the glut-player, support the accessibility use cases.

I applied Viktor’s patch to my local copy of liboggplay and I am very excited to show you the screencast of glut-player playing back a video file with an audio description track and an English caption track all in sync:

elephants_dream_with_audiodescriptions_and_captions

Further developments
There are still important questions open: for example, how will a player know that an audio description track is to be played together with the main audio track, but a dub track (e.g. a German dub for an English video) is to be played as an alternative. Such metadata for the tracks is something that Ogg is still missing, but that Ogg can be extended with fairly easily through the use of the Skeleton track. It is something the Xiph community is now working on.

Summary
This is great progress towards accessibility support in Ogg and therefore in Web browsers. And there is more to come soon.


February 19, 2010 01:57 AM

-----

February 18, 2010

Roger Barnes

Photo of the day - 19 Feb 2010 - Goa, India

Goa, India
Goa, India


February 18, 2010 09:10 PM

Silvia Pfeiffer

How to display seeked position for HTML5 video

Recently, I was asked for some help on coding with an HTML5 video element and its events. In particular the question was: how do I display the time position that somebody seeked to in a video?

Here is a code snipped that shows how to use the seeked event:


<video onseeked="writeVideoTime(this.currentTime);" src="video.ogv" controls></video>
<p>position:</p><div id="videotime"></div>
<script type="text/javascript">
// get video element
var video = document.getElementsByTagName("video")[0];
function writeVideoTime(t) {
document.getElementById("videotime").innerHTML=t;
}
</script>

Other events that can be used in a similar way are:

Please refer to the actual event list in the specification for more details and more accurate information on the events.


February 18, 2010 04:29 AM

-----

February 17, 2010

Roger Barnes

Photo of the day - 18 Feb 2010 - Fergusson Falls, Overland Track, Tasmania

Fergusson Falls, Overland Track, Tasmania
Fergusson Falls, Overland Track, Tasmania

After exiting from these falls, I managed to slip on the track and land on my knee, bruising it quite badly. Fortunately, I was still able to walk. Once I got back to my pack, I put the camera away and focussed on getting through the next 5kms to the next hut and catching up with the rest of the group.


February 17, 2010 08:38 PM

Russell Coker

Can the NBN Ever Break Even?

I previously wrote about how the National Broadband Network (NBN) seems more suited to porn delivery than regular Internet use [1]. It doesn’t seem to be of much use really. In a particularly insightful comment John Hughes suggested that the real purpose would be TV delivery. The ABC is currently delivering 640*360 resolution MPEG4 [...]


February 17, 2010 09:48 AM

-----

February 16, 2010

Russell Coker

Would you Short-Change a Pedophile?

For some time the film industry has been running an anti-piracy campaign with slogans such as “you wouldn’t steal a car” [1] in an attempt to draw a false analogy between downloading a movie and stealing a significant and valuable object – the modern equivalent to being a “horse thief“. One of the many [...]


February 16, 2010 09:48 PM

Roger Barnes

Photo of the day - 17 Feb 2010 - Goa, India

Goa, India
Goa, India


February 16, 2010 08:46 PM

Russell Coker

National Broadband/Porn Network

Currently we have a new “National Broadband Network” under construction in Australia [1]. It is going to cost $43,000,000,000 which is $5,000 per household. It is designed to deliver 100Mb/s speeds to most homes – that is the homes that can currently get more than 8Mb/s through ADSL2+ or cable connections. The question is, [...]


February 16, 2010 09:48 AM

Rusty

Followup: lrzip

Mikael noted in my previous post that Con Kolivas’s lrzip is another interesting compressor.  In fact, Con has already done a simple 64-bit enhance of rzip for lrzip, and on our example file it gets 56M vs 55M for xz (lrzip in raw mode, followed by xz, gives 100k worse than just using lrzip: lrzip already uses lzma).

Assuming no bugs in rzip, the takeaway here is simple: rzip should not attempt to find matches within the range that the backend compressor (900k for bzip2 in rzip, 32k for gzip, megabytes for LZMA as used by lrzip).  The backend compressor will do a better job (as shown by similar results with lrzip when I increase the hash array size so it finds more matches: the resulting file is larger).

The rzip algorithm is good at finding matches over huge distances, and that is what it should stick to.  Huge here == size of file (rzip does not stream, for this reason).  And this implies only worrying about large matches over huge distances (the current 32 byte minimum is probably too small).  The current version of rzip uses an mmap window so it never has to seek, but this window is artificially limited to 900MB (or 60% of mem in lrzip).   If we carefully limit the number of comparisons with previous parts of the file, we may be able to reduce them to the point where we don’t confuse the readahead algorithms and thus get nice performance (fadvise may help here too) whether we are mmaped or seeking.

I like the idea that rzip should scale with the size of the file being compressed, not make assumptions about today’s memory sizes.  Though some kind of thrash detection using mincore might be necessary to avoid killing our dumb mm systems :(


February 16, 2010 01:21 AM

Sam Johnston

Announcing OpenECP: Open Elastic Computing Platform

I am pleased to announce the immediate availability of the Open Elastic Computing Platform (OpenECP)&nbsp;Version 4.0 Alpha (openecp-4.0alpha.tar.gz), provisionally tested on Debian GNU/Linux 5.0&nbsp;(screenshots). This is an open source fork of the Enomaly ECP&nbsp;product following its abrupt commercialisation in November 2009, which resolves a number of serious security vulnerabilities. For more information refer to: http://www.openecp.org/OpenECP is a web-based management platform for Linux-based hypervisors including KVM and Xen which can be used to create "public" and "private" cloud computing environments. It will always be freely available under the Affero General Public License v3 or similar. Features Xen, KVM, Qemu, OpenVZ, Amazon EC2 support Multiple OpenECP server support RESTful Web Services API Dashboard with metering, chargeback Automated virtual machine (VM) deployment Support Technical support is provided by the community, however as an open source product anyone is free to support and extend it. Background This release was forked from the most recent version of Enomaly ECP as at 2010-02-09 (3.0.4 with a number of additional revisions), as distributed under the Affero GPL v3 by Enomaly, Inc. In order to avoid any potential intellectual property issues, all references to Enomaly™ have been scrubbed from the distribution (in the same way that references to RedHat have been purged from CentOS). The unmodified Enomaly ECP code (enomaly-ecp-3.0.4.1.tar.gz) is also available along with a non-maintainer release which resolves all known security issues (enomaly-ecp-3.0.4.2.tar.gz) as it appears that Enomaly have no plans to address these outstanding issues. Update: Enomaly have responded with this comparison chart (however&nbsp;this changelog proves a common lineage):


February 16, 2010 01:20 AM

-----

February 15, 2010

Sam Johnston

Trend Micro abandons Intercloud™ trademark application

Just when I thought we were going to be looking at another trademark debacle not unlike Dell's attempt at "cloud computing" back in 2008 (see Dell cloud computing™ denied) it seems luck is with us in that Trend Micro have abandoned their application #77018125 for a trademark on the term Intercloud (see NewsFlash: Trend Micro trademarks the Intercloud™). They had until 5 February 2010 to file for an extension and according to USPTO's Trademark Document Retrieval system they have now well and truly missed the date (the last extension was submitted at the 11th hour, at 6pm on the eve of expiry).

Like Dell, Trend Micro were issued a "Notice of Allowance" on 5 August 2008 (actually Dell's "Notice of Allowance" for #77139082 was issued less than a month before, on 8 July 2008, and cancelled just afterwards, on 7 August 2008). Unlike Dell though, Trend Micro just happened to be in the right place at the right time rather than attempting to lay claim to an existing, rapidly developing technology term ("cloud computing").

Having been issued a Notice of Allowance both companies just had to submit a Statement of Use and the trademarks were theirs. With Dell it was just lucky that I happened to discover and reveal their application during this brief window (after which the USPTO cancelled their application following widespread uproar), but with Trend Micro it's likely they don't actually have a product today with which to use the trademark.

A similar thing happened to Psion late 2008, who couldn't believe their luck when the term "netbook" became popular long after they had discontinued their product line by the same name. Having realised they still held an active trademark, they threatened all and sundry over it, eventually claiming Intel had "unclean hands" and asking for $1.2bn, only to back down when push came to shove. One could argue that as we have "submarine patents", we also have "submarine trademarks".

In this case, back on September 25, 2006 Trend Micro announced a product coincidentally called "InterCloud" (see Trend Micro Takes Unprecedented Approach to Eliminating Botnet Threats with the Unveiling of InterCloud Security Service), which they claimed was "the industry’s most advanced solution for identifying botnet activity and offering customers the ability to quarantine and optionally clean bot-infected PCs". Today's Intercloud is a global cloud of clouds, in the same way that the Internet is a global network of networks - clearly nothing like what Trend Micro had in mind. It's also both descriptive (a portmanteau describing interconnected clouds) and generic (in that it cannot serve as a source identifier for a given product or service), which basically means it should be found ineligible for trademark protection should anyone apply again in future.

Explaining further, the Internet has kept us busy for a few decades simply by passing packets between clients and servers (most of the time). It's analogous to the bare electricity grid, allowing connected nodes to transfer electrical energy between one another (typically from generators to consumers but with alternative energy sometimes consumers are generators too). Cloud computing is like adding massive, centralised power stations to the electricity grid, essentially giving it a life of its own.

I like the term Intercloud, mainly because it takes the focus away from the question of "What is cloud?", instead drawing attention to interoperability and standards where it belongs. Kudos to Trend Micro for this [in]action - whether intentional or unintentional.



February 15, 2010 10:15 PM

Russell Coker

Links February 2010

Popular Mechanics has a good article about 911 [1]. Experts in all the relevant fields were consulted to debunk popular myths. It’s an old article but I hadn’t read it before and learned a lot. Former CIA analyst Raw McGovern and former FBI attorney/special agent Coleen Rowley, a colleague in Veteran Intelligence Professionals for [...]


February 15, 2010 09:48 PM

Roger Barnes

Photo of the day - 16 Feb 2010 - D'Alton Falls, Overland Track, Tasmania

D'Alton Falls, Overland Track, Tasmania
D'Alton Falls, Overland Track, Tasmania


February 15, 2010 08:52 PM

Russell Coker

Will Aliens be Alien?

The Telegraph has a silly article titled “Aliens are likely to look and behave like us” [1]. It’s based on the ideas of Professor Simon Conway Morris [2] who is a big fan of evolutionary convergence. He seems to believe that humans evolved in a way that is close to optimal and that [...]


February 15, 2010 09:48 AM

Rusty

xz vs rzip

As the kernel archive debates replacing .bz2 files with .xz, I took a brief glance at xz. My test was to take a tarball of the linux kernel source (made from a recent git tree, but excluding the .git directory):

     linux.2.6.tar 395M

For a comparison, bzip2 -9, rzip -9 (which uses bzip2 after finding distant matches), and xz:

     linux.2.6.tar.bz2 67M
     linux.2.6.tar.rz 65M
     linux.2.6.tar.xz 55M

So, I hacked rzip with a -R option to output non-bzip’d blocks:

     linux.2.6.tar.rawrz 269M

Xz on this file simulates what would happen if rzip used xz instead of libbz2:

     linux.2.5.tar.rawrz.xz 57M

Hmm, it makes xz worse!  OK, what if we rev up the conservative rzip to use 1G of memory rather than 128M max?  And the xz that?

     linux.2.6.tar.rawrz 220M
     linux.2.6.tar.rawrz.xz 58M

It actually gets worse as rzip does more work, implying xz is finding quite long-distance matches (bzip2 won’t find matches over more than 900k).  So, rzip could only have benefit over xz on really huge files: but note that current rzip is limited on filesize to 4G so it’s a pretty small useful window.


February 15, 2010 07:56 AM

Robert Collins

Yay Dell-with-Ubuntu down under

Dell has been offering Ubuntu on selected models for a while. I had however nearly given up hope on being able to buy one, because they hadn’t started doing that in Australia. I am very glad to see this has changed though – check out their notebook page. Not all models yet, but a reasonable [...]


February 15, 2010 05:48 AM

Mark Greenaway

Problems only nerds have

I'm so tired from the weekend, I read a couple of subscripts as if they were just normal script. So ln(x_k)/n became k*ln(x_k)/n in my summation over k. That didn't work very well.


February 15, 2010 04:03 AM

-----

February 14, 2010

Russell Coker

I Just Bought a new Thinkpad and the Lenovo Web Site Sucks

I’ve just bought a Thinkpad T61 at auction for $AU796. My Thinkpad T41p has cooling problems which I have previously described[1]. It’s also started to rattle a bit when I hold it upside down since I took it apart so I guess I didn’t do a great job at trying to fix it [...]


February 14, 2010 09:48 PM

Roger Barnes

Photo of the day - 15 Feb 2010 - Goa, India

Goa, India
Goa, India


February 14, 2010 08:53 PM

Russell Coker

Which People are Stupid on the Internet?

I don’t think that the answer is “everyone” or even “everyone other than my geeky friends“, but obviously it is a large number of people. Many people apparently type “facebook” into Google and try to login to the first thing that they see, if it happens to not be Facebook then they whine – this became [...]


February 14, 2010 09:48 AM

-----

February 13, 2010

Roger Barnes

Photo of the day - 14 Feb 2010 - Mt Ossa Track, Overland Track, Tasmania

Mt Ossa Track, Overland Track, Tasmania
Mt Ossa Track, Overland Track, Tasmania

With the weather diminishing to a light shower tending to drizzle, there wasn't much more photography. We set up our tents, prefering the rain over the cramped conditions in the hut, had some food, and went to sleep.


February 13, 2010 08:55 PM

Mark Greenaway

Flexibility/weird muscle imbalances

As I've been doing more martial arts/active stuff, my body awareness has been increasing. Recently I've realised that when I try to stretch my left leg, I reflexively tilt my spine to the right to reduce the difficulty of the stretch, which lessens the effectiveness of the stretch (and the discomfort!). I think I got some sort of injury in my childhood and learned to compensate, and I've probably been doing it ever since. So now that I'm more aware of it, I can start to fix it.


February 13, 2010 09:57 AM

-----

February 12, 2010

Roger Barnes

Photo of the day - 13 Feb 2010 - Goa, India

Goa, India
Goa, India


February 12, 2010 09:05 PM

Silvia Pfeiffer

Audio Track Accessibility for HTML5

I have talked a lot about synchronising multiple tracks of audio and video content recently. The reason was mainly that I foresee a need for more than two parallel audio and video tracks, such as audio descriptions for the vision-impaired or dub tracks for internationalisation, as well as sign language tracks for the hard-of-hearing.

It is almost impossible to introduce a good scheme to deliver the right video composition to a target audience. Common people will prefer bare a/v, vision-impaired would probably prefer only audio plus audio descriptions (but will probably take the video), and the hard-of-hearing will prefer video plus captions and possibly a sign language track . While it is possible to dynamically create files that contain such tracks on a server and then deliver the right composition, implementation of such a server method has not been very successful in the last years and it would likely take many years to roll out such new infrastructure.

So, the only other option we have is to synchronise completely separate media resource together as they are selected by the audience.

It is this need that this HTML5 accessibility demo is about: Check out the demo of multiple media resource synchronisation.

I created a Ogg video with only a video track (10m53s750). Then I created an audio track that is the original English audio track (10m53s696). Then I used a Spanish dub track that I found through BlenderNation as an alternative audio track (10m58s337). Lastly, I created an audio description track in the original language (10m53s706). This creates a video track with three optional audio tracks.

I took away all native controls from these elements when using the HTML5 audio and video tag and ran my own stop/play and seeking approaches, which handled all media elements in one go.

I was mostly interested in the quality of this experience. Would the different media files stay mostly in sync? They are normally decoded in different threads, so how big would the drift be?

The resulting page is the basis for such experiments with synchronisation.

The page prints the current playback position in all of the media files at a constant interval of 500ms. Note that when you pause and then play again, I am re-synching the audio tracks with the video track, but not when you just let the files play through.

I have let the files play through on my rather busy Macbook and have achieved the following interesting drift over the course of about 9 minutes:

Drift between multiple parallel played media elements

You will see that the video was the slowest, only doing roughly 540s, while the Spanish dub did 560s in the same time.

To fix such drifts, you can always include regular re-synchronisation points into the video playback. For example, you could set a timeout on the playback to re-sync every 500ms. Within such a short time, it is almost impossible to notice a drift. Don’t re-load the video, because it will lead to visual artifacts. But do use the video’s currentTime to re-set the others. (UPDATE: Actually, it depends on your situation, which track is the best choice as the main timeline. See also comments below.)

It is a workable way of associating random numbers of media tracks with videos, in particular in situations where the creation of merged files cannot easily be included in a workflow.


February 12, 2010 10:44 AM

Rusty

Code review: libreplace

libreplace is the SAMBA library (also used in ctdb) to provide working implementations of various standard(ish) functions on platforms where they are missing or flawed.  It was initially created in 1996 by Andrew Tridgell based on various existing replacement hacks in utils.c (see commit 3ee9d454).

The basic format of replace.h is:

    #ifndef HAVE_STRDUP
    #define strdup rep_strdup
    char *rep_strdup(const char *s);
    #endif

If configure fails to identify the given function X, rep_X is used in its place.  replace.h has some such declarations, but most have migrated to the system/ include directory which has loosely grouped functions by categories such as dir.h, select.h, time.h, etc.  This works around the “which header(s) do I include” problem as well as guaranteeing specific functions.

Other than reading this code for a sense of Unix-like paleontology (and it’s so hard to tell when to remove any of these helpers that cleanups are rare) we can group replacements into three categories:

  1. Helper functions or definitions which are missing, eg. strdup or S_IRWXU.
  2. “Works for me” hacks for platform limitations, which make things compile but are not general, and
  3. Outright extensions, such as #define ZERO_STRUCT(x) memset((char *)&(x), 0, sizeof(x)) or Linux kernel inspired likely()

Since it’s autoconf-based, it uses the standard #ifdef instead of #if (a potential source of bugs, as I’ve mentioned before).  I’ll concentrate on the insufficiently-general issues which can bite users of the library, and a few random asides.

I’m not sure Samba compiles on as many platforms as it used to; Perl is probably a better place for this kind of library to have maximum obscure-platform testing. But if I were to put this in CCAN, this would make an excellent start.


February 12, 2010 08:53 AM

-----

February 11, 2010

Roger Barnes

Photo of the day - 12 Feb 2010 - Mt Ossa Track, Overland Track, Tasmania

Mt Ossa Track, Overland Track, Tasmania
Mt Ossa Track, Overland Track, Tasmania


February 11, 2010 09:03 PM

-----

February 10, 2010

Roger Barnes

Photo of the day - 11 Feb 2010 - Goa, India

Goa, India
Goa, India


February 10, 2010 09:22 PM

Matt Palmer

Using Virgin Mobile Broadband with wvdial

File Under: Stuff I'm guaranteed to forget if I don't write it down

I just went a bit wild and decided to get myself some mobile broadband love -- I'm finding that I crave a bit of light 'net when I'm out and about, and an impending change in circumstances will mean that I'm out and about a lot more than I am currently.

I have:

My wvdial.conf stanza looks like:

[Dialer virgin]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP" "VirginBroadband"
Stupid Mode = 1
ISDN = 0
Phone = *99#
Modem = /dev/ttyUSB0
Modem Type = USB Modem
Username = irrelevant
Dial Command = ATDT
Password = irrelevant
Baud = 460800

I also had to disable CHAP (by putting -chap in /etc/ppp/options, although I suspect the same would have worked in /etc/ppp/peers/wvdial).

After that, a simple sudo wvdial virgin and I was away.

Scarily enough, there was actually some useful information on the Virgin support site regarding the settings, which helped me confirm that I was on the right track. I have no doubt that the universe will find some alternate means of punishing me down the line.


February 10, 2010 06:48 AM

Mark Greenaway

Dear Judoka of the world,

If you're going to be doing ground fighting/ne waza, please brush your teeth.

Your pal,
Mark


February 10, 2010 01:16 AM

-----

February 09, 2010

Roger Barnes

Photo of the day - 10 Feb 2010 - Goa, India

Goa, India
Goa, India


February 09, 2010 08:45 PM

Benno

Android Emulator Internals — Bus Scanning

Wow, I can’t believe it has been over two years since I last wrote about Android’s for of the QEMU emulator. Turns out there have been some changes since I last looked at it.

The most important is that the Android emulator no longer has a fixed layout of devices in the physical memory address space. So, while it may have previously been the case that the event device was always at 0xff007000, now it might be at 0xff008000, or 0xff009000, depending on what other devices have been configured for a particular device configuration.

Now, if a device may exist at some random physical address, how does the OS know how to setup the devices drivers? Well, as I’m sure you’ve guessed, the addresses and really random, they are located at page-offset addresses through a restricted range of memory. OK, so how does the OS know what the range is? Well, there is the goldfish_device_bus device.

Basically, this device provides a mechanism to enumerate the devices on the bus. The driver writes PDEV_BUS_OP_INIT to the PDEV_BUS_OP register, the goldfish_device_bus then raises an interrupt. The driver the reads the PDEV_BUS_OP register. Each time the value is PDEV_BUS_OP_ADD_DEV, the driver can read the other registers such as PDEV_BUS_IO_BASE, PDEV_BUS_IO_SIZE, PDEV_BUS_IRQ, to determine the properties of the new device. It continues doing this until it reads a PDEV_BUS_OP_DONE, which indicates the bus scan has finished.

The driver can determine what type of device it has found by writing a pointer to the PDEV_BUS_GET_NAME register. When this happens the device writes an the device’s name (as an ASCII string) to the pointer.

Linux uses these strings to perform device to driver matching as described in the Platform Devices and Drivers document.


February 09, 2010 08:14 PM

Russell Coker

Web Site Validation

Over the last few days I’ve got this blog and my documents blog to conform to valid XHTML according to the W3C validation service [1]. One significant change that I made was to use lower-case for HTML tags. For about 15 years I’ve been using capitals for tags to make them stand out from content [...]


February 09, 2010 12:48 PM

-----

February 08, 2010

Roger Barnes

Photo of the day - 09 Feb 2010 - Reptilian

Reptilian
Reptilian


February 08, 2010 08:40 PM

Russell Coker

Security and Hiring

The main sources of information used when hiring someone are their CV, the interview, and references. CV The CV is written by the applicant or sometimes for the applicant. Naturally it says only good things, if a CV notes no skill in a particular area then it may be used to exclude an employee from consideration. [...]


February 08, 2010 12:48 AM

-----

February 07, 2010

Roger Barnes

Photo of the day - 08 Feb 2010 - Goa, India

Goa, India
Goa, India


February 07, 2010 08:59 PM