Looking from the future onto now

When planing something, you normally focus on „what needs to be done first.“ I tried to take another perspective and imagine the project was already finished and I had to document it retrospectively. This way of thinking really helped me, so I want to explain the idea behind it and its outcome.

Given some well known branch of science or education, you will not only find a lot of talks, papers and articles, but also some sorts of compendium: A well structured, complete, assembled body of all relevant knowledge. Those compendia come as books, websites or lectures. If they are well made, their structure not only resembles the inherent structure of their universe of discourse, they also express the structural strengths and weaknesses thereof. Every complex system has weaknesses, because their inventors did not really know what their outcome after several years of hard work would be. If Brendan Eich would have known that people would do AJAX and mash ups (and evil Cross Site Exploits) with JavaScript, he probably would have done better when inventing it.

Now imagine that the developers of some system would have the chance to peek into the compendium about the system at hand before even creating it. They would have a clear vision of what lies ahead and of the possible complications that might arise, and would avoid many mistakes. Note that they need not read the whole thing cover to cover: A glimpse into the outline might be enough to boost their imagination.

Application to my project

Today, I sat back and had a look into the future: What would a compendium about Cubenet look like? At the bottom of this page, there is an outline of a possible book about it, and it serves several goals: It may give the reader (that’s you, for example) an overview of what’s inside Cubenet, but for myself and future developers it also is a map, showing what aspects need to be dealt with.

New scope to think about

Of course, this is not the first list of aspects of Cubenet. I had such outlines ever since, dealing with what needs to be build. But this one also has some bullet points for the aspects outside of Cubenet, which are closely related to it, in a way of what needs to be considered. This difference makes it much more exhaustive and thus more useful. On the other hand, there are even some details missing in this view. I spend the last weeks figuring out what language to write Cubenet in (C++) what interfaces to provide (C functions and stream over stdio, pipes and network) and how to build it (CMake). You won’t find any of those in my outline, and if this compendium was ever written, you probably wouldn’t find it in the full text neither.

And of course, this is only a fake, I did not really travel into another time to come back with this list, I just made up that future in my head so I could document it in some retrospective way of thinking. I’m currently fooling myself into believing that this _is_ the future, which is kind of ridiculous, but anyway, it kind of helps.

An example of a new insight

Just an example: Cubenet will be cool even without any special language. But at some time, you will want to have an expression language to dynamically evaluate properties. And you will want to have a scripting language to make those computations even more complex. And application developers will want something that integrates nicely with Cubenet. So I conclude that there might be a whole range of custom languages, but if I anticipate this, I could try to create a single language that fits all those cases, or I might find that this is impractical. I really found that out while creating this outline, because at first, those were separate bullet points on different ends of the list, but when sorting it into my fictional compendium, they eventually found each other and are now related.

Do I have to consider everything?

For some of the aspects of that outline, I already have a deep understanding and sometimes even a solution for each related problem I can think of. For other aspects, my mental model is more abstract, and on some of them, I’m completely clueless and only have a vague idea on why I put it on the list at all. I really need to handle those cases where I have no idea. Anyway, I could start to implement parts of Cubenet soon, without having everything laid out. As long as there is some coarse plan for each aspect, this is enough, and the details are on another page.

And of course, I can’t possibly know if my list is anywhere near completion, because I don’t know yet of what I currently don’t know. Ok, here’s the outline as it appeared somewhere in my head today, and I’m pretty surprised that I was able to write that down in about 20 minutes while listening to a lecture (which I had heard once before). Thinking about it for several years really pays of, and I remember that when I wrote my Bachelor thesis only a few months ago, I took several weeks to get to an outline that was as complete and well ordered as this one. This is because I wrote about portability of Java, a topic that was only on my mind since a few months (and which is actually not as trivial as it might sound!). So I did not expect that much of todays short brainstorming.

Prerequisites

  • Purpose and characterization of digital information systems
  • Information Theory
    • Knowledge, Information, Data, Communication, Reality and Cognitive Science
    • Micro- and Macro-Theories, world knowledge
    • Logic, Contradictions, Reasoning, AI
  • Data Structures
    • Linear space, Symbols, Trees, Graphs, Relations, Sets, Tuples, Vectors, etc.
    • Categories and Inheritance
  • Common ways to implement information systems (the subsections of this one really need to be reordered. The way they relate to each other seems multidimensional to me, so how would I get them into a hierarchy?)
    • For personal use
      • offline
      • mobile devices / appliances
      • World wide web
    • For enterprise use
      • Middleware / SAP
    • Active research in KM and AI
      • RDF / OWL
      • Cyc
      • Multi agent systems
    • File systems
    • Database management systems
    • XML and related techniques
  • Problems of current approaches
  • Conclusions and overview of Cubenet

Examples

  • Domain models and data
  • Applications
  • Equivalent of Web Browsers

Data

  • Identity and identification of real world entities
    • Merging and splitting of non-unique identifications
  • The Cubenet meta data model
    • Graph based view
    • Tuple based view
  • Standard serializations
    • Binary
    • Text based
  • Special data types and use cases
    • Measures and Dimensions
    • Spatial and Time based data
    • Table based
    • Mathematic structures
    • Natural language text and Documents
    • Graphical and geometric data
    • Native binary data

Network

  • Collaborative, distributed data modeling and editing
  • Remote invocation, information vs. intent
  • Topology, roles and data flow in local and global networks, and within single machines
    • Peers, Repositories, Hubs
    • Emergent Structures, Neural and semantic associative networks
    • Push vs. Pull, Callbacks, Observers, Subscriptions
    • Routing
  • Standard network protocol and optional enhancements
  • Security, Cryptography and Web of Trust
  • Privacy, Copyright and Micro-payment

