Sunday, February 14, 2010

Ars Technica Guides and Reviews

Virtualization
Part I - Virtualization basics
Part II - Privilege levels, rings, and fooling the guest OS
Part III - I/O Virtualization

Mac OS X
Mac OS X 10.4 Tiger
The details on the Mac OS X Quartz graphics architecture start on page 13.
Mac OS X 10.5 Leopard
Some details on Quartz GL can be found on page 9.
Mac OS X 10.6 Snow Leopard
The Grand Central Dispatch stuff starts on page 10.

Saturday, February 6, 2010

Android Architecture Patterns

Last week I took a deeper look at Android's core architecture. I was especially interested in how Android sets up its software component containers as runtime systems for activities, services and content providers. So I investigated what the Activity.startActivity method does to start an Activity inside of a newly created Zygote child process.

The Zygote architecture pattern allows Android to set up software component containers (OS processes that contain a Dalvik VM together with the Android framework classes) within milliseconds.
Android‘s Binder runtime helps to make these software component containers interoperable in a very efficient way. This reminds me very much of modern microkernel operating systems like QNX Neutrino RTOS, Miray Symobi or Microsoft Singularity.

For more details check out the following document that takes you on a walk through Android's source code.


Genetic Algorithms with NetLogo

I wrote a GA that evolves WALL-E's waste search capabilities over some generations. The WALL-Es learned fast at the beginning but then stuck at some local maxima. Sadly, also after a few thousand generations (and some days later) no mutations got the WALL-Es out of this local maxima. I have to investigate this further...



The source code is available here and there you can download NetLogo.

Some interesting links:
  • Einfachheit setzt sich durch

    Die natürliche Selektion erzeugt nicht immer die besten Organismen, vermuten US-amerikanische Wissenschaftler. Die Forscher simulierten RNA-Moleküle und deren Evolution durch Mutation und Selektion in Computermodellen. Diese Moleküle spielen eine Schlüsselrolle bei der Übersetzung der Erbinformation in Proteine. Dabei stellten die Forscher fest, dass sich manche vorteilhaften Merkmale nicht entwickeln, weil die notwendige Kombination von Mutationen zunächst Nachteile in sich birgt und daher ausgesondert wird.


  • Die Natur ist nicht perfekt

    Denn die Natur sei mitnichten optimal aufgebaut. In der Evolution sei es schließlich nie darum gegangen, sich einem Lebensraum perfekt anzupassen, sagt Fischer. "Die Tiere mussten nur gut genug sein, um zu überleben." Im Gegenteil ist es für Lebewesen häufig ein Vorteil, nicht optimal auf nur eine ökologische Nische ausgerichtet zu sein. Je besser ein Tier nämlich an eine bestimmte Nische angepasst ist, desto spezialisierter ist es. Umweltveränderungen bereiten ihm dann aber große Schwierigkeiten.


Software Technologies

There are some really nice software technologies that have been invented since Lisp ;-).