The problem with open source is that the only good customers are the Fortune-500-type companies, and they all have an internal IT department. If you are a dollar cheaper and a day faster than the internal IT department of these various companies you have a potential market in the billions of dollars. If your costs go up to the customer by $2 so that you’re now a dollar more expensive, and your delivery time goes up by two days so that you are now a day later than they could get it done internally, your potential market goes to zero. You go from potentially billions of dollars, because they can save a little money and a little time — there are a lot of big companies out there — to a product that nobody wants.
— Philp Greenspun, ITconversations
Later this month, the BBC will launch a pilot project that could lead to all television programmes being made available on the internet. Viewers will be able to scan an online guide and download any show. The plan is to make all television programmes from the previous week available on the internet, using a programme guide similar to that already used on digital television.
Programmes would be viewed on a computer screen or could be burned to a DVD and watched on a television set.
The iMP project is driven by research showing that people increasingly find it difficult to align their highly valued free time with fixed television schedules. Homes with personal video recorders (PVRs), like Sky Plus, already “time-shift” 70 per cent of the programmes they watch to more convenient viewing times.
“The fundamental shift in the music industry and the audio-radio industry to people consuming what they want, how they want, when they want, has given us a pretty clear idea that this is something that’s going to happen to video.”
By launching iMP, the BBC hopes to avoid being left at the mercy of a software giant such as Microsoft, which could try to control the gateway to online television.
— The Independent
Now we just need the commercial channels to find a way of doing the same thing
As of this morning there are just under 250 modules on CPAN matching ‘::Simple’. I take a certain amount of blame for this. I’ve released a couple myself, and my kitchen has a credit as the birthplace of Test::Simple.
But I like to think that in those cases the module really does deserve the ‘simple’ moniker. Perl’s spreadsheet modules are notoriously complex, and there’s no need to jump through all the hoops of two-dimensional cell access and data vs. formatting if all you want to do is read or write each row as an array. Similarly, Test::Simple has one trivial test function that is all a beginning test-writer needs to get into the way of writing tests, and there’s a clear migration path up to Test::More.
But somewhere along the line ::Simple seems to have mutated into ::I::Don’t::Like::The::Normal::Syntax. Take DBD::mysql::SimpleMySQL. Ignoring the fact that it’s in completely the wrong namespace as it’s not a driver, I’m at a complete loss to see how it’s “simpler” than, well, anything really.
Now, I’m obviously biased, but even the example in the docs makes my brain hurt:
my $select = ['Passwd.*', 'UsrGrp.UsrGrpName'];
my $from = ['Passwd'];
my $joins = [];
push @{$joins}, join_struct("PasswdHostGrp", "Passwd.PasswdID", "PasswdHostGrp.PasswdID");
push @{$joins}, join_struct("UsrGrp", "Passwd.PrimaryGroupID", "UsrGrp.UsrGrpID");
my $wheres = "PasswdHostGrp.HostGrpID IN ('group1', 'group2')";
my $arrayref = dbselect_array($dbh, build_select($select, $from, $joins, $wheres, 0))
I can understand trying to make it slightly easier to build SQL dynamically, or trying of provide a way to abstract and package up SQL patterns, but I really don’t understand programmers’ fascination with trying to completely reinvent SQL. The basics are really quite straightforward, especially at the level that these modules are able to ‘hide’ from you. And it’s going to be much simpler and more powerful when you eventually need to do something considerably more complex. There’s really no substitute for learning how to use SQL if you’re going to work with databases.
In fact I’d say that trying to reimplement SQL is a move in exactly the wrong direction. Especially in a dynamic and flexible language like Perl, it’s good practice to invent little mini-languages for the domain in which you’re working. But, of course when working with databases there’s no need to invent the language – it already exists!
Somehow I doubt this will stop the proliferation of modules trying to do away with SQL. Soon we’ll probably have as many database abstraction libraries as we do templating systems…