Application Development

  • Custom Syntax and Languages
    • Path, Filtering and Query
    • Expressions, dynamic evaluation and Scrips
    • Paradigms and languages for application development
  • User Interfaces
    • Guidelines
    • Libraries and system calls
  • Data access Library API, implementation and usage

Details

  • Legacy systems (here you find some of the techniques from the first block. This duplication is on purpose.)
    • Data from legacy systems
    • Legacy systems for representation and interaction
    • Bidirectional updates with legacy systems
    • XML
    • RDF / OWL
    • Relational data bases
    • Object oriented systems
  • Subsets of Cubenet and interoperability
  • Random and Pseudo-random numbers
  • Efficiency, Optimization and Determinism
  • Future development
    • Known problems
    • Needed infrastructure and spin-off projects
    • Artificial intelligence

This outline will not be updated in-place. But there is a copy in the Cubenet redmine, which might eventually be kept up-to-date for some time.

Plain text, XML trees and graphs – and why reality takes more than this

Did you ever wonder why plain text files cannot contain structured data very well, for example, why the „good old“ ini files look so awful and chaotic in larger applications? Of course, it’s because plain text is plain. But not „plain“ as in „not colorful and with nice font variations“ but „plain“ as in „flat, linear“. It has lines, one after another, and each line has characters, one after another. And that’s basically all.

Ini files

Ini files, though never really specified, may have some more: headings in square brackets, and key value pairs. Maybe even comments. But still, complex data is hard to handle that way. (So is there are formal distinction between plain text files and ini files? Think about it, because the rest of the text has 11 other possibilities to ask a similar question, which I won’t do.)

XML

This is where XML comes in. It is completely hierarchical, with a root element and any number of nested child elements. Then there are text nodes and attribute nodes, where text nodes can contain any text they like, and attributes consist of keys and values. This is a lot more structure than a plain text file, and is suited to represent almost every information you can think of. If you are used to XML, you just think in hierarchical structures, as if the whole world would consist of nodes with subnodes. And this seems only natural, since reality surely doesn’t consist of something linear like a plain text file. Sometimes, it’s not exactly clear what goes where: When you put statistics of what has been bought where and when into an XML file, is the <location> a child of <time>, or vice versa? Who cares, as long as it is a tree. If you really need it the other way round, you can always come up with some simple 143 line XSLT to transform it on-the-fly.

Graphs

So let me tell you something important: The world is not a hierarchical thing, it’s not a tree. There is more than just linear structures and trees, for example there are graphs. To step up from XML to something graph based is like stepping up from plain text to XML. Some of the XML advocates would jump in yelling „But XML can represent graphs, like with RDF or OWL“. That’s true, because an RDF document is just a special form of XML document. Just as an XML document is just a special case of a plain text document. And because the is-a-relationship is transitive, an RDF document also is a plain text file, and as such, even plain text is capable to represent a graph.

Even more?

We’ve just seen three levels of structures and higher-order structures. So is an RDF-like graph the highest order of structure? No, because in RDF, you have triples of subject, predicate and object. You can express much with it, but there are lower level graphs, were connections are not directed, or higher level ones, where a connection can have more participants than just subject, predicate and object, like an adverb. Or you can bind the adverb to the triple, which needs reification (treating the relation as an entity, so it may be the endpoint of some other relation), but RDF has only very poor support for reification. Or you can have any number of objects bound by a single relation… the possibilities are endless.

Yet, when a programmer has to deal with information and thinks about graphs, it’s too easy to get stuck at what RDF gives you, just as it is too easy to take an RDF graph for its XML tree representation, and take this tree for the linearized plain text file. This is a mental issue, something each programmer has to overcome (and even I suffered from). Sometimes, it’s even wrong to think in documents, and you have to deal with the entities on another level, which my also be a mental problem.

Limiting technology

On the other hand, the technologies we use to manipulate that data is mostly web based, that means built on top of http, which is a protocol to request – guess what – plain text files. We do not have the technology to address actual entities or relations as nicely as we address plain text files. There are efforts to do this, but I call them „suboptimal“ at best.

Then there is tabular data, which is best kept in a relational database. Of course, you can always put it into texts, trees or graphs, but it does not really fit. Just as you can put any text, tree or graph into some database tables.

Summary

To summarize my key points:

  • XML is better than plain text, because trees are more advanced than linear structures
  • Graphs are even better than trees
  • There’s even something „above“ graphs, but this is too complex to be addressed here
  • RDF seems to be a nice representation of graphs, but it only models one special case of general graphs
  • It’s nice to be able to map graphs to trees and map them to linear plain text
  • Tables are just another way to store information, sometimes better than text, trees and graphs, sometimes worse
  • But we need protocols that work on another layer than just addressing plain text documents by their URL

These are some of the points that Cubenet aims to do better. I write this partly because I’m sure I already know how to do better, and partly because I must remind myself that some of this is still a great mystery to myself.

(Re-)starting a big project

In this post I want to look back on many projects I started, most of which were canceled in an early stage. Anyway, I think the time is right and the decision is clear to (re-)start Cubenet, my pet project since 2005, and assign it the priority it deserves.

I’ve always had my projects, mostly programming projects. If I don’t count all those small one page programs, I may have started about 300 of them, but only finished about 40. And it’s clear that no project is ever really finished, I just got them to a point where it’s close to completion. Most got canceled because I lost interest.

In 2005 I started Cubenet, a software concept for information handling, but right now, there’s nothing to show. You might count this as one of the 260 failed projects, but that’s not correct. I never lost interest, but I never had the time to work on it. Or maybe, I never took the time.

Time

