Are shared libraries still appropriate?

Thu, 20 May 2010 18:13:59 +0000

Currently, I am trying to remove some dependencies of Uxul-World. I was thinking of completely kicking LTK – though I like LTK – but as this is just part of the Level-Editor, till now I just thought I should keep it. On the other hand, it produces additional dependencies – lisp-magick right now, maybe I will switch to cl-gd or to my own little ffi-binding. On the other hand, if I did all that stuff directly without LTK, inside SDL, I would just have to use sdl-gfx to stretch and captionize Images.

However, hardlinking with SBCL against ffi-bindings is hard to impossible, and the License of SDL forbids this for free software anyway as far as I remember. Under Linux, SDL may be a default library which is nearly always installed, while under Windows, I dont think so. Under linux, there is no problem with providing a simple package-dependency-list, as long as the packages are not too exotic and can be easily installed. But of course, I also want the game to be playable under Windows, without having to install a whole Unix-Like Environment before. So maybe, under Windows, I should use OpenGL instead. Well, I will see  that.

I am currently not concentrating on portability but on finally getting some playable content into it. In general though, its good to already think about it: I dont want to produce a dependency-hell. I hate dependency-hells. Having a lot of additional dependencies in a software package can really make me sad. Mostly this leads to a lot of strange Download- and Installation-Procedures, since every project has its own policies, and in the end the only thing I have is additional knowledge about small libraries which I didnt even want to know about.

Having libraries like the zlib or libpng linked dynamically is something that really sounds anachronistic to me. Maybe in embedded devices this makes sense, but on every modern PC, the additional memory footprint should be negligibly small. A real dependency-monster depends on thousands of such small libraries, such that the footprint can get remarkable large. When using dynamic libraries, the executable code can be mapped multible times between different processes by the kernel, which needs less memory, and makes the code really „shared“.

But in the end, the only real bottleneck when just hardlinking against everything and deploying large binaries with small dependencies is the Usage of RAM. Neither hard disk space should be an issue nor should the additional needed traffic be.

And again, the solution I would suggest to this could come from deduplication technologies. Assume you download a binary, and execute it. Then the kernel has to read it, and can therefore create an index of checksums of the memory blocks the binary contents. Assuming that mostly the same libraries are hardly linked, and thus, the same or very similar binary code occurs, the kernel will notice that it loaded equivalent blocks into memory already, and can therefore map them together, like it would do with shared libraries. A main difference would be that the pages would have to be mapped as copy-on-write-pages, since some software may change its executable code (willingly or through a bug ). The binary could additionally provide hints for the kernel, for example flags that tell the kernel not to try to deduplicate certain parts of the loaded process image, for it may change or will only be used in extremely seldom cases, or flags telling to what library (and source-file) some memory-pages belonged, so the kernel can optimize the memory-deduplication.

Just to emphasize this – I am not talking about deduplication of all of the RAM-Memory, only about a small procedure run at the start of a new process, which searches for identical pages that are already mapped somewhere. I am sure this would take longer than just softlinking. But it shouldnt take too much additional time, and one could add heuristics for very small process-images not to deduplicate at all to make them load faster.

In any case, I think it would make the work with binaries easier, as well deploying as using, especially outside some package manager. For example it would produce an easier way of maintaining multiarch-systems.

And – imo – it fits more into the world of free software, where you have a lot of chaotic dependencies and a developer cannot keep track of all of these dependencies‘ newest versions and installation procedures, so he would just put everything inside his project directly.

Its basically giving up a bit of infrastructure while getting a new way of solving problems for which this infrastructure was basically created. And it sounds like everything is already there to implement this. Of course, I am not a kernel developer, I cant say how hard it really is. I am pretty sure, in Linux there wont ever be such a thing, but maybe more innovative Operating Systems like Open Solaris could provide it – as Solaris is known for its propensity to new technologies.


Computerprogramm gegen Amokläufer

Wed, 19 May 2010 02:01:11 +0000

Lol schon wieder meint irgendwer er hätte eine Möglichkeit gefunden Amokläufe anhand von Verhaltensmustern programmatisch vorauszusagen, schreibt gulli.com – sorry, das hab ich inzwischen einmal zu oft gehört um es wirklich zu glauben. Dass es Profiling-Software gibt die zumindest Anhaltspunkte geben kann ok. Aber dass man damit irgendeinen Amoklauf wirklich verhindern kann, das bezweifle ich stark.

