Breaking and Building
I thoroughly dislike it when software or hardware updates don’t work and break my daily processes:
- On europa.gathani.org, my Thinkpad R51 which I sent for the replacement of the LCD panel because of a stripe of dead pixels came back with a new LCD panel that did not work at all! I’m extremely annoyed because I dedicated this weekend to learning about the Gentoo portage system on europa.gathani.org, which is clearly not possible now. Some IBM/Lenovo employee is about to receive a blasting today.
- On cassini.gathani.org, Fedora Core 6 kernel updates broke my sound and suspend. Since I am getting this free, I cannot really complain. It’s time to investigate and contribute the fixes back to upstream, if possible.
- On cassini.gathani.org, why is there a dependency chain from OpenOffice to xerces to xalen to tomcat to antlr? It’s like I have the whole Java developmental toolkit installed … to run Office software? Once again, this is a packaging issue which I need to investigate and fix accordingly.
On the plus side, I have contributed 3 ports (pecl-phar, pecl-syck, pecl-bbcode) to FreeBSD ports system and I have another two more that I’m working on (pecl-tdb and pecl-amavis). Porting pecl extensions can be as easy as a 10 line Makefile which takes 15 minutes to test or extremely difficult due to differing library dependencies on Linux and FreeBSD, which can take several hours to test especially in the case of large ports.
Porting is about making abstractions work on a different system. Of course, if abstractions actually worked, porting would have been automated many many moons ago. The fact that porting still remains a tedious process indicates that Abstractions Always Break; either the designers break the abstraction or the implementators break the abstraction. Either way, abstractions always break - yes, even in FOSS-land (some might even claim that abstractions break especially in FOSS-land but that’s a blog post for another day). In the 20th century, we used to have Linux-isms, BSD-isms and Windows-isms. In the 21st century, we have Mono-isms, .NET-isms, Java-isms … in other words, find me a platform and I’ll find you an “-Ism”.
Does that mean abstractions are unimportant? Of course not - it’s not a zero sum game, you know; abstractions have their place in the design of software but having exceptionally high expectations from abstractions can only lead to pain over the long run.
I will chime in with a long-delayed blog post on observation points and how they relate to abstractions.