There’s an important invariant concerning time: You never have enough of it, there’s always much more to do than you ever could. So you do the most important things first, and the others afterwards. Cubenet never had the highest priority, so it never got the time it needed. I never had enough trust into this to assign a higher priority to it. So why is that?

First of all, as I said in the introduction, most of my projects „fail“. I used to think of this as a personal weakness, and so I was afraid to put large efforts into something that I would eventually cancel. Of course, this is exactly the wrong way round, but I didn’t recognize. If my projects fail because I’m not committed to them, then I won’t do any better if this leads me to even less commitment.

Child projects

Second, I used to start projects that I could never finish anyway. When I was 5, I insisted to file a patent for a chewing gum factory that I designed on paper. Age 6, I dug a hole in the ground because I wanted to build a subways station. My town only had buses, and I thought subways were much cooler than buses, so someone would have to start digging. Then, aged 9 or 10, I wanted to build the robot from the famous Johnny 5 movie.

None of this was feasible, but it’s no shame to talk about it, since I was a child. But when does this end? How do I know if I’m still a child with childish plans? When I was 13 or 14, when there were no MP3 players on the market, my father and I build one based on a do it your self kit, and I thought it would be cool to mass produce it, add a modem to it so it could connect to the Internet, and let people download music from a server, letting them pay for the music, and all this without a PC. This turned into a billion dollar marked some years later, but at that point, it seemed like another of my childish fantasies. I still mistrust my own ideas, especially when they are big and ambitious, which describes Cubenet very well.

Complexity

Third, when I don’t consider my former projects, but just Cubenet on its own, there are so many reasons why it could fail. Failing is related to not getting finished, and the complexity of my concept clearly indicates that it is too big, that I could never finish every part of it on my own. So why even start?

While every project starts small, some aim for the small, and some for the big. Often I get the advise to aim for a small goal, along with some anecdotal stories about projects that tried to reach a small goal and evolved beyond that, to finally become something big. In my case, I’m bound to ignore that advise, because of my central belief about practical computer science: Programming has grown in complexity because the whole area of software development started out small, without the great picture in mind. Now, if you want to build a small thing, you have to deal with a dozen of layers, which evolved over 50 years. This could be done better if it was planned from the beginning. Cubenet is, in its core, an attempt to do it better, by aiming for the big goal and approaching it directly. So the project has a great goal by its very definition, and there are many who think it must therefor fail by definition.

Just doing it

I’ve finally come to my senses. Every project, no matter how big and how many persons it will take to complete, has to be started by someone. And now, that’s me, the crazy kid, grown up, old enough to make decisions, while not really wise enough to implement it all. But if you have a thousand crazy children like I was, digging in the ground, they will eventually build a subway station. Maybe they lack the skills at first, but after some years of work, they will have them. I don’t know the real source, because it’s been cited too often, but programming is a „wicked problem“, one that you only understand while you try to solve it. This is widely agreed upon, but opinions differ on whether this legitimates a restart from scratch, or if it must be tackled by incremental changes and refactoring. I’m not sure about it, but if there is a solution, I’m the one who sets out to find it, hoping someone might join along the way.

A scheduling trade-off

For Cubenet to succeed, I need not only overcome the many obstacles of software development, I also must overcome my intrinsic problem of time scheduling. That is, I must assign a priority to Cubenet, high enough to actually being worked on. With a classical scheduling, only the most important task is worked on, until it is finished, so the next important one may follow. For a long time project like Cubenet, this would be fatal: I would drop out of my university rather quickly, but eventually I would die of starvation because cooking meals has a lower priority. There has to be a compromise, like this one:

I’ll work on Cubenet as much as I can afford, and I think I must accept that other aspects might suffer, like my studies, free time, social life, etc. But if I define a limit on how much those may suffer, this gets manageable. This is the only way it can be done, and it might get easier with synergistic effects. Like integrating Cubenet into my studies. I failed at this at my former university, the Hochschule Harz, because I studied the wrong branch of computer science. Now at the Technische Universität Braunschweig, I’m at the right place, and there may be ways to bring it all together. If I’m forced to succeed, I will somehow succeed.

Linking it to people and obligations

There’s another advise to start a project, and not let it fall aside: Tell everyone about it. Tell about it, until they start asking about the progress, which somehow motivates. This is a common hint for people who want to stop smoking, but it applies elsewhere.

But sometimes motivation is not the problem, but justification: Is it right to spend time on Cubenet right now? Am I supposed to do something else instead? Yes, I am, but as soon as Cubenet is officially related to my studies, or science, or a job, I’m supposed to work on it, one problem solved. On the other hand, linking a pet project to a proper obligation bears the risk of control loss. Nobody will force me to do exactly what I already wanted to do, so if I need some force, it may come along with a shift of focus. I’m already afraid of it, but I have to face it. It’s no deal if Cubenet turns into the wrong direction at first, if I always keep enough control to change it afterwards. Licensing it under a copy left license enforces this, because everybody may develop it in any direction, which includes myself. Every study, research project or contract has an end, and with a copyleft license and version control, projects can evolve or stand still, but they can never fall back.

So now I’ve talked myself into taking this project serious, into writing about it and justifying my decisions. Now the actions must follow. To kick start this project, I’ve installed a Redmine workspace at http://lenaschimmel.de/redmine/ and populated it with a huge mass of old notes, and a git repository for source code control. This is not only a place for old texts to get even older, it will be the central for cooperative working on the project itself.

If you feel like you want to be a part of my monster pet project, head over there and get yourself an account. Or just contact me with whatever you think about it.

Using Tomcat (or anything Java) on a virtual server

When it comes to serving web pages, two technical trends (among others) are prevalent: virtual servers and server side Java. To the end user, both are completely transparent, and even the server administrator might forget the fact that his server is virtual, because from experience he can tell that it behaves exactly as a physical server. It seems only natural (not even worth mentioning) to combine both trends.