Zum Einen müsste man damit sehr viele Informationen sehr vieler Personen sammeln – ich denke mal, so viel, dass selbst noch so viele Polizeigewerkschaftspressekonferenzen die Bevölkerung nicht mehr davon überzeugen könnten.

Außerdem sehe ich in sowas eine Gefahr. Die Frage die sich mir stellt: Angenommen, so eine Software würde wirklich funktionieren. Und angenommen, sie würde auf irgendeinen Menschen anschlagen, der sich sonst nichts vorzuwerfen hat. Was soll man tun? Soll man ihn zwingen eine Therapie zu machen? Soll man ihn einsperren? Ich bezweifle, dass das noch irgendwie mit rechtsstaatlichen Prinzipien vereinbar wäre, einen Menschen „präventiv“ einzusperren, vor allem nachdem sich der Gesetzgeber schon so schwer mit dem Stalking-Gesetz getan hat.

Imho produziert so etwas drei Dinge, die wir gerade im Moment am wenigsten brauchen: Angst, Misstrauen und Schuldige.

Schuldige vor Allem im Falle eines Amoklaufs. Denn nicht nur der Amokläufer wird schuld sein, sondern etliche Behörden, die nicht rechtzeitig reagiert haben, obwohl deren Profiling den Amokläufer frühzeitig erkannt hätte. Wir haben in letzter Zeit sowieso schon viel zu viele Mitschuldige bei jeder sich bietenden Gelegenheit. Anstatt eines komplizierten Computerprogramms das versucht einzelne Täter herauszupicken sollte man vielleicht eher nach den gesellschaftlichen oder sonstigen Gründen für die – angeblich – gestiegene Anzahl an Amokläufen in der letzten Zeit suchen.

Misstrauen vor Allem gegenüber dem Staat und der Polizei, die noch mehr Daten von uns sammelt, und diese möglicherweise in großen Datenbanken ansammelt, die dann – wie so oft – von irgendwem Gehackt werden, der damit die Persönlichkeitsprofile vieler Menschen hat. Außerdem ist ja nicht auszuschließen, dass die Daten die gesammelt werden fehlerhaft sind, und es ist auch nicht auszuschließen, dass sie wissentlich manipuliert werden. Und, wenn jemand erstmal als potenzieller Amokläufer stigmatisiert wurde, wird er eine sehr schlechte Position haben eine solche wissentliche Manipulation aufzudecken und sich dagegen zu wehren. Das Letzte was wir brauchen ist noch mehr Misstrauen gegenüber dem Staat. Davon gibt es eh schon genug.

Das Schlimmste ist wohl die zusätzliche Angst. Zunächst mal wird die Angst vor Amokläufen dadurch wohl eher verstärkt als geschwächt. „Die da oben“ werden ja schließlich ihre Gründe haben, warum sie so eine Maßnahme einführen. Zusätzlich zu der Angst vor neuen Amokläufen kommt die Angst davor, sich irgendwie auffällig zu verhalten, und selbst fälschlich als potenzieller Amokläufer „erkannt“ zu werden. Man wird von solchen Fällen hören (denn es wird sie sicher geben), und sein Verhalten unbewusst anpassen. Wahrscheinlich wird es dann irgendwann Kurse geben, wie man sich verhalten soll, um nicht erfasst zu werden.

Was ich damit sagen will ist nicht, dass ich eine solche Technik grundsätzlich sinnlos finde. Im Gegenteil, der Einsatz von Computern in der Psychologie ist sowieso etwas was ich ziemlich stark vermisse irgendwie. Ich rate nur zur extremen Vorsicht. Das Wissenschaftsteam wird – wie die meisten guten Wissenschaftsteams – vor Allem Nerds beinhalten, die von ihrer Sache fasziniert sind und dementsprechend diese auch benutzen wollen. Die Politiker werden wie üblich höchstens die Hälfte verstehen aber meinen, es sei ja ihre Aufgabe das Volk mit allen Mitteln vor Gefahren zu schützen. CCC und Konsorten werden das Ding unter die Lupe nehmen, kritisieren und wie üblich erstmal ignoriert werden.

Darum rate ich zur Vorsicht von vorne herein. Ich halte Derartiges für interessant aber auch hochgefährlich.


„Entwicklungsland“ Indien

Wed, 19 May 2010 01:15:48 +0000

Das als Entwicklungsland bekannte Indien will offenbar ein eigenes Betriebssystem schreiben, um Unabhängig von speziellen Anbietern und Staaten zu sein.

