Extra, Extra – Read All About It: Nearly All Binary Searches and Mergesorts are Broken

If you follow many software or computer science related blogs you may have already seen the article linked below. I’m going to link to it again anyway because everyone who is involved in software should read it.

Extra, Extra – Read All About It: Nearly All Binary Searches and Mergesorts are Broken

The general lesson that I take away from this bug is humility: It is hard to write even the smallest piece of code correctly, and our whole world runs on big, complex pieces of code.

Dispatches

CBC has recently made some of its excellent radio programming available as podcasts. You can see the list of podcasts here.

Of particular note is Dispatches. This program offers short radio documentaries from reporters all over the world. The perspectives offered in these documentaries form a sharp contrast with the simplistic reporting that usually constitutes news.

Operating system design

The following article offers a nice introduction to some design techniques that may be used to create more reliable operating systems.

Nevertheless, it is interesting to note that microkernels long discarded as unacceptable because of their lower performance compared with monolithic kernels might be making a comeback due to their potentially higher reliability, which many people now regard as more important than performance. The wheel of reincarnation has turned.

Can We Make Operating Systems Reliable and Secure? by Andrew S. Tanenbaum

Jabber/XMPP pubsub

Most people who know about Jabber/XMPP think of it as an instant messaging platform. Of course, that is the primary use for Jabber at present but that may not always be the case.

The Jabber/XMPP network forms an XML based overlay network. Each message or packet of information carried by this overlay network is an XML stanza. You can think of Jabber servers as being XML routers and the clients as end nodes. In fact, the instant messaging portions of the XMPP standards are defined in a separate RFC from the core XML streaming technology (RFC 3920, RFC 3921).

One example of a non-IM use of Jabber is defined in JEP-0072: SOAP over XMPP. This document specifies how SOAP, which is normally used with HTTP to form web services, can be carried on top of Jabber/XMPP.

Another interesting non-IM use of Jabber comes from JEP-0060: Publish-Subscribe (aka pubsub). Pubsub is basically an event notification system that runs on top of Jabber/XMPP. In pubsub, a user publishes some XML data to a Jabber server which supports JEP-0060. Other users are then able to “subscribe” to this node. Whenever the node changes, a notification will be sent to all subscribed users.

There are lots of interesting things that could be done with pubsub. Off hand, here are a few of examples:

  • You want to checkout a book from the local Library. Unfortunately, someone else already has the book. In order to find out when the book has been returned, you subscribe to the node that represents that book on the library’s pubsub server. Once the book is returned you will know instantly.
  • You plan on purchasing a large, expensive TV in the near future. Rather than manually looking at the websites for several major retailers every few days, you subscribe to the pubsub node at each retailer for the particular TV model you are interested in. If any of the retailers have a sale, you find out instantly.
  • If like many people you use a RSS reader to keep up with new posts on your favourite blogs, you know that RSS readers periodically poll all feeds on your list. Often there are no new posts and this polling is a waste of resources. Instead, a pubsub enabled blog could notify interested readers of a new post. Not only do you find out about the new post sooner, network resources are saved.

In all of the above examples, subscribing to the particular pubsub node could be as simple as clicking on a link (JEP-0147: XMPP URI Scheme Query Components).

Also interesting is JEP-0163: Personal Eventing Protocol which defines a subset of the full pubsub (JEP-0060) specification which can be used for simpler instant messaging related tasks such as providing current geographic location information (JEP-0080: User Geolocation) or providing contacts with information about the music you are currently listening too (JEP-0118: User Tune).

It will be interesting to see how pubsub will be integrated into other network applications such as RSS readers and Jabber IM clients. It seems likely that pubsub notifications will be handled either by a Jabber client separate from the one that is used for IM or at least the Jabber IM client will have to distinguish these events from normal IM traffic.

For a nice overview of pubsub (with pretty pictures) see Jive Software: All About Pubsub.

The Vatican’s astronomer

Quirks and Quarks is the CBC‘s weekly science and technology radio show. It is also available as a Podcast.

This past week’s episode contains an interview with the Vatican’s astronomer. He has a very interesting take on the intersection of science and religion. Definitely worth listening to.

Many people think that science and religion don’t mix. But Brother Guy Consolmagno couldn’t disagree more. He’s a Jesuit, and also an accomplished astronomer – in fact, he works for the Vatican Observatory. And for Brother Guy, science and religion aren’t in conflict in the least. He sees them as two compatible and complementary ways to seek the truth about the universe. This Easter weekend, Brother Guy tells us how he views the cosmos – both literally and spiritually.

Linux and proprietary (graphics) drivers

From New Linux look fuels old debate:

For Nvidia, intellectual property is a secondary issue. “It’s so hard to write a graphics driver that open-sourcing it would not help,” said Andrew Fear, Nvidia’s software product manager. In addition, customers aren’t asking for open-source drivers, he said.

The open-source community already maintains many drivers. Even if NVidia’s drivers are somehow better at present, I bet NVidia would be very surprised how quickly the community would improve them. “It’s so hard to write a graphics driver that open-sourcing it would not help,” sounds like something people would have said about building a high-quality operating system like Linux 10 years ago.

Secondly, as an NVidia customer, I am asking for open-source drivers. I am sick of the driver dance that closed drivers force me to go through. I want my graphics driver to be packaged and updated as necessary by my distribution just like the rest of my system. I want an open-source driver so that the Xorg developers can modify the driver to take advantage of new features and architectural changes. As the speed of development on Xorg increases (which appears to be the case in recent history) proprietary drivers are going to have more difficulty keeping pace.

The next graphics card I buy will have good open-source drivers, even if it slower than the alternative with proprietary drivers. From the article linked above, it looks like it may use an Intel graphics chip.

Note: If you don’t understand why the Linux kernel developers dislike the idea of closed-source drivers so much you should read Linux in a binary world… a doomsday scenario by Arjan van de Ven (also linked to in the quoted article).