Defense of my dissertation
On Monday, I successfully defended my dissertation about "Securing
Graphical User Interfaces". In the thesis, I describe how to
resolve the conflict between four principle goal of GUI architectures,
which are security, compatibility, performance, and quality
of service. The presented techniques are the outcome of various
exhaustive experiments conducted during my time at the university,
in particular DOpE, Nitpicker, Scout, and Overlay WM. I plan to make
a slightly refined version of my thesis publicly available soon.
In addition to the presentation of my own work, I had to give a
"scientific talk" about a topic unrelated to my research.
I presented an intriguing approach of using machine learning to
improve compiler-optimization heuristics brought forward by the
European MILEPOST project.
Genode FX on the Virtex4-based ML405 evaluation platform
Since the initial release of Genode FX, support for other boards than the
Spartan3A Starter Kit had been added. Thanks to community contributions, the
project works now also on S3AN boards and support for S3E board is in the
works. Furthermore, Matthias Alles ported Genode FX to the Virtex5-based ML507
platform using the PowerPC 440 core. This week, I further increased the number
of supported platforms by porting Genode FX to the ML405 evaluation platform.
As this porting work was a good opportunity to document the process, I created
a porting guide document that I will release soon. The ML405 version will be
made publicly available with the next official release that is planned for
Genode FPGA Graphics project launched
The FPGA-graphics project that Matthias Alles and me conduct together since
2005 raised quite some interest, which motivated us to publicly release
the source code of our hardware and software components and to continue
the development as an open-source project. In addition to maintaining the
open-source version, we at Genode Labs offer commercial licensing options
and support. You can read the official release announcement here:
Genode Labs newsletter
Have you subscribed to the Genode Labs newsletter, yet?
To keep up-to-date about our progress at Genode Labs, you may check out the link below:
First release of the Genode OS Framework
We at Genode Labs are very happy to announce the first official open-source
release of the Genode OS Framework. The released source code contains
everything needed to build and run the graphical demonstration scenario
as seen at the front-page the genode.org website.
More detailed release notes and the source code are available from the
download section of genode.org.
Community website for the Genode OS Framework
The community website for our main project, the Genode OS Framework,
is online. This marks the beginning of conducting this project as
an community-driven development. To spawn interest of developers
in our project, we put a lot of energy in creating good architectural
and technical documentation including an API reference for the
complete base API. Furthermore, the site provides community resources
such as a Wiki, mailing lists, and our Sourceforge project.
In addition to creating actual content,
I did most of the web develoment work for both the Genode Labs company
website and the genode.org project website. In the meanwhile, Zope
and Plone have become pretty close friends of mine ;-)
BTW, we still rely on GOSH for our texual work. During the past
two weeks, the flexibility of this tool was extremely beneficial for
our work. And of course, I know the code of GOSH in and out, which
enables me to adapt GOSH to our needs in almost no time. Even
though I really like Docutils as stated below, GOSH is here to
Cool alternative to GOSH
Since 2003, I rely on my custom text-processing tool called GOSH
for all my textual work such paper writing, managing web content, and
writing technical documentation. In short, GOSH converts Usenet-style
plain text to different output formats such as HTML, Latex, or
manpages. Over the years, GOSH became a pretty mature and reliable
tool. I created my entire dissertation using GOSH without triggering
a single problem. Since I explored the world of Plone and ZOPE, however,
I discovered that there exists a much more powerful alternative called
Python-Docutils that are using a markup (restructured text)
very similar to the one I used for GOSH. Compared to GOSH, the
development of Python-Docutils is much more ambitious and vibrant.
Hence, I am thinking about switching to Python-Docutils in the midterm.
For an easy migration, I created a GOSH backend that outputs
restructured text (rst). Most of the basic text markups such
as accentuations, document structure, verbatim text, items,
enumerations, are already working. I will expand the backend
on demand to support more advanced features such as
tables, and cross references.
Genode Labs website launched
Two days ago, we launched the website of our company.
The website is realized using Plone3 and Zope, which is
a pretty powerful yet very complex framework. The design
and graphics are custom made. To get everything displayed
correctly with Internet Explorer was quite a challenge.
Exploring content management systems
With our company, we plan to launch two websites in the
foreseeable future. Of course we will have a company website
providing information about our product portfolio, our
offered services, and contact information. In addition,
we will create a dedicated project website for our
flagship product, the Genode OS Framework, which is our custom
OS framework previously codenamed Bastei.
For both websites, we need a content-management
system that scales towards typical community-portal functionality.
After some days of investigation, we settled on using
Plone/Zope, mainly because it seems to be a very mature
and scalable solution and there exists plenty of documentation.
Furthermore, we appreciate the fact that Plone/Zope is written in Python.
Starting my own company called Genode Labs
I just left the university to start my own company together
with Christian Helmuth. With this new startup company, we
strive to bring forward the practical application of the OS
technology that we developed. The official name of the company
is "Genode Labs, Feske & Helmuth Systementwicklung GbR". The
rather lengthy name is attributed to our chosen legal form,
which requires us to mention our names with the company name.
End of silence
During the last half year, this website was quite unmaintained.
There are plenty of reasons. First, having two children now
leaves very little spare time. Second, I worked hard to finish
my PhD thesis until the end of April. Now, the
thesis is complete and ready be submitted. Certainly, I will
have to refine the document according to suggestions by
reviewers but the major work is done. Third, I prepared
the launch of an own company that I will start together with
Christian Helmuth in mid of May. The volume of preparation
work was pretty demanding, primarily because of our lack of
sufficient knowledge about economics, law, taxes, and marketing.
To improve our competencies in these areas, we took part in
crash courses provided by a local institution called Dresden Exists,
talked with a lot of people, and spent time on studying.
My second son is born
Today, Christin gave bith to our second son Alan Feske at 10:24.
Alan weights 3880 g and he is 51 cm tall. Both Christin and Alan
are well and happy!
Sudden Fan of Death
It seems I am one of some-thousand unhappy Apple customers
who experience the famous Sudden-Fan-of-Death phenomenon
with Apple's iBook line of computers. From one day to another,
my iBook just stopped working for no reason at all. The web is full
of failure reports about this problem and I found some
valuable suggestions for interim fixes such as clamping the
notebook to a desk such that pressure is issued on a
particular part of the main board. By reading a bit further,
I learned that the problem is a chip that is loosening from
the motherboard because the soldering was not done right.
The suggested fixes had the effect of pressing the chip
onto the motherboard - with my iBook, these kind of fixes
worked...for some time. Then it started to fail again.
Two days ago, I decided to re-solder some of the pins of
the said chip and since then, my iBook works flawlessly
Development session with Charon
I just took one week off my regular job at the university
to spend my time with Matthias Alles and do some FPGA
Porting Bastei with L4/Fiasco to Gamepark's GP2X
Some time ago, I ordered a GP2X hand-held device and planned
to use it as an experimentation platform for Bastei on ARM.
In fact, the GP2X approximates very well a typical smart phone
platform of today, it is very well documented as its firmware
is based on Linux, and it costs less than 250 EUR.
During the last three weeks, I dedicated my spare time to
do this porting work. As a precondition for the actual development
work, I created work-flow tools for comfortably bootstrapping
a custom kernel on the GP2X. Rob Brown's SDK2x was of great help here.
For the actual porting work, I had to create new drivers for UART,
interrupt controller, timer, display, and user input specific
for the MMSP2 chip set and port Bootstrap and Fiasco to this
platform. This was my first experience with Fiasco hacking and,
to my surprise, it went pretty smoothly. The biggest issues
that I stumbled across had been getting the cache and TLB code
right and finding a problem caused by an ARM instruction in the
exception-handler-exit path that behaved unreliable on the specific
ARM core. After I managed to successfully execute Fiasco, I
ported the Bastei user land to this architecture. Thanks to
my existing ARM-specific work for Bastei, this process was
relatively straight forward. For accessing peripheral devices,
I decided to put all GP2X-specific driver code into one
single server because all devices share the same MMIO registers
anyway. At the moment, this server contains drivers for the
frame buffer and a user-input driver that is capable of
emulating a mouse from gamepad input. Finally, I was able
to run Nitpicker, Launchpad, and some example applications
on the device.
Bastei running natively on L4/Fiasco on PC hardware
I finished the work on my input-device drivers such that we can
use the PS/2 mouse and keyboard. Combined with Sebastian's
VESA video driver that initializes the graphics card by
executing the graphics card's BIOS code via an
x86 emulator taken from XFree86.
Furthermore, I optimized memory blitting for x86 by expoiting
MMX instructions. As a result, Nitpicker with Scout, DOpE,
Launchpad, and some further test applications are running
pretty responsivly on plain PC hardware.
Input device driver for Bastei
Based on Krishna's preliminary experiments some months
back, I created an input-device driver for
PS/2 keyboards and mice. The device part functions properly
but the Bastei session frontend is still missing.
Refined locking semantics for Bastei
To support controlled destruction of threads, I introduced
cancelable locks to Bastei's base framework and enhanced Core
to support the unblocking of threads. By using the new mechanisms,
threads are enabled to return to a consistent state, for example
by releasing held locks, before destruction.
C++ Parser and Coding-style checker
Managing coding-style consistency manually is a boring task.
Therefore, I created a C++ parser, which translates C++ source
code to an abstract syntax tree. This tree, in turn, is then checked by a
second tool with regard to coding-style compliance.
The C++ parser is written in Tcl and it is fairly complete.
I will enhance both tools on demand in the future.
Bastei's Core abstractions revisited
To support the upcoming work by Torsten Frenzel to create
a user-level debugger for Bastei, I enhanced serveral
services of Core. For example, the CPU session can now enumerate all
existing threads of the session and the thread state
can be exported for each thread.