Damit sind sie schon mal schlauer als unsere Helden mit ihren seltsamen Mautplänen und diversen Wahlcomputern oder dem Verschenken von Volkseigentum.


Steam für Mac OS X – da kommt zusammen, was zusammengehört …

Tue, 18 May 2010 16:10:15 +0000

… Software für eine ganz bestimmte Klasse von Leuten.

Ja, ich gebe zu, ich fand und finde Portal gut. Ich habe mir sogar schon mehrfach überlegt, es mir zu kaufen, aber mit meinem früheren MacBook war ich unzufrieden, drum hab ichs jetzt verkauft, und bei meinem jetzigen Rechner hatte ich andere Prioritäten, sodass das Spielen solcher Spiele unter Wine eher problematisch ist (nicht dass ich Portal jemals vorher so gut unter Wine zum laufen gebracht hätte wie jetzt).

Jedenfalls fand ich es durchaus erfreulich, dass Valve jetzt Portal kostenlos gemacht hat. Und so dachte ich mir, ich lade es mir mal runter. Nungut, man muss sich registrieren und Steam installieren – meinetwegen, das ging auch unter Wine ganz gut. Das Herunterladen dauerte sehr lange, aber auch das ging unter Wine sehr gut. Dass mein Rechner es nicht schafft, unter Wine Portal mit einer sinnvollen Framerate abzuspielen, nun, das ist auch nicht die Schuld von Valve oder sonst wem. Das muss man eben akzeptieren.

Also dachte ich mir, ich könne irgendwie einfach die heruntergeladenen Dateien rüber auf meine Windows-Partition kopieren und dort zum Laufen bringen. Weit gefehlt natürlich. Mit irgendwelchen Semi-Legal aussehenden Tools geht das zwar, aber es scheint keine vorgesehene Methode zu sein, dies zu tun. Nein, vielmehr sollte ich mir das Ganze unter Windows nochmal herunterladen. Nach einigen Gesichtspalmierungen deswegen habe ich ebendieses getan.

Nunja, dann funktionierte mein Passwort nicht. Ich tippe das Passwort normalerweise nicht direkt ein sondern Copypaste es aus einer Passwortgeschützten Datei – ich erzeuge die meisten meiner Passwörter mit pwgen. Dies schien jedenfalls plötzlich nicht zu gehen – naja, vielleicht ein Fehler im Copypasten, irgendwelche seltsamen Designheuristiken sind vielleicht gefailed. Was solls, also manuell abtippen. Auch das ging nicht.

Also Passwort zurücksetzen lassen. Trotz korrekter Antwort auf die „geheime Frage“ und bestätigungscode aus der E-Mail konnte ich auch dieses nicht. Quintessenz: Ich kann jetzt unter Linux theoretisch Portal spielen, allerdings ist die Framerate zu niedrig. Unter Windows kann ich nicht mal Steam starten, weil es mein Passwort nicht akzeptiert.

Kein Wunder, dass selbst die Spielehersteller gecrackte Versionen bevorzugen.

Wie dem auch sei, heute brachte mich jemand auf einen netten Grund, warum man es gut finden muss, dass man Spiele auf Mac OS X portiert: Der Grund warum Firmenkunden in Büros und auch einige Gamer Mac OS X benutzen ist wohl gerade weil man darauf keine Spiele spielen kann, sondern gezwungen ist, etwas einigermaßen produktives zu tun. Wenn es erstmal genug Spiele auf Mac OS X gibt, wird es damit seine Besonderheit verlieren. Also: Portiert mehr Spiele auf Mac OS X.


Neues Notebook, neues Glück

Tue, 18 May 2010 04:26:38 +0000

W00t, endlich, ich habe ein neues Notebook. Ein Lenovo ThinkPad X200 Tablet. Momentan renne ich das vorinstallierte Windows und Xubuntu drauf.

Xubuntu vor Allem, weil ich eh einen Xubuntu-Stick hatte, und weil ich mit der Hardware darin und mit dem Konfigurieren solcher Tablets keinerlei Erfahrung habe, und ich deshalb erstmal etwas nehmen wollte, was einigermaßen automatisiert geht.

Vermutlich werde ich irgendwann wieder Arch Linux verwenden. Aber jetzt bin ich erstmal mit meinem Xubuntu zufrieden.

Leider gehen noch ein paar Sachen nicht, zum Beispiel kriege ich es noch nicht hin, bei entsprechenden ACPI-Events die Bildschirmanzeige zu drehen, das muss ich noch manuell per Commandline machen. Aber ich denke, das ist nur eine Frage der Zeit.

Jetzt kann ich vor Allem endlich wieder sinnvoll an meinem Jump And Run weiterprogrammieren, weil ich einen gescheiten Rechner habe, bei dem ich auch vorhabe, ihn auf längere Sicht hin zu haben.


Artensterben stoppen – ein Aufruf zur Arten-Gerechtigkeit

Mon, 17 May 2010 01:57:10 +0000

Was meine geplagten Augen da mal wieder lesen mussten, im SZ-Artikel zum UN-Bericht ueber das Artensterben. Gleich der erste Satz ist treffend – „Die Weltgemeinschaft hat versagt“ – dann folgen einige Statistiken und Zahlen, die der geneigte Leser sich selbst zu Gemuete fuehren moege. Quintessenz: Mehr Arten wurden durch den Menschen ausgerottet als ausgerottet haetten werden sollen.

Auf wirtschaftliche und politische Probleme werden solcherlei Dinge gerne wegabstrahiert, denn aermere Laender kuemmern sich nicht um das Artensterben weil sie es nicht koennen weil sie ja so arm sind und erstmal an sich denken muessen und blafasel, und die einzige Loesung des Problems ist damit, solchen Laendern Geld in den Arsch zu schieben, damit sie einen genauso gut funktionierenden Kapitalismus aufbauen koennen, wie den unsrigen.

Das Problem ist aber meiner Meinung nach ein ganz anderes, und wird denke ich ziemlich gut im Schlusssatz des SZ-Artikels deutlich, der da lautet „Doch wenn die Menschheit so weitermacht wie bisher, wird es irgendwann alle treffen„, alle im Kontrast zu den armen Fischern, denen jetzt halt ihre Fische wegsterben. Artenschutz motiviert durch menschlichen Wohlstand – ich behaupte, das ist es, was das Problem verursacht. Der mangelnde Respekt vor dem, was anders ist als man selbst, die Haltung, die Welt als metaphorische Kuh zu sehen, der man immer genau so viel zu Fressen gibt, dass ihre Milchleistung nicht nachlaesst. Kurzum, das Problem ist der Speziesismus.

Warum interessiert sich keine Sau fuer die Millionen an Fischen mit denen wir unseren Kindern die Maeuler stopfen, die sich vielleicht auch nicht so gut dabei fuehlen, zu panierten Quadern verarbeitet und von haesslichen sabbernden fetten Monstern verschlungen zu werden? Weil es uns eigentlich egal ist. Und solange dies so bleibt ist das Artensterben nicht aufzuhalten.

Der Mensch hat die Macht, sich selbst und anderen beliebig zu schaden. Das Einzige, was ihn wirklich davon abhalten kann, ist seine Moralvorstellung. Erst wenn wir es als moralisch schlecht empfinden, dass Tiere und Pflanzen sinnlos getoetet werden, und ihnen sowohl eine Wuerde als auch einen Individualbegriff zusprechen, kann sich dies ueberhaupt aendern.

Die Betrachtung unterschiedlicher Menschentypen und deren essenziell unterschiedliche Behandlung hat auch niemals vorher aufgehoert, die Rassentrennung in den USA hat nicht aufgehoert weil ein paar Wissenschaftler gemeint haben, Gleichberechtigung koennte fuer die Armeekraft und Wirtschaft gut sein, sie hat aufgehoert weil die Moralvorstellungen der Gesellschaft sich langsam weiterentwickelt haben.

Moral ist letztlich doch nichts anderes als ein Mechanismus der Arterhaltung, erst die Moral hat dazu gefuehrt, dass wir uns nicht wie einige Primaten staendig die Koepfe einschlagen, sondern zumindest erst grosse Kulturen bilden bevor wir uns die Koepfe einschlagen – mir kann es, abgesehen von moralischen Bedenken, egal sein ob ein anderer Mensch gequaelt wird, solange ich nicht betroffen bin. Erst die Moral sorgt dafuer dass es mir nicht egal ist, und aus diesem Moralgefuehl heraus resultiert der Wille zu einer Gesellschaft die diesen Moralvorstellungen entspricht, und nur deswegen engagiere ich mich ueberhaupt in irgendeiner Weise politisch oder kulturell – ja, Moral hat den Willen, sich zu verbreiten, das macht sie zu einem vortrefflichen Werkzeug der Arterhaltung und -verbreitung.

Und so muessen unsere Moralvorstellungen sich auch endlich auf Tiere und Pflanzen beziehen. Dabei geht es garnicht darum, die Nutztierhaltung und das Essen von Fleisch sofort zu verbieten, auch wenn dies aus meiner Sicht sehr erstrebenswert waere, so ist es doch nicht realistisch, dass sich diese Moralvorstellungen in ausreichend kurzer Zeit durchsetzen wuerden. Viel mehr muss das Bewusstsein und das Interesse fuer einen wuerdevollen Umgang mit Nutztieren und Nutzpflanzen geweckt und gestaerkt werden, anstatt es mit anderen moralischen Vorstellungen zu relativieren.

Dass irgendwo ein Tier gequaelt wird und dass man sich nicht darum kuemmern muss weil anderswo ein Kind verhungert darf keine akzeptierte Argumentationsweise mehr sein, denn es wird immer hungernde Menschen geben, und immer Strukturen, die dafuer sorgen, dass irgendwer sich ueber andere erhebt und diesen Leid zufuegt. Die schwierigste Herausforderung in diesem Zusammenhang ist freilich zu akzeptieren dass einige Tierarten speziesistisch sind, und diesen dennoch ihr Recht zuzusprechen. Das ist ein aehnlich schwieriges Problem wie das Zusprechen von Menschenrechten gegenueber Menschen die sich selbst nicht an Menschenrechte halten wollen. Gerade hier wird wieder der pragmatische Charakter der Moral deutlich: Der Hauptgrund warum man allen Menschen ein unveraenderliches und unveraeusserliches Recht zuspricht ist, weil man verhindern will, dass irgendwer aus irgendeinem Grund dieses Recht bricht – und sei es nur aufgrund der Rechtbrechung selbst – zumal es Menschen gibt, deren Verstand nicht ausreicht, um ihr Fehlverhalten zu verstehen, oder die schlichtweg Geisteskrank sind. Tieren muss dasselbe Recht zukommen, sie sind Wesen die den Speziesismus dem sie unterliegen nicht eigenstaendig verstehen koennen, dennoch muessen die allgemeinen Rechte auch fuer sie gelten. Anders als Menschen haben andere Tierarten durch ihr speziesistisches Verhalten aber nicht die Faehigkeit so verheerenden Schaden anzurichten, zumindest unter natuerlichen Bedingungen (in der Folge eines ungewoehnlichen Eingriffes durch den Menschen natuerlich schon).


Software that should exist #7: File-Allocation without Nullifying

Sun, 16 May 2010 03:26:26 +0000

I dont know about you, but I had this problem more than once: I just need a large file on my disk with no specific content to create some other fs on it. For example when creating Live-CDs, additional Swapfiles or just Test-Volumes for exotic filesystems or virtual machines, I need a big file on which I can then perform filesystem-creation and stuff. The default way to do this is to run dd with appropriate blocksize and blockcount options, let it read from /dev/zero, and write into the file. The problem here is that I then not just allocate the file but also overwrite it with zeroes. In many cases, this would not be necessary. The main reason for using /dev/zero is that /dev/zero is the fastest device one can get to get some data – but actually, I mostly dont care and the only reason for not using /dev/urandom is that /dev/urandom is a lot slower.

So, it would be nice to be able to say „give me a file with size … and random content“, such that the kernel does this by just allocating free blocks into a file, but not overwriting them, thus, the only write-accesses on the disk will be the ones for filesystem-headings like inode-tables, etc.

Problematic with this approach – and therefore probably the reason why this is no default mechanism – is that if every user could do this, the user would possibly be able to access blocks of files that shouldnt be seen by this user, i.e. blocks of files which have already been deleted but needed higher read-permissions. On the other hand, as root, there should be no such problem at all.

One possible solution which sometimes suffices is the creation of sparse-files, but only if the underlying filesystem supports sparse files, and even then, for most of the problems mentioned above the access becomes painfully slow, since the blocks have to be allocated ondemand, while the programs assume to get a blockdevice. Most mkfs-instructions will at least require some kind of „force“-option to create a filesystem on a sparse-file anyway. Loopmounting will most probably fail. Using a sparse file as swap-file isnt allowed at all (at least without strange kernel-patches).

Another solution comes – as far as I read – with ext4, which allows creating files which are nulled „virtually“ in the beginning, without having to be overwritten first. Except that I dont really like or trust ext4, since it doesnt bring the features btrfs would bring, but also doesnt seem to be a lot more stable, this is a solution on the filesystem-level. Unfortunately, such problems mostly arise in situations when you didnt choose the filesystem with respect to this or cant choose your filesystem anyway. There has got to be some more general solution.