OOXML: Nobody knows (or cares) what it is for or why.
I’ve not penned much on OOXML for quite a while mainly because there really doesn’t seem to be much interest in it outside of a small circle of Microsoft lackeys and puppy dogs. Even MS themselves are making more noise about implementing native ODF support with the just-released SP2 for Office 2007.
Anyway – two blog posts crept on my radar today that are worthy of mention and the cause for my writing at all.
This one from the ever vigilant and articulate Glyn Moody about how no-one seems to be that interested in OOXML any more and some possible reasoning behind the apparent apathy.
The other quite literally had me in hysterics (ROTFL). It’s not the post so much as the comments attached to it. Apparently those few who remain interested in OOXML enjoy nothing more than discussing between themselves what OOXML is for and how various versions of the notorious specification should be augmented/updated or even simply maintained.
The debate is on such things as should the “Transitional” format be forward or backward looking and if the later then it shouldn’t be Transitional but Strict. Hmmm – yes I hear you say gripping stuff. Here’s a snippet from one of the comments just to whet your appetite:
So, ECMA-376 (1ed) is “looking back”, but ISO-29500 Transitional is not simply “looking back”: it is a “mutant”, that is both looking backward and looking forward. ISO 29500 Strict is indeed “looking forward”.
For those readers who “have a life” and missed all the excitement of 2007/8 a brief synopsis of the history goes something like this:
Microsoft implemented OOXML (their XML based file format which is essentially a binary dump of the memory footprint of your document wrapped in an amazingly obscure and illegible XML schema) in Office 2007. You may have even received the odd file with a .docx or .xlsx extension. Then some kind of panic happened in MS and they decided that because Governments and other public bodies were asking for ODF (ISO/IEC 26300 Open Document Format supported by many applications including OpenOffice.org) they’d better get OOXML standardised too. So in a rush job, Microsoft’s specification publicist ECMA took the format used on Office 2007, got the developer documentation and wrote a bit more stuff around it and published it as ECMA 376. It then got submitted to the ISO for “fast tracking”. Oh yes, did I mention the “specification” was over 6000 pages long? Needless to say there was lots of argy bargy back and forth, the document got changed quite a bit, lots of money changed hands, loads of small countries from the developing world suddenly got very interested in XML Document Specifications and decided to become paid up members of the standards bodies and the specification scraped through about a year ago to become probably the worst example of a supposed International standard the world has ever seen (IMHO).
Do be advised also that today, as far as I am aware. there is no currently available end-user product (free or commercial) for reading and writing ISO IEC 29500 (OOXML) files. Microsoft Office 2007 doesn’t; it supports something similar to the first edition of ECMA 376 but probably not quite the same and I’m not sure anyone really cares anyway.
But do go and read the discussion on this blog post. Even if you don’t really understand it, the discussion of such irrelevant minutiae and semantics really does show to me that even those who support and think it is a useful and worthwhile specification don’t really know what it is for…
Here’s a bit more just to highlight the trouble they are all having:
Thanks for the clarification. “Transitional”, at present, is definitely looking like the superset of “Strict” the way you explained. The word “transitional”, however says to be that it is temporary. If we insist “transitional” will always be the superset, then there is no way “Transitional” will ever be a temporary thing.
Moreover, with the superset definition, it means anything that makes it into “strict” will automatically make it into “transitional”, which will make Brown’s statement that the working group is considering mirroring new features into “transitional” moot.
I will say “transitional” is the superset of “strict”, with a time limit imposed. Therefore, for a limited time only, it can be “looking forward”. What is happening is someone forgotten to specify the time limit, which leads to the discussion whether new features in “strict” should be mirrored into “transition”.
To me, it does not make sense to put new features introduced in Office 14 into “Transitional”. “Strict”? Yes, but not “transitional” since it unnecessarily extended the time frame for “transitional”.
One question still remains, how does one add new features to Transitional or Strict given the charter can be read to exclude new features introduced in future version of MS Office, including Office 14?
How to remove Mono from Ubuntu 9.04 Jaunty Jackalope [Updated]
It’s that time again
Fortunately, Mono is still quite trivial to remove and has not, apparently, increased its infiltration of the Ubuntu/Gnome code base as one might have been led to believe if you’d read this on the 1st April:
“Mark Shuttleworth, the Benevolent Dictator for Life of the popular Ubuntu Linux distro, has announced his plans to rewrite all of Gnome, X11 and the Linux kernel using the Mono platform…
Ubuntu is Linux for human beings, and, believe it or not, Microsoft employees are human beings too. We think we need to work closer with Microsoft to ensure heterogenous data silo paradigm middleware enhancements can continue to grow. Oh, and they gave me this nice T-shirt.”
As was the case with 8.10 Intrepid Ibex, there are just two applications in the default Jaunty desktop install which depend on Mono: F-Spot and Tomboy.
As an alternative to F-Spot, I happily use the Gnome viewer gThumb for managing the import and deletion of images from our digital cameras. I actually think it is better for a simple reason. It allows me to copy the images off my camera and delete them from the camera at the same time. The last time I tried F-Spot (admittedly quite a while ago now) I could never find a setting to do this.
And for note taking I have been happily using notecase. Although I note [pun intended] that the developer has stopped work on the free version himself the code is available under a BSD license so if anyone wants to pick it up and run with it they can. Anyway – notecase works fine for me and is still in the repos.
There are many other note taking type applications too. Here is what looks to be quite a comprehensive (albeit old) list of them: http://linuxappfinder.com/utilities/notes
But this is just GREAT!

Whilst I was preparing this article, I came across this on April 1st too. I actually did think it was a joke.
However it seems not; a bored and unemployed (ex Novell/Suse) developer, Hubert Figuière, is porting [has ported] Tomboy to C++ and calls it Gnote.
You can now use a virtually identical application to Tomboy without Mono! (This is still an early development so YMMV).
There is a PPA for Ubuntu here very kindly organised by Vadim Peretokin. I installed it on my intrepid desktop just to see it and it looks exactly the same as Tomboy!
Even better, as it isn’t built on top of Mono, it has fairly meagre requirements too:
sudo apt-get install gnote
[sudo] password for alord:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed
gnote libboost-filesystem1.34.1 libboost-regex1.34.1 libxml++2.6-2
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
Need to get 1130kB of archives.
After this operation, 3400kB of additional disk space will be used.
Do you want to continue [Y/n]? Y
3.4MB vs. 54.0MB. That’s a decent comparison I think.
OK. The moment you’ve all been waiting for…
To remove that patent-trap-masquerading-as-free-software from your Shiny New Ubuntu Jaunty system simply type:
sudo apt-get purge libmono0 mono-common libgdiplus
[UPDATE]
Thanks to a keen eyed commenter, Lupine, we note that there is another package that lurks hidden and must be explicitly removed. I have added libgdiplus to this command since first publishing. To remove it individually just enter sudo apt-get purge libgdiplus. Thanks Lupine.
[/UPDATE]
Then watch what happens next…
The following packages will be REMOVED
f-spot* libart2.24-cil* libflickrnet2.1.5-cil* libgconf2.24-cil* libglade2.0-cil* libglib2.0-cil* libgmime2.2a-cil* libgnome-keyring1.0-cil* libgnome-vfs2.24-cil* libgnome2.24-cil* libgnomepanel2.24-cil* libgtk2.0-cil* libmono-addins-gui0.2-cil* libmono-addins0.2-cil* libmono-cairo2.0-cil* libmono-corlib2.0-cil* libmono-data-tds2.0-cil* libmono-data2.0-cil* libmono-getoptions2.0-cil* libmono-i18n2.0-cil* libmono-posix2.0-cil* libmono-security2.0-cil* libmono-sharpzip2.84-cil* libmono-sqlite2.0-cil* libmono-system-data2.0-cil* libmono-system-web2.0-cil* libmono-system2.0-cil* libmono0* libmono2.0-cil* libndesk-dbus-glib1.0-cil* libndesk-dbus1.0-cil* mono-2.0-gac* mono-2.0-runtime* mono-common* mono-gac* mono-jit* mono-runtime* tomboy*
0 upgraded, 0 newly installed, 38 to remove.
After this operation, 54.0MB disk space will be freed.
Do you want to continue [Y/n]?
Oh yes please…
To wrap up this post, we’ve been using Jaunty on various devices for some time now. It’s been really stable, boots very fast and is probably the best desktop operating system you can get anywhere and for any price right now. Thanks to Canonical and the rest of the amazing FOSS Community for making Ubuntu and this release happen.
Our Libertus Server Appliances, with the Mono-free Jaunty 9.04 server edition, are available from today.
Does the Sun Shine at Oracle?
There’s been much coverage and speculation of what might or might not happen following the announcement that Oracle would like to buy Sun Microsystems and Sun are apparently happy to be bought by Oracle [note the deal hasn't actually happened yet].
I’ve not said much on this because, speculation is, frankly, pretty pointless. We have no idea what is going to happen in reality and I certainly do not have an ear in Larry or Jonathan’s Office. Oracle are going to pay a great deal of money for Sun and they will get a company that is is well liked by many – but not all – in the FOSS community. What do they have that Oracle want?
- Solaris – A nice operating system for servers. Important to Oracle for a number of reasons. A great deal of their database solutions run on Solaris. Open Solaris is available under an OSI approved Licence.
- Java – Almost a world in it’s own right and something that is very, very important to lots and lots of companies including Sun’s other early suitor, IBM. Personally I reckon this is Sun’s jewel-in-the-crown. Not for monetary value necessarily, but because it touches almost everyone in some way. From the Java web site: “Java powers more than 4.5 billion devices including: 800+ million PCs, 2.1 billion mobile phones and other handheld devices (source: Ovum), 3.5 billion smart cards, Set-top boxes, printers, Web cams, games, car navigation systems, lottery terminals, medical devices, parking payment stations, and more.” Java is free to use and there is the Open JDK available under the GPL.
- Lots of hardware – Are Oracle interested in this? Several commentators think not and come up with a credible scenario whereby Oracle can sell off the h/w bits and get back most of what they paid for the whole business. Here’s a nicely succinct piece as an example. That’s quite a compelling story but only time will tell. Maybe Oracle does want to expand into h/w too? Who knows. It would help it compete more against HP and IBM in areas where they were “partners” before…
- MySQL – Lots of worried voices in the blogoshpere and others keeping surprisingly quiet. Much of the mainstream MySQL code is GPL.
- OpenOffice.org – This could hold tremendous opportunity for Oracle should they wish. Take on MS? They could really hurt Microsoft’s cash cow (Office) if they decided or wanted too. OpenOffice.org is licensed under the LGPL.
Oracle is not unknown in the FOSS world. It has a number of FOSS products and projects such as their own Linux, the InnoDB engine that is used in MySQL (today they released a new embedded version, under the GPL), remember the Berkeley DB from Sleepycat Software? Yep. They have that too (OSI Approved License).
So, not much idle speculation from me. But here are few others speculating that I found interesting:
Ars Technica.
Glyn Moody.
An informed prognosticator.
SABDFL.
Matt Assay.
Please drop by any other good links that are worth reading or comments you have. But remember, there’s no point in getting wound up or anxious. Nobody really knows what is going to happen but one thing is certain if the deal goes through; the Free and Open Source Ecosystem has just landed a very big fish indeed…
Book Review: Asterisk AGI Programming with Packt
[Please Note: If you follow the book links from this site to Packt's and decide to buy *any* book from their site, we will get a small commission that we'll use towards the upkeep of our servers etc.]
As you may have read previously, I was approached by Packt Publishing to see if I would like to review their new book on AGI Programming by Nir Simionovich. Time has conspired against me to actually use it for a real project so instead I resorted to choosing it as my bedtime reading for a few days.
I’ve now read the book and first off I’d like to thank Packt for asking me. I have enjoyed it far more than I thought I would. As for how to review it, I thought I’d give my overall impression and then just go through it chapter by chapter.
It isn’t a long book – about 190 pages – which to my mind is no bad thing. It managed to concentrate on the subject and had little in the way of superfluous text and language (Apart from chapter 1 that is). The author knows his subject well and writes in a fairly informal and easy-to-read style which I personally quite liked. The meat of the book concentrates on – as you would probably guess – programming with AGI and focusses almost exclusively on using PHP. As much as I am happy around PHP, I would have liked to see some examples with alternative languages such as Python perhaps. The subtitle of the book is “Design and Develop Asterisk-based VoIP telephony platforms and services using PHP and PHPAGI” so I guess that’s why other languages don’t get much of a look in. They are mentioned here and there and there are some good links to various other libraries and open source projects. I did like the fact that he mentioned throughout the book – where necessary – the functional difference between the main versions of Asterisk (1.2, 1.4 and 1.6) and ways to deal with those differences when you come up against them.
OK – so here is my chapter-by-chapter review:
Sorry, but I didn’t really get the first chapter at all. This is a book aimed at programmers and developers and yet the first chapter was a repetitive cut-and-paste of how to build the various asterisk components from source, including lots of screen shots showing the output of things like ./configure which personally I found a bit trivial and uninteresting. I was a bit concerned that the rest of the book was going to follow suit but thankfully I was mistaken.
Chapter 2 is really good. It explains the workings of Asterisk’s dialplan and applications – the infamous extension.conf – in a very clear and understandable way. I recall when I first started to look at Asterisk and was delving into as much information on-line as I could get, the Asterisk TFOT book [pdf download] and whatever else I could find, that it was several days before the penny finally dropped. It isn’t difficult really but it isn’t quite the same as “normal” programming or scripting concepts and the language itself is far from obvious (e.g. an extension is not the phone on your desk in Asterisk’s configuration files). But then this is telephony we are talking about. Using the example of a basic IVR or AA the author examines the diaplan syntax and construction.
So I got quite a lot out of chapter 2. I thought it was well written and clear and useful. Chapter 3 develops the IVR theme further, introduces other features of the Asterisk application pool and covers the scripting language in more detail examining branching, expressions, operators and flow control. It’s a fairly short chapter but covers a good deal of ground if you are unfamiliar with Asterisk programming.
Your level of knowledge and familiarity with Asterisk will dictate what you get from this first section (Chapters 1-3). Although I have used Asterisk for a couple of years now and have felt quite comfortable with the platform’s configuration and use, I got quite a lot of new information and ideas from this early part of the book. For me, this initial part has been very useful and will be a good reference for the future. I think, though, if you are very familiar with Asterisk then you might find it a bit slow going. The book hasn’t examined AGI whatsoever up to this point and we are about a third of the way through already! The author does suggest that a coffee is a good before starting on Chapter 4 as “the journey becomes more and more complicated”…
Chapter 4 introduces the reader to AGI in a fairly gentle way and also offers 10 “rules” to help make your AGI programming more successful – they all make sense to me and will I’m sure prove to be a very useful monitoring/checking tool. Packt sent me an extract from this chapter which you are free to read here if you want to get a flavour of it.
The following chapter introduces us to some real code (PHP) and we build our first, simple AGI application. Nothing to hard, but a useful introduction into how to actually get the conversation happening between Asterisk and your script. There are couple of nice flow charts which are helpful for visualising the traffic flow back and forth between Asterisk and your script too. Again not too complicated but helpful in getting the novice AGI programmer, i.e. me, thinking about things the right way.
In chapter 6 Nir examines and recommends the use of a set of PHP classes (library) called PHPAGI. Being completely new to AGI programming I am in no position to contradict the author’s recommendation, but looking on the Sourceforge site for this library, it is quite old and has not been updated for 3 years or more. Of course that may be because it is perfect and needs no further development, or there might be other reasons but I would have really liked to have had some more discussion regarding this choice of library before continuing – just for my own piece of mind more than anything else. Perhaps if Nir reads this he could leave a comment about this? My own assumptions after reading the rest of the chapter are that the AGI interface itself is fairly simple and so – perhaps – the need for a more dynamic or complex library is just not there and this one does the job just fine. Anyway, the rest of the chapter we look at a new AGI application using the class library above and also we discover the main – and what seems to me to be a first-class – concept for building AGI applications: Atomic AGI or Particle Programming. Sounds great doesn’t it? It really does make a lot of sense. Basically it’s a bit like the traditional ideals behind Unix/Linux command line applications; write small applications that do one thing and do it well. To summarise then, in chapter 6 we are shown the author’s recommended path to AGI Nirvana through adopting some rules, and practices. It is hard for me to draw any solid conclusions from his approach as I am a novice with AGI and so have nothing by way of comparison, but it certainly seems to make a great deal of sense and is clear and well explained. Good stuff.
The remainder of the book goes a bit wider than just pure AGI. Chapters 7 and 8, examine some of the closely related applications and facilities of Asterisk. We get an overview of FastAGI (AGI over TCP) and Nir shows us some further PHP libraries that are available to assist with producing FastAGI applications. Chapter 8 offers an overview of the AMI (Asterisk Manager Interface) and some example code to get you started.
In the penultimate chapter, the reader is given a challenge: to create an application that is used in the real world – an Asterisk Call Recording Gateway. There is no code in this chapter – that’s for you to do. But Nir provides some useful guidance about the way to think about the development and plan the project itself.
And finally, chapter 10 discusses how to make sure your Asterisk applications can scale and offers several ideas and techniques to improve performance such as database query caching and using web services.
As I said at the beginning – I enjoyed reading this book much more than I thought I would. It is not overly technical and Nir has an engaging style of writing. The book is a great introduction into Asterisk programming. It is not “The Bible of Asterisk Programming” and does not set out to be. It is clearly aimed at developers who have not had much to do with Asterisk before but are familiar with traditional programming methods. I really liked the fact that it is quite short. You can read the whole book in a couple of evenings and being laid out the way it is it will become a very useful reference document for me in the future.
Nir Simionovich has a blog.
OT: Update on The Open Sourcerer’s Chillies
What seems like many moons ago, I posted a brief article about starting this year’s Chilli crop. I “planted” the seeds much earlier than usual (last day of January rather than sometime during March) and I used a different sowing technique to see if the germination could be speeded up. Here’s that first post with a couple of pictures of how I started the seeds off. I said back then that I would also plant some in the more traditional manner, but to be honest I had such excellent results from this trial I did not need to start off any more seedlings at all.

This is how they look now after just 10 weeks. I am delighted with their progress. The germination on soggy toilet paper in the airing cupboard worked really well compared to simply planting the seeds in potting compost. I found that some of the seeds had germinated within a week and most had come up within 2 or 3 weeks. By comparison, pot sown seeds have usually taken anywhere from 4 to 6 weeks to just show.
As soon as the seed started to sprout I carefully cut it, and a small section of the paper it was growing on, from the rest and planted it in a small 3″ pot with regular seed/potting compost. Within 4 weeks all the seedlings were potted on and growing well. Only a few seeds failed to germinate completely, but that is to be expected. I think from 30 odd seeds I have ended up with 23 good strong plants.
Some of the most vigorous have already been potted on into 4″ pots. There are about a dozen still to be done. They all look very healthy and happy (if a plant can actually look happy that is).

These photos were taken today in our greenhouse. The plants get taken out when the day is sunny and the greenhouse is warm. On cloudy and/or cold days they have remained indoors on a south facing window sill in the living room. By the end of April I will start to harden them off and by mid-May I would expect them to have taken up permanent residence in the greenhouse.
One variety I am especially keen to grow and eat this year is the Naga Bih Jolokia. Here is one of the 4 plants of that variety looking especially radiant. For those who were not aware, the Bih Jolokia has been recorded as the hottest Chilli in the world.
This is the best looking crop of plants, this early on the year, that I have ever grown. I’m now quite hopeful of a good crop this year although a great deal will depend on the sunlight we get through the summer months. But hopefully in a few more months time I’ll have a couple more photos of fruit laden chilli plants to show off!
rdiff-backup and APT-Pinning
I ran into a problem yesterday. Having upgraded Lobsang to the soon-to-be-released Jaunty, my server, running 8.10 failed to backup my desktop machine using rdiff-backup. It looks like it is caused by a conflict between the two versions of rdiff-backup.
Thanks to a comment from Defenestration I think something called APT-Pinning might be a good solution where you have multiple versions of Ubuntu. So here’s a question for all you Ubunteros out there:
Would APT-Pinning be a good solution here? If yes, which way round:
* Pin rdiff-backup to the oldest version in your network,
* or run the latest rdiff on the older Ubuntu releases?
Am looking forward to your responses.