In fact, this is not as easy as you might guess. Lets say you have a virtual server, running Ubuntu 9.04, and have installed sun-java6-jdk, and decompressed tomcat-6.0.18 somewhere.  The most trivial way to start it is

tomcat-6.0.18/bin/startup.sh

which is likely to tell you something like

Using CATALINA_BASE: /(...)/tomcat-6.0.18
Using CATALINA_HOME:   /(...)/tomcat-6.0.18
Using CATALINA_TMPDIR: /(...)/tomcat-6.0.18/temp
Using JRE_HOME:       /usr/lib/jvm/java-1.6.0-sun

While this might seem as if the server was started successfully, nothing really happened. A look into /(…)/tomcat-6.0.18/logs/catalina.out might show something like

Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

This is due to the way memory management is handled on virtual servers, which you can read here. It has nothing to with the actual amount of RAM that Tomcat needs, it also appears that a simple command like „java -version“ tries to allocate more memory then it is allowed to (284 MB on my vServer). Several sites recommend to set the -Xmx option when starting Java, mostly by modifying scripts which are not made to be modified. Some others advise changing /etc/java-1.5.0-sun/jvm.cfg to prefer the client VM over the server VM, or even to delete the server VM and symlink it to the client version.

Not only is it highly absurd that you have to use a client VM on a server just because the server is not capable of running the server VM, but it also is impossible, because Java 6 seams to have no client implementation on 64 bit processors – and of course virtual servers run on 64 bit machines (mine has at least 44 GB of RAM, how would it handle this on 32 bit?).

Using -Xmx seems to work, even though you do not want to change each and every script that calls java or javac. To encompass this, you can set the environment variable JAVA_OPTS to something like JAVA_OPTS=“-Xms10m -Xmx256m“, which is definitely picked up by Tomcat, and maybe used by other scripts which run java or javac. Sadly, many scripts do not, and there seems to be not way to make java „just run“ on a virtual server.

With the proper options, java does run, but Tomcat does not. It keeps on saying

Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

I started writing this blog post hoping that I would conclude with a working solution, but as it seems right now, I just cannot find one. I will keep trying, possibly not only searching the web but also posting questions like I did on serverfault.com and in the end I will update this post to reflect the solution.

One more note: whil this works for calls to the „java“ binary, it does not for „javac“, which does not directly accept -Xms and -Xmx. You have to use -J-Xms and -J-Xmx instead.

I’m currently out of order…

…and so is my blog.

(I know that „out of order“ applies to technical stuff, an normally one would say „I’m currently too busy“. But depending on how busy you are, there isn’t a clear distinction anyway)

It might seem as if my blog was dead even before it started living. But rest assured, this is just a temporal break. Currently, my studies and other affairs are so demanding, that blogging just doesn’t fit in. It was even hard to find a moment to post this post, which just emphasizes its message. But as I think that having time for blogging is a crucial right of any human being, I’m constantly trying to change my life in a way that will give me that time back (and time for other things, of course).

There are so many things to say, mostly unwritten but well thought about, so that in the not-so-distant future, when I’ll have the necessary time, there’s no risk of running out of ideas. To make the waiting worthwhile, I’ll present a (not even complete) List of topics that I want to cover soon:

  • What does it take to be an inventor?
  • Tin-openers as a model for software tools
  • When the food is smiling at you
  • Is portability a means to an end, or an end in itself?
  • Is OpenStreetMaps an every-day-alternative to e.g. Google Maps?
  • How everybody can contribute to OpenStreetMap without even leaving his home.
  • Make simple things simple, or: the theory of computational complexity applied to human beings (for both computer-related and real-world tasks)
  • How it feels to fail at the most simple tasks
  • The problem of fuzzy groups in social interaction and web administration
  • The pros and cons of tuition fees (Studiengebühren)

I can’t guarantee that each topic will be covered, or that I will manage to do this any time soon, but if some of this sounds interesting to you, you should consider coming back or subscribing to my RSS feed.

PS: One note on the choice of language: This will be an english blog. But if I have something of interest only to a limited, german-only audience, I fall back to using german. If you’re an english speaker, you probably don’t miss anything.

Ein Plädoyer für das entspanntere Studieren

Auch wenn es in allen Forderungskatalogen vorkommt, die in den letzten Tagen erarbeitet wurden, so wurde der Themenkomplex „Leistungsdruck, Creditpoints und Studiendauer“ bisher nur Oberflächlich behandelt, und leider kam auch keine Arbeitsgruppe dazu zu stande.

Ich teile daher meine persönlichen Ansichten und Ideen dazu mit, in der Hoffnung, dass möglichst viele es ähnlich sehen. Dabei drehen sich meine Betachtungen einzig und allein um das „länger Studieren“. Es mag auch gänzlich andere Wege geben, aber ich betrachte nur einen, dafür aber auch recht detailliert.

Zunächst aber noch etwas „Vorgeplänkel“ zu den Typen der Studierenden und den Problemen derer, die länger Studieren. Am Schluss kommen noch ein paar konkrete Lösungsansätze.

Typen der Studierenden

Jeder Student ist anders, aber trotzdem lassen sich gewisse Grundtypen ausmachen. Da sind zum einen die „Vorbildlichen„, die ohne zu Murren ihr Studium in der Regelstudienzeit durchziehen und dabei noch ganz ordentliche Noten hinlegen. Dann gibt es die „Faulen„, die sich kaum an der Uni sehen lassen, wenn sie mal bestehen, dann mit 4,0 und in zehn Jahren studieren sie wahrscheinlich immernoch.

Für viele hört die Betrachtung da schon auf. Entweder wird hart zwischen den beiden Typen unterteilt, oder man sieht sie als lineare Skala an – irgendwo dazwischen wird sich schon jeder Student einordnen lassen. Meiner Meinung nach ist das Quatsch.

Eine ganze Menge Studenten – dazu zähle auch ich mich – hat klare Ziele, möchte auch bald mit dem Studium fertig werden, ist wissbegierig und fleißig, lernt sogar gerne über das geforderte hinaus… und möchte dennoch in Ruhe, in Würde und Selbstbestimmung lernen, und dabei noch ein bisschen Privatleben genießen. Natürlich liegen die irgendwo zwischen den „Vorbildlichen“ und den „Faulen“, aber nicht nur das, sie haben auch eigene Merkmale, die man in den anderen Extremen selten findet. Nennen wir sie daher einfach mal die „Individuellen„.

Darüber hinaus gibt es sicher noch andere Grundtypen, aber ich will es hier nicht ausarten lassen. Die zuvor genannte Dreiteilung deckt immerhin 90% der Studenten ab, behaupte ich einfach mal.

Das Paradoxon, gelöst

Manchmal wirken die Individuellen hochgradig paradox: Sie beschweren sich einerseits, dass sie zu wenig Zeit haben, zu viel Stoff durchpauken müssen, überlastet sind… und andererseits möchten sie ihr Wissen verbreitern und vertiefen, sich intensiver mit Themen beschäftigen, ihr Wissen und ihren Charakter stärken. Sie wollen nicht den ganzen Druck der Benotung, aber fordern von sich selbst ab, alles gut und richtig zu können und zu machen. Vielleicht wollen die sogar mehr Theorie und mehr Praxis. Wissen die denn gar nicht, was sie wollen!?

Klar wissen sie es: Sie wollen mehr lernen (insgesamt) und weniger lernen (pro Zeiteinheit). Daran ist nichts paradox, und man kann mathematisch leicht herleiten: Sie wollen mehr Zeit. Da muss es doch eine Lösung geben.

Und viele haben auch eine Lösung parat: Na dann studier doch einfach länger! Das hört man von den „individuellen“ Artgenossen ebenso wie von den „Faulen“, manchmal sogar von den „Vorbildlichen“… auch wenn deren Standartantwort eher ist „Na mach dir nicht ins Hemd du Weich-Ei! Ich beschwer mich doch auch nicht“.

Stigmatisierung der Langzeitstudierenden

Das Länger-Studieren ist in der Tat eine mögliche Lösung – die ich auch im Bachelor ganz bewusst gewählt habe. Mir einer Überziehung von 2,2 Semestern sehe ich mich nun nicht als „ewiger Student“ und ich denke, auch meine Noten können sich sehen lassen. Vorallem habe ich aber das gute Gefühl, mich mit dem Stoff und darüber hinaus angemessen befasst zu haben.

Leider kann nicht jeder diese Lösung wählen. Es sind (mindestens) drei Faktoren, und alle laufen darauf hinaus, dass „länger studieren“ als schlecht, abnormal und unerwünscht eingestuft wird.

Zum einen ist das das BAföG. Man erhält es einerseits nur für die Dauer der Regelstudienzeit. Andererseits gibt es eine Leistungsüberprüfung ab dem 5. Semester. Wer zu dem Zeitpunkt erwarten lässt, dass er länger als Regelstudienzeit studieren wird, bekommt ab diesem Moment gar kein Bafög mehr – also nur 4 Semester lang, selbst wenn die Regelstudienzeit z.B. 7 Semester beträgt. Viele Studenten brauchen das BAföG zum Leben.

Wer sowieso kein BAföG bekommt, steht genauso unter Druck: Die Eltern zahlen den Unterhalt, und erwarten von ihren „lieben kleinen“, dass sie gefälligst in Regelstudienzeit fertig werden. Und das unpassende Wort „Regelstudienzeit“ gibt ihnen ja sogar recht dabei. Egal wie das Verhältnis zu den Eltern ist: Wenn man sie mag, will man sie ja auch nicht über das nötige hinaus belasten, und wenn man sich mit ihnen nicht gut versteht, dann sind sie auch nicht sonderlich gewillt, länger zu zahlen.

Ein drittes und subtileres Problem, weil weder gesetzlich festgelegt noch finanziell nachprüfbar, ist das schlechte Ansehen von Länger-Studierenden. Viele haben Angst, dass andere schlecht über sie denken werden: Die Eltern, die Profs, die Komilitonen, die potentiellen Arbeitgeber… jeder könnte einen für faul, schwach, dumm, langsam oder ziellos halten. Man hat (leider begründete) Angst, nicht mehr ins gesellschaftliche Ideal zu passen. Der Gesellschaftliche Druck ist so hoch, dass man diese Denkweise irgendwann selbst annimmt: Man hält sich letzlich selbst für faul, schwach, dumm, langsam und ziellos.

Respekt und Solidarisierung statt Abfindung und Resignation

Kaum ein Student hat es heutzutage leicht, und selbst wenn es einer leicht hätte, könnte man ihm das doch sicher auch einfach gönnen. Die Studenten protestieren gegen die Uni, das Land, die Politik, evtl. auch gegen die Profs. Dabei ziehen theoretisch alle an einem Strang. Erschreckenderweise scheitern viele Versuche, etwas zu verbessern, aber schon an der ersten Hürde: Mangelnde Solidarität der anderen Studenten. Ich konnte in den letzten Tagen verschiedene Gründe erleben, warum Studenten sich nicht an den Protesten beteiligt haben:

Sie finden die Form des Protestes falsch – haben aber auch keine bessere Alternative. Sie sagen, sie haben keine Zeit zum Protest – was ja eigentlich schon genug Grund zum Protest sein sollte. Oder es interessiert sie einfach nicht. Alles keine perfekten Gründe, aber durchaus akzeptabel und nachvollziehbar. Wirklich schockiert haben mich aber die zahlreichen Diffamierungen der Streikenden als „Vollidioten, die es verdient haben, rausgeext zu werden“, „Weicheier, die nur rumjammern können“, „Nervensägen, die sich selbst inszenieren und damit echte Studenten vom studieren abhalten“ etc. Viele Studenten haben nicht den geringsten Hauch von Respekt und Mitgefühl für ihre Mitmenschen – und das einfach deshalb, weil sie glauben, jeder müsse die Sitation genauso empfinden wie sie selbst.

Es mag sie ja wirklich geben, die hochintelligenten, die ohne Probleme alles durchziehen können und dabei noch genug Freizeit haben. Und auch wenn ich es nicht gut finde, wie diese sich äußern, so muss man doch sagen: Sie haben auf ihre Weise recht. Außer bloßer Solidarität könnte sie nichts dazu bringen, mit zu streiken. Mein Verdacht ist aber, dass unter den abschätzigen Gesellen viele sind, die in gewisser Weise auch Opfer des Leistungsdrucks sind. Natürlich sind das alles wage Vermutungen…

Entweder, sie sind noch so früh im Studium, dass sie noch in der (angenehmen) Illusion leben, dass alles easy und locker ist. In meinem Bachlor gab es viele davon: Im 3. Semester war ich der einzige von 35 Studenten, der es für sinnvoll und nötig befang, länger zu studieren. Letztlich sind nur 3 davon in Regelstudienzeit fertig geworden.

Oder aber, sie sind schon so lange dem Stress und Druck ausgesetzt, dass sie es als normal empfinden, sich damit abgefunden haben. Vielleicht glauben sie, sie brauchen keine Freizeit, oder meinen, sie hätten es als Student nicht verdient. Oder aber, sie reden sich ein, dass sie es so sehen müssten, weil sie sonst selbst zu den faulen Jammerlappen gehören, den „Minderleistern“.

Vielleicht hat jemand schonmal von dem Phänomän gehört, dass Schwule, die sich nicht trauen, sich zu outen, sich oft besonders schwulenfeindlich zeigen, damit sie bloß niemand für schwul hält. Ob es diese Art von Schwulen wirklich (noch) gibt, weiß ich nicht, aber ich glaube schon, dass viele von den „Fleißigen“ nur deshalb so abwertend über die „überlasteten“ reden, weil sie sich nicht eingestehen wollen, selbst überlastet zu sein.

Ok, soweit die Vermutungen und Spekulationen. Selbst wenn diese nicht zutreffen – also wenn alle unsolidarischen wirklich zum Typus „hyperintelligenter Vorbildstudent“ gehören, ändert das nicht viel an den meisten meiner Grundaussagen. Wir brauchen mehr Anerkennung, Akzeptanz und Unterstützung von Studenten, die „länger machen“. Das sollte doch umso einsichtiger sein, da es sich ja nichtmal um eine Minderheit handelt, sondern um den Regelfall.

Von daher fordere ich zu allererst die Abschaffung des Unwortes „Regelstudienzeit“. Den Namen hätte es nur verdient, wenn es „die Regel“ wäre, so lange zu studieren. Und das ist dann der Fall, wenn der Mittelwert (oder geg. Falls der Median) der Studienzeiten dem entspräche. Man könnte es z.B. „Mindeststudienzeit“ nennen. Das ist zwar auch falsch, weil ein kleiner Prozentsatz wirklich eher fertig wird, aber längst nicht so falsch wie die „Regelstudienzeit“.

Das Problem auf den Punkt bringen

Nun besteht das Problem für viele also darin, dass sie in einer gegeben Zeit mehr studieren „sollen“, als es ihnen in der Zeit gut täte. Ob das „Sollen“ nun Zwang, Empfehlung, finanzieller oder psychologischer Druck ist, sei mal dahingestellt. Würde es sich nur um die typischen „faulen“ Studenten handeln, so könnte man da diverse Lösungen finden, die ihnen gefallen, aber dafür eindeutig (und berechtigt) von den anderen abgelehnt würden. Wenn wir aber davon ausgehen, dass darunter auch einige von den lustigen Leuten sind, die ich oben als die „individuellen“ betitelt habe, wird die Sache schwieriger, denn für die muss noch das scheinbare Paradoxon eingehalten werden: Sie wollen mehr lernen (insgesamt) und weniger lernen (pro Zeiteinheit).

Die Bürokraten unter uns (und die sitzen meist eher in der Hochschulveraltung als unter den Studenten) haben eine ganz einfache Lösung, die sich sogar schon selbst erfüllt hat: Auf dem Papier steht, dass ein Student pro Woche X (X=40 oder X=60) Stunden arbeiten muss, um sein Studium in Regelstudienzeit zu bestehen. X Stunden pro Woche sind machbar und akzeptabel, also ist das Studium akzeptabel. q.e.d., Protest abgelehnt.

Lösungsansätze

Regelstudienzeit erhöhen bei gleicher Stoffmenge

Das könnte vielleicht das Optimum sein. Die schnellen Studenten können dann halt unter Regelstudienzeit fertig werden, die etwas langsameren liegen dann genau in der Zeit, und jeder lernt das, was er jetzt auch lernt. Nachteile? Nun ja, irgendwelche (blöden) Regelungen schreiben nunmal vor, dass ein längeres Studium auch mehr Creditpoints bringen muss, und somit mehr Inhalte. Das bringt uns dann zur folgenden Alternative…

Regelstudienzeit erhöhen bei proportinal erhöhter Stoffmenge

Nun, sicher wäre das machbar, aber hat es irgendwelche Vorteile? Es wäre genauso viel Stress, nur mehr davon 😉 Außerdem müssten die Professoren sich neue Inhalte einfallen lassen, was vielen sicher auch nicht passt. Ich denke, diese Alternative kann gestrichen werden.

Regelstudienzeit beibehalten bei verringerter Stoffmenge

Auch gegen diesen Vorschlag würde es begründete Proteste geben. All jenen, die wissbegierig sind – sei es aus persönlichen oder beruflichen gründen – wird damit in keiner Weise geholfen. Das Studium würde damit an Wert verlieren, und in vielen Fachrichtungen gilt der Bachelor ja schon jetzt als „zu oberflächlich“ und somit wertlos.

Regelstudienzeit und Stoffmenge behalten, aber Niveau und Anforderungen senken

Das ließe sich auf verschiedene Weisen umsetzen. Viele davon würden dazu führen, dass die Qualität des Abschlusses für alle gesenkt werden würde, also auch für die fleißigen, wissbegiereigen, etc. Auch wenn das nicht akzeptabel ist, fällt damit nicht die gesamte Alternative weg. Man kann sich durchaus Umsetzungen vorstellen, bei denen nur jene Anforderungen gesenkt werden, die keinen echten Zusammenhang zur Qualität des Wissens haben. So könnten Fächer mit mangelnder Praxisrelevanz vereinfacht werden, oder formale Regelungen aufgeweicht werden, die einem nur das Leben schwer machen, ohne Wissenszuwachs zu bringen.

Nachdem die vier Vorschläge alle nicht sonderlich erfolgversprechend waren, möchte ich noch zwei weitere näher im Detail vorstellen:

Regelstudienzeit erhöhen bei gleicher Stoffmenge

Moment mal – das hatten wir doch schonmal (erste Alternative), und als unmöglich abgestemptelt!? Ja, allerdings wurde da ein Lösungsweg übersehen, der nun ausführlich dargestellt werden soll. Wie gesagt: Wenn die Regelstudienzeit steigt, muss es auch mehr Creditpoints geben. Und das heißt in der Regel, dass auch mehr Inhalt her muss – es sei denn, der Mehr-Inhalt ist schon lange da und wird nur nicht erkannt. Viele der Module könnten einfach mehr Credit-Points bringen. Natürlich lassen sich auch diese nicht beliebig hochstufen, denn irgendwo ist noch ein Verhältnis definiert, das angibt, wie viele Arbeitsstunden zu einem Creditpoint gehören. Und wenn man die CreditPoints erhöht, muss man die Arbeitsstunden erhöhen. Wollen das unsere überarbeiteten Studenten? Ja, auf dem Papier durchaus. Man stelle sich eine Vorlesung vor, die 4 SWS hat und 3 CP einbringt. Der Tatsächliche Arbeitsaufwand ist aber viel höher als auf dem Papier steht. Wenn man diese Realität nun auf’s Papier überträgt, und somit die SWS und die CP erhöht, dann können die Studenten mit dem gleichen Inhalt, den sie nun auf mehr Semster verteilen, genügend Creditpoints sammeln, um die zusätzlichen Semester zu rechtfertigen. Meiner Meinung nach ist das die perfekte (und somit beste) Lösung, denn sei basiert nur darauf, die Realität als solche anzuerkennen – was könnte daran falsch sein? Trotzdem, an der FH, an der ich bisher studiert habe, wurde diese absolut naheliegende Lösung komplett blockiert, und ich fürchte, das könnte hier auch passieren. Daher noch eine Alternativlösung…

Alles lassen wie es ist, aber die Rahmenbedingungen für das Länger-Studieren verbessern

Es klappt ja auch jetzt schon: Manche studieren länger, bekommen die gleiche Anzahl Credits wie andere, sind dabei aber entspannter und können vertiefter Lernen. Diese Studenten sind glücklich, und zwar deshlab, weil sie es sich finanziell, gesellschaftlich und gegenüber dem eigenen Stolz leisten können. Nur leider gilt das nicht für alle. Damit alle ihr Recht zum Länger-Studieren bekommen, müssten sich aber folgende Dinge ändern: BAföG auch über die Regelstudienzeit hinaus, weg mit der Leistungsüberprüfung nach dem 4. Semester, Langzeitstudiengebühren erst später… das lässt sich alles gesetzlich und per Verordnung klären. Aber damit nicht genug, es bedarf auch einem Umdenken auf allen Seiten: Bei den anderen Studenten, den Arbeitgebern, den Eltern, und letzlich den betroffenen selbst. Wie man diese Änderungen „erzwingen“ will, ist mir ein Rätsel. Aber Respekt und Solidarität könnten schon ausreichen.

Links, Karten und Videos zum Bildungsstreik

Hier schnell das wichtigste um ins Thema einzusteigen:

Die Themen

Das hier sind die Themen im Groben, vielleicht ist ja was für dich dabei:

  • Abschaffung der Studiengebühren
  • Freie und kostenlose Bildung für alle
  • Mehr Geld für Bildung
  • keine Hürden für den Wechsel vom Bachelor- zum Masterstudiengang
  • paritätische Mitbestimmung in allen Gremien
  • Anpassung des Arbeitsaufwandes an die Realität
  • Abschaffung studierendenfeindlicher Regelungen der Prüfungsordnungen

Eine genauere und aktuellere Liste der Forderungen findet sich hier im Forum.

Weitere Links

Abschließen möchte ich erstmal mit einer kleinen thematischen Linkliste:

Besetzte Hochschulen


Unsere Unis (by zurPolitik.com) auf einer größeren Karte anzeigen

Motivationsvideo

Wahlweise auf Youtube oder gleich hier:
[pro-player width=’425′ height=’384′ type=’video‘]http://www.youtube.com/watch?v=7v61hwDDakI[/pro-player]

Was geht mich der Bildungsstreik an der TU-Braunschweig an?

Tja, noch vor einigen Stunden war das eine durchaus unbeantwortete Frage. Ich studiere ja hier erst seit ein paar Wochen, und auch wenn es hier und da etwas stressig oder langweilig ist, ist doch eigentlich alles in Butter. Und überhaupt, sich nach so kurzer Zeit schon lautstark zu beschweren…

Ohne mich…

So wie ich dachten (leider) viele, und somit ware dann „nur“ ca. 300 Studenten an der Besetzung des Audimax und den Demos in der Stadt beteiligt. Ich habe mich jedenfalls – mit dem Antrieb der Fachgruppe Informatik, zu der ich auch mehr oder weniger gehöre – aufgerafft und mich in die abendliche Plenumssitzung im besetzten AM begeben. Hinter dem vielen Gepfeife und Getrommel, der Partystimmung und den Sprechchören steht noch mehr, nämlich sachliche Diskussionen über die aktuellen Misstände. Und die Probleme sind vielschichtig. Neben viel Analyse und ein wenig Gejammer und Gemecker kommen dabei aber auch viele konkrete Vorschläge und Forderungen heraus.

Im Zentrum der Aufmerksamkeit stehen die Maschinenbauer, und das sind echt arme Schweine. Offenbar sind ihre Studienbedingungen so unhaltbar, dass man sich als nicht-Maschinenbauer fragt, ob man sich denn überhaupt beschweren darf.

Darf man meckern?

Ja, muss man sogar. Zum einen aus Solidarität, denn auch wenn ich keinen einzigen der MBs persönlich kenne, geht einem das nunmal nicht am Arsch vorbei. Und die MBs werden sicherlich eher Gehör finden, wenn alle sich dem Protest anschließen. Andererseits kitzelt der so angezettelte Streik auch bei jenen das Beschwerdepotential hervor, die sonst eher still sind. Und letzlich kommen auch die vielen Kleinigkeiten zur Sprache, die man sonst einfach als gegeben hinnimmt. Eine Win-Win-Situation für alle Studenten.

Ich möchte daher an alle und jeden appellieren, sich auch mal kurz Gedanken zum Streik und zu den Misständen zu machen. Ich weiß, nicht jedem liegt das laute protestieren, aber daran schließt sich nun vermutlich auch einiges an leiser, kommunikationsintensiver Zusammenarbeit an, falls sich denn die angekündigten Arbeitsgruppen für spezielle Themen zusammenfinden.

Mehr Infos

Ich hatte hier erst noch passende Links, Videos, ect. eingefügt, aber das ganze nun ausgelagert.

Me, my websites and blogging

My first website

Since I had an Internet connection, I also had a homepage. Because PHP and other dynamic web languages were not part of the free hosting services at this time, I wrote my own offline homepage generator, or what would be called a „content management system“ nowadays. It’s „offline“ because it ran locally on my PC, generated an number of html-files, and left it up to me to upload them over my 33 kbit/s line.

As you can see on the picture, I had a well planned site structure for the site, which regrettably has never been filled with content. For me, the work flow was not „Oh, today I might want to fill in some of the gaps on my website… like… err… this one: Musik“. Rather, I had some thought and just needed a platform to express it.

A post-based website

Because of this, I added a post system to hpd2, which allowed me to put a new post on the home page that would push the older posts into an archive. It turned out that my early posts either belonged into the „private“ category, or into „programming“, so I implemented a simple category system. Sadly, the most „recent“ picture of that website is about 10 years old and just before I built the post system.

Some time late, I remember it to be around Christmas, one of my PCs ran into serious hardware problems, which made me personally unhappy, at the same time hindering me to fulfill my programming visions regarding Open GL. I could still update my website and share my sorrow with the world , but should this go into „private“ or „programming“? This was the first time I felt the need for something better than just categories. And so I went ahead an invented what would late be known as „tags“.

A break

Some months later, I finally realized that no one is interested in reading about my life, both privately and programatically, so I eventually stopped updateing that site. After maybe a year without updated it had undergone the automatic garbage collection of the web host and was lost until today, when I found an old offline copy on one of my hard drives.

What’s a blog?

In the retrospective, it’s pretty clear that my website was a blog, but at that time, I did neither know the word „blog“ nor the concept behind it – it was kind of my invention, even though I was not the first to invent it. That’s typically me: Being on the bleeding edge when it comes to my own creativity, but lagging years behind in noticing what’s happening around me.

One of my websitesSome years later, blogs became so popular that even I heard of them. My first thought was: „Who would be interested to read that stuff?“, and only after that the resemblance of „blogs“ and my first website came to my mind. So I thought about blogging as a collective abberation, with myself as one of the first to have gone through it. I came to my senses and stopped it, and so would they.

Consequently, my next website was planned from the beginning without a blog. Anyway, it was at least as ugly as the ones before and suffered other fundamental problems which made me abandon it rather soon.

A comeback

Well, time has proven that blogs are not that brain dead, and now that I have familiarized myself with reading blogs (as you can see on the right sight in my blog roll), it seems to be the right time to come back to that good old habbit of writing a blog.

So what can you expect from it? It’s definitely going to be kind of nerdy, as I’m definitely a nerd. Whenever possible, I’ll be trying to write in a way that lets the non-nerds understand me, so that after some time of constant consumption of my thoughts, they might eventually also become nerds 😉 Other than that, don’t expect anything, ok?