Last updated on 2012-12-10
I’m doing some house cleaning on my read articles and found these interesting ones, that while are not directly relevant for my research (i.e. I won’t quote from them) are very relevant to any software developer and craftsman.
First, a short article named “Hacking Cars” (testing the link it shows that the content is premium, which means that you have to pay for it. How sad…). In summary, the article presents how a group of researchers managed to control many features of cars, from the doors up to the engine, from a remote location using on-board Bluetooth access and even cellular services. They even managed to take control of the machinery inside a police car by taking advantage of security holes in the software that runs the car. Pretty nasty and scary stuff. But this is the future of the internet of things. So be warned and beware.
Secondly, a viewpoint article titled “Computer Science Can Use More Science” (I read this article some months ago and suddenly today while writing this post I received another article called “Where is the Science in Computer Science?” from the ACM. Talk about coincidences…). The article talks about how little we know of the software platforms we use to create the systems we develop, and the problems this can cause. As an example, the typical LAMP (Linux/Apache/MySQL/Perl) stack consists of some 10M loc, and most developer probably have no idea what’s in them. And if you don’t know what’s in the box, how can you predict its behavior in varying conditions (large number of requests, different hardware, etc…)? The article then goes on to describe methodologies and models that can be applied in computer science, but goes off on a tangent and doesn’t attack the real problem – that most software is not created like spacecraft (his example of a system scientifically tested and modeled). Most software (almost all, except for mission critical systems) can misbehave. Users are used to it, and developers are always available to fix the problems and improve what is needed. Software evolves. But still, because most software frameworks don’t have strong contracts, we are all programming by coincidence most of the time.
The third (and last) article, called “The Software Industry is the problem“, is somewhat extreme, quoting a sentence by Ken Thompson (said in the 1984 ACM Turing Award lecture) which states that “You can’t trust code that you did not totally create yourself”. That is a bit problematic. But the author also understands this, and proposes that we create some king of “software liability law”, to make companies that create software liable to damages if the product they create does not work as expected (BTW, one of the biggest problems is defining what is expected from the software…). One easy (and popular) solution to the problem is open source. You don’t really have to create the code yourself, but if you (theoretically) can read it all (as in the linux OS), then you can trust it. I like the idea. And I also like the idea of having some kind of software liability law. If a bug in my OS destroys my hard disk, they should pay. If a driver that comes with a program causes my computer to stop working and requires me to re-install my computer, they should pay for the wasted time. And, and, and…
Do you see the problem? 🙂
So much to read, and so little time…