only one place I know where I'd want to be now
but this place is impossible to go
so I stay here chopping wood into pieces
thinking about the hypotheses

what if I was a piece of wood
it would be good but I am not
so I stay here chopping wood into pieces
thinking about the hypotheses

breaking wood to continue my dreadful life
feel the shivers shooting in my eyes
I stay here chopping wood into pieces
thinking about the hypotheses

just to burn the stuff away
to enlighten the night and heat up the day
I stay here chopping wood into pieces
thinking about the hypotheses

only one place I know where I'd want to be now
I imagine it being the destination of the smoke
I stay here chopping off my arm
throwing it into the fire and make it warm

my arm shall burn and turn into smoke
going to where I want to go
this part of me is finally released
in my imagination, at least

Bob, you've been waiting much too long
Now it looks like the driver is gone
Bob, you've been compiling all night long
All this time wasted dealing with the blob
If I could get the same attention
I'd give you a lot less dissension

If it doesn't come back ...
If it doesn't come back ...

I'll be your Aptitude, whenever you want me.
Don't you know I'll be your Aptitude, whenever you need me.

Bob, every day you've been tracing stacks
I've been hiding in your tray
Bob, all this time I've been suspended
Showing you on what you depended
I'm gonna wait until i get SIGCONT
Until you need to have a further font

If it doesn't come back ...
If it doesn't come back ...

I'll be your Aptitude, whenever you want me.
Don't you know I'll be your Aptitude, whenever you need me.

Each day by your screen
you sit and sigh
hoping to see windows.
You might as well forget about all
And use me in your terminal

If it doesn't come back ...
If it doesn't come back ...

I'll be your Aptitude, whenever you want me.
Don't you know I'll be your Aptitude, whenever you need me.

(Just a little inspiration. A moralic cake for everyone who finds out on what song this bases.)

For the best maths-club of the multiverse I will give a short talk on an already mentioned property of boolean sequences. As the audience consists of a wide range of ages and expierience, I will not do everything as formal as it should be done from a strictly mathematical point of view. My goal is to give young people an idea on what is going on, while providing to older people enough material to complete everything.

Furthermore, there is an easier way of showing the actual result, but I rather want to touch a large variety of topics than doing a short formal proof in detail. I hope to give especially young people an overview on many topics of logic and tcs.

0 Introduction

A boolean sequence is a sequence of boolean values "true" and "false", or 1 and 0. It can be seen as a function \mathbb{N}_0\rightarrow\mathbb{B} from the natural numbers \mbox{N}_0 into the boolean values \mathbb{B}=\{0,1\}. There are uncountably many such boolean sequences, as we will show later. Furthermore, in general, it is not decidable whether two such sequences are equal, even if these sequences can be enumerated by a computer program.

We are now interested in functions of the type (\mathbb{N}_0\rightarrow\mathbb{B})\rightarrow\mathbb{B}, that is, functions that assign a boolean value to boolean sequences. In general, their equality is not decidable.

However, if two such functions can be calculated by a computer program, it is decidable whether they are equal. We will show this in a rather complicated way, as our goal is not to give a prove of this, but to touch many fields of logic and computer science.

1 Crashcourse Infinite Sets

While for finite sets it is rather easy to talk about "numbers" of elements, for infinite sets we need a more sophisticated notion. We may assign every set its "cardinality", however, for our purposes it is sufficient to be able to compare the size of sets.

Definition: Two sets A and B have the same cardinality, iff there is a bijection f:A\rightarrow B.

Simple examples of infinite sets of the same cardinality are \mathbb{N}_0 and \mathbb{Z} through the bijection z\mapsto |2z|+\frac{1}{2}|\mbox{sgn}(z)|(\mbox{sgn}(z)-1). Furthermore, \mathbb{N}_0^2 and \mathbb{N}_0 are of the same cardinality, one bijection is the cantor pairing (x,y)\mapsto\frac{1}{2}(x+y)(x+y+1)+y.

Definition: Sets of the same cardinality as \mathbb{N}_0 are called countable.

That is, \mathbb{Z} and \mathbb{N}_0^2 are countable. Furthermore, \mathbb{Q} is countable.

Theorem: The set \mathbb{N}_0\rightarrow\mathbb{B} of boolean sequences is not countable.
Proof: Assume there was a bijection f:\mathbb{N}_0\rightarrow(\mathbb{N}_0\rightarrow\mathbb{B}) from the natural numbers into the boolean sequences. But then x\mapsto 1 - f(x)(x) cannot be in the image of f. Contradiction. --

Furthermore, \mathbb{R} and \mathbb{C} are not countable.

2 Crashcourse Computation Theory

There are several equivalent formal definitions of computability. However, they are rather technical, and outside the scope of this talk.

Improper Definition: A function is called computable, if it can be computed by a computer with inexhaustible memory in a finite amount of time.

Most functions you will usually have to deal with are computable. A simple example of a non-computable function is the following function nc:(\mathbb{N}_0\rightarrow\mathbb{B})\rightarrow\mathbb{B}

nc(f) = \left\{\begin{array}{cl} 0 & \mbox{if } f(x)=0 \mbox{ for all } x\in\mathbb{N}_0 \\ 1 & \mbox{otherwise} \end{array}\right.

It takes as an argument a boolean sequence, and decides whether this boolean sequence contains a 1.

If you do not believe me that this function is not computable, go on, try to implement it in the programming language of your choice! In fact, trying this is probably a good exercise.

Let b:X\rightarrow\mathbb{B} be a boolean function on some set X. If we have a given set X and such a function, we can build the set \{x\in X|f(x)=1\}. This way, boolean functions can be seen as functions which "decide" what elements belong to a set. This yields the following definition:

Definition: \mathbb{N}_0 is decidable, and for every decidable set X, if there is a computable function f:X\rightarrow\mathbb{B}, the set \{x\in X|f(x)=1\} is called decidable.

The intuition behind this definition is that a set is called decidable, if a computer can decide whether it contains a given element.

As with computable functions, also most sets one has to explicitly deal with is decidable. An exception can be derived directly by the above example nc: The set of (computable) boolean sequences which have at least one 1 in their image is not decidable. In fact, quite a lot of sets one uses implicitly are not decidable.

3 Crashcourse Logic

Definition: Formulae that only quantify over objects, but not over relations or functions of objects, are called first-order formulae. A first-order theory is a set of such formulae.

An example for such a theory is group theory

\{ \forall_xx=x+0, \forall_x\exists_y x+y=0, \forall_x\forall_y\forall_z (x+y)+z=x+(y+z)\}

Every structure satisfying a theory is called a model of this theory. For example, every group is a model of group theory.

Notice that theories need not be finite.

If a formula holds in all models of a theory, the theory implies this formula, and it can be shown that there exists a formal proof of this formula from the theory. This is called Completeness Theorem and the proof requires a lot of theory.

If a formula holds for a theory, then it holds for a finite subset of this theory: By the Completeness Theorem, it must be provable, and a formal proof is a finite object and can only use finitely many axioms.

4 The Proof

We will now show that in fact the equality of computable functions (\mathbb{N}_0\rightarrow\mathbb{B})\rightarrow\mathbb{B} from boolean sequences into booleans is decidable.

If two functions f,f' are not equal, we can find a boolean sequence g such that fg\neq f'g. Therefore, in this case we can prove the inequality. The more interesting part is that we can prove equality if it holds.

Firstly we notice that such a function f can, as it only runs for a finite amount of time, only access finitely many elements of its argument. That is, when calculating f(g) for some g:\mathbb{N}_0\rightarrow\mathbb{B}, there is a maximal m_g\in\mathbb{N}_0 such that the calculation depends on g(m_g), but not on g(m'), m'>m_g. For a given sequence g we can find this m_g by tracking which image values of g the calculation of f uses.

Our strategy is now to use this property to encode functions into a first-order theory. Denote by PA the theory of peano arithmetic (usual elementary number theory). We define an additional relation A_i on natural numbers i.

Let f:(\mathbb{N}_0\rightarrow\mathbb{B})\rightarrow\mathbb{B} and a:\mathbb{N}_0\rightarrow\mathbb{B}. Then we encode the information that f(a)=k by

M_{c,f,a}:=(\bigwedge_{a(i)=1,i\le m_f} A_i \wedge \bigwedge_{a(i)=0,i\le m_f} \lnot A_i)\rightarrow c=k

That is, we postulate that if A_i is true for a(i)=1 and false for a(i)=0 for all i\le m_f, then c=k. This is a straightforward encoding. To encode f completely, we define the theory

T_{c,f}:=\{M_{c,f,a}|a\in\mbox{dom}(f)\}

Now assume a second function g is given, with f = g. Then, PA\cup T_{c,f}\cup T_{d,g}\cup\{c\neq d\} implies a contradiction. By the Completeness Theorem, there is therefore a formal proof of a contradiction. We can use an exhaustive proof search (a "blast") to find a contradiction proof in that case, as we know it exists.

Probably, there will be a bright future for Linux Containers. However, so far, I miss a network configuration which is comparably easy to the default networks of Qemu and VirtualBox. I do not know whether the situation is better in OpenVZ, but I somehow do not like OpenVZ much. The main advantage of OpenVZ and Lxc for me is that they use the host filesystem as root filesystem. For incremental backups with rsync, this is vital, but it also makes quick changes to the configuration a lot easier.

So the idea was to actually use Qemu with a small image that boots into an nfsroot. I will try to give a little howto on how to do this with Xubuntu. However, I cannot guarantee that this will work for everyone else. Especially, the command line arguments are constantly changing, so in a few months, this might not work anymore at all. So better take it as a starting point for your own research rather than the final truth.

The packages needed (I hope I did not forget one) are nfs-kernel-server, qemu, qemu-kvm, kvm, debootstrap.

To build an initramfs, I first create a chroot, which I built with debootstrap. I want Debian Wheezy.

# mkdir /qemuChroot
# debootstrap wheezy /qemuChroot http://ftp.de.debian.org/debian/


This does a lot of stuff and takes a while. While it clatters, we can already begin to do our NFS configuration. We need to put the following lines into the /etc/exports file:

/qemuChroot 127.0.0.1(rw,sync,no_subtree_check,no_root_squash,insecure)

"insecure" is necessary, since we want to run the Qemu usermode network stack. Then we have to restart the nfs-kernel-server, to get the new configuration (or use exportfs -a, but I prefer restarting when possible).

Now, hopefully debootstrap ended correctly. Time to chroot into the system:

# chroot /qemuChroot/

In this chroot environment, install a linux-image, and initramfs-tools, and change BOOT=local to BOOT=nfs in your /etc/initramfs-tools/initramfs.conf and run

# update-initramfs -uk all

inside your chroot (please, check twice that you are in the chroot!!!). It will drop a few warnings (we could prevent them by mounting /proc and /sys and /dev) but should work.
To be able to access the machine later, we need to set a root password, using

# passwd

Exit the chroot again. The initramfs and kernel image we need is now in /qemuChroot/boot. For the kernel I use, they are called initrd.img-3.2.0-2-amd64 and vmlinuz-3.2.0-2-amd64.

We now have everything to start Qemu. Firstly, make sure that the kvm-modules are loaded, and that your user has apropriate access to these devices - for me, he needs to belong to the libvirtd-group. To use kvm, we add the argument -enable-kvm to our Qemu-commandline - leave it out if you do not want kvm acceleration, but be aware that this will be slow.
Qemu can directly boot into a linux kernel and initramfs, without the need of an extra image. Just add -initrd /qemuChroot/boot/initrd.img-3.2.0-2-amd64 -kernel /qemuChroot/boot/vmlinuz-3.2.0-2-amd64, or the appropriate paths for you, to the commandline.
We need to inform the kernel of our nfsroot. This is done by kernel arguments, which can be passed by -append "root=/dev/nfs nfsroot=10.0.2.2:/qemuChroot".
Finally, we want virtio-net (to make it faster).

The commandline to start the VM becomes

$ qemu-system-x86_64 -enable-kvm -initrd /qemuChroot/boot/initrd.img-3.2.0-2-amd64 -kernel /qemuChroot/boot/vmlinuz-3.2.0-2-amd64 -append "root=/dev/nfs nfsroot=10.0.2.2:/qemuChroot" -netdev type=user,id=usernet -device netdev=usernet,driver=virtio-net

This should correctly boot you into a virtual machine with the given root. However, for some reason resolvconf does not work properly, so make sure it is not installed on the virtual machine, and change the contents of /etc/resolv.conf into

nameserver 10.0.2.3

It is important to use the internal nameserver, udp packages are not transmitted for some reason.

You may want to export some services from your virtual machine to your host. For me, these are ssh and http. The -netdev argument must be changed into type=user,id=usernet,hostfwd=tcp::2200-:22,hostfwd=tcp::8800-:80 and I leave it to the reader to find out how other ports are forwarded.

Here is a documentation on Qemu-Networking, and here is some information about diskless booting with an Arch Linux rather than Debian. Both sites were very helpful for creating this howto.

It is natural that stuff gets broken, especially during a refurbishment, as it currently appears in my university. So I was only a little angry when the leaking toilet drenched my pants while flushing.

Well, I thought, let us try to find out the number of the janitor, and tell him. The department's page has a list with employees, but their function is not mentioned explicitly. So I called the head office, and they gave me a name. Unfortunately, this name did not appear on that list, so I googled it.

I found his mail address hidden in the deep forests of my universitie's website, and mailed him immediately.

I got a reply that there is a web interface for notifications about broken things, and he gave me a link to this web interface. So I followed this link.

A site showed up, telling me that plugins are missing. Well, I thought maybe it needs Java, and clicked on automatic installation.

It turned out that it requires Silverlight. Or Moonlight, in my case. And of course, after Moonlight was installed, it showed a shiny progress wheel around a percentage which did not get beyond 0%.

The university has a Windows Terminal Server, and I could get an account there, but ... only for noticing the janitors about a broken toilet? Well, our friendly admin sent me to a person who got that stuff work with his computer and usually does these notifications.

Silverlight... seriously? I mean, what could be the content of such a site? A textarea for the problem. Maybe something that searches for already filed damages. Maybe something to choose the room, and some address-field for correspondence. Why the heck would such an interface use Silverlight? I wonder how much they had to pay for this interface.


Source: fatpita.net
Die armen Ramersdorfer bangen um ihre wohlverdiente Ruhe. Die will ihnen nämlich ein "City-Service-Center" (was immer das ist) wegnehmen. Soweit sogut, nun schlugen sie als Alternative einen Kindergarten vor. Eine sinnvolle Lösung, denn Kindergärten machen keinen Lärm. Steht so im Gesetz.

Die Idee ist gut. Die sollten sich die Diskussionsparteien zur dritten Startbahn in München mal zu Herzen nehmen. Die Lösung des beschriebenen Lärmproblems ist so einfach: Wir bauen Flugzeuge mit integrierten Kindergärten. Für die Kinder ist das sicher ein schönes Erlebnis, in der Früh in München zu sein, zu Mittag in London, und dann wieder zurück, und das Schweben über den Wolken ist sicher auch ein schönes Erlebnis. Sie erquicken alleine durch ihr Dasein weiterhin die Fahrgäste, denen man Bild- und Tonübertragungen des Geschehens in der Kindergartenabteilung ihres Fliegers zeigen könnte. Und das Beste: Diese Flugzeuge würden keinen Lärm machen! Es sind schließlich Kindergärten!

The decentralized social network Diaspora which was even mentioned by the German Pirate Party now works together with the startup hub Y Combinator. I tried to install it once, but I gave up. It was too complicated, and it seemed too much like a stack of hacks. Probably I would have been able to install it, but for what? Nobody I know would use it. It was hard enough to convince people to use Jabber, and I still use ICQ and MSN with many of them.

People knowing enough to install it are usually familiar with other, more common technologies. People who would, in theory, use it have Facebook and stuff, and are unable to run an own server. I see only a very small niche for Diaspora, and this is the main problem: The most precious resource a social network has is its users.

An alternative that I liked better was Google Wave, which has now become Apache Wave. However, this is also hard to install. And complicated.

And both of them, and Facebook and Google Plus and whatever else, have one common problem: They solve already solved problems in new proprietary ways. What I want to see is a software solution that uses well-established protocols and formats, and just gives a simple layer to combine them.

Firstly, there are already enough protocols for chatting. There is no need to add yet another one. Just use IRC or XMPP. There are already plenty of web-frontends for them, there is no need to reinvent the wheel again. Same goes for notifications. To notify persons about timelines and events, there are common protocols. You can use RSS or Atom feeds, or IMAP. There are web-frontends and libraries for all of them. Again, no need to reinvent the wheel.
It gets a bit harder with discussions, as there is not yet a common format for such discussions in the web. However, there have been fora since a long time, there is enough expierience with these. And outside the web, there was the Usenet, maybe one could adapt the NNTP protocol.
For decentralized authentification, maybe GPG or Tripcodes are the best way of not having to store account specific information on every server, and still verify their origin. This problem is a bit harder, but it is not unsolvable.
"Personal pages" with a lot of design and stuff. Well, there is HTML and CSS. And there is bbcode and wiki-code. It is not like this was not a solved problem.
Facebook was, as far as I read, experimenting with video chats. Well, I already wrote about that problem. For audio-calls, TeamSpeak might be a practical solution, which also allows group chats, but of course is a proprietary protocol. I have heard of Mumble, but never tried it. For video calls, well, there is Ekiga, but there need to be good and stable versions for Windows and Mac. This is probably an open problem. There are protocols, but there is no software.
Desktop sharing is the other thing that is often mixed up with video calls. Well, cooperative working and desktop sharing can be done through VNC, but the applications must support it. But still, this is a problem with many solutions.

I do not say that it is not a lot of work to put all these pieces together, make them stable, and user friendly. I just think that doing it this way will have better results than creating something completely new.

And one final tipp for Diaspora: Packages for the common Linux distributions are a must!

There are some common desirable properties of data representation formats. Readability by humans is one such desire. Readability by computers is another one, which somehow contradicts the first one. Portability across platforms is one. Efficiency and compactness is another one that contradicts portability.

A binary format can be very computer-friendly, and very efficient, but it is usually not human readable, and it is often not easily portable due to encoding issues and integer byte orders. S-expressions are human readable and comparably easy for a computer to parse, JavaScript Object Notation is a bit harder to parse for computers but offers a bit more structure for the human to use. However, these formats have the usual encoding issuses and they are not very efficient (of course they can be gzipped).
XML is neither human-readable in its current form, nor is it simple to parse it by computers, nor is it compact and efficient, and portability is given in theory, but in practice there are a lot of fallacies. Yes, I do not like XML. I do not like most of the modern web-standards at all, because most of them just appear not to be thought through. That does not mean that I would be able to do everything better from scratch, it just means that there are a lot of well payed people out there who invented all of that crap.

However, during my time as an admin in the data center of my university department, I gained at least a little expierience with software - though of course not as much as someone working at a huge company for years - and that little expierience tells me to always look at what software can rather than what it cannot do, when really trying to build something. You will find deficiencies in every abstraction layer you have to work with. And you cannot build any realistic project completely from scratch, you have to rely on things others have done so far.

Now, XMLRPC is a standard for doing remote procedure calls over HTTP via an XML substandard. It can be called via default AJAX APIs from the browser, and it can be exported by a lot of languages, even Common Lisp has a library for exporting functions. So yes, it is a standard that bases on XML, and even apart from that it has its own deficiencies (like no default mechanism for null-values). But it gives an acceptable infrastructure for simple remote procedure calls. And for everything more complicated, you will use a specialized format, anyway.

That is why I like XMLRPC. It is a stupid standard, and actually, I would be able to come up with something better in, say, 20 minutes. But that is not the point.

Ja was sind sie denn nun, die Piraten? Rechtsradikal? Linksradikal?

Ich glaube, das Problem ist eher, dass die Leute sie nicht einordnen können. Es sind Netzbürger, die sich vielleicht auch in Hardcoreforen wie 7lan *duck* herumtrieben. Und eine distanziertere Betrachtungsweise, die wohl teils auch aus den USA mit deren stärker ausgeprägter Meinungsfreiheit stammt, gewohnt sind.

Da rutscht es halt einem mal raus, dass man ähnlich schnell wie die NSDAP Stimmen gewann. Das mag ja sogar stimmen, ich bin ehrlichgesagt zu faul, das nachzuprüfen. Aber unabhängig davon, diese Aussage ist sinnlos aber in meinen Augen einfach nicht schlimm.

Da rutscht einem beim X-ten Wichtigtuer halt mal ein roflcopter gtfo raus, das man dann aus Versehen versendet, und immer noch freundlicher ist als "Etwas Besseres ist Ihnen wohl nicht eingefallen?".

Wie kann man nur dafür sein, dass Leute den Holocaust leugnen dürfen? Nun, ich war einst klar dafür, inzwischen bin ich mir nicht mehr so sicher, aber weshalb man das glauben kann ist doch eigentlich offensichtlich: Wir brauchen kein Indiana Pi Bill. Wir müssen die Leute hinreichend gut bilden, dass sie wissen, dass der Holocaust stattgefunden hat, und warum es daran keinen Zweifel gibt, ein Verbot nützt nicht ewig etwas.

Hier kommt ein völlig neuer Ansatz: Selbst nachdenken. Die neue Aufklärung sozusagen. Sich mit einem Holocaustleugner unterhalten, sich seine Bedenken anhören, auf sie eingehen, und sie idealerweise öffentlichkeitswirksam widerlegen - kann sogar neue Erkenntnisse bringen.
Nun ist aber gerade der Holocaust so eine Sache, so ein wunder Punkt, den man in Deutschland vielleicht lieber in Ruhe lassen sollte. Nicht dass man hier am Ende noch die Büchse der Pandora öffnet. Deshalb bin ich mir inzwischen auch nicht mehr so sicher, und muss meine frühere Meinung teilweise revidieren.

Das ändert aber nichts an dem eigentlichen Problem. Ich glaube, das was der Presse momentan fehlt ist eine konkrete Angreifbarkeit der Piraten. Denn sie haben ein wenig von einer Strömung übernommen, die ich schon lange meine feststellen zu können. Ich nenne sie mal "Neutralradikal".

Gelebte Neutralität. Keine historisch begründete "politisch korrekte" Ausdrucksweise, wenn klar ist, dass das Gesagte nicht darauf bezogen ist - man darf sich "Pirat" nennen, weil man sich offensichtlich auf die fiktive Gestalt bezieht. Keine kulturellen Dogmen einfach hinnehmen, sondern sie hinterfragbar machen.
Sich auch mal trauen, zu etwas keine Meinung zu haben. Das ist nämlich etwas, zu dem Viele nicht den Mut haben. Man kann nicht alles wissen, also muss man auch nicht zu allem eine Meinung haben.

Ich denke es ist diese neue Form der Neutralität, die den Erfolg der Piraten zumindest mit ausmacht. Sie wird oft so interpretiert, als hätte die Partei kein Programm. Nun, sie hat eines, aber braucht sie das wirklich? Kann es nicht genauso sinnvoll sein, erstmal ein gemeinsames Ziel zu definieren, und sich darauf basierend zu überlegen, wie man es erreicht?

Fragen über Fragen. Vielleicht am Ende nur leere Floskeln, das wird die Geschichte zeigen. Ich denke, die Piraten werden keine Revolution auslösen; wie gut sie als Oppositionspartei sein werden und wie viele ihrer Ziele sie erreichen wenn sie erst einmal in der Regierung sind - wenn man davon ausgeht dass sie das jemals sein werden - bleibt abzuwarten. Aber sie setzen Impulse. Sie sind die Protestbewegung unserer Zeit.

External Content not shown. Further Information.
There are persons who are able to keep their living and working places tidy, even though they constantly use them. They seem to have automatized basic tasks that are needed to do between your work such that the tidiness is kept.

I am not one of these persons. When I use space, this space gets untidy. Sitting somewhere, working at something, scribbling a note and then just dropping it when not needed anymore is far easier than locating a bin and actually putting it there. Context switches are productivity killers.

However, with this kind of behavior, the room gets untidier, and you regularily need some time to tidy it up again. Depending on my mood, I do this more or less often. However, it is rather hard to have an objective discussion with people about why I do not immediately tidy up everything.

As with so many current topics, the problem lies in "moral" views rather than rational considerations. It is basically the common opinion that a room has to be tidied up. If you do not keep your room tidy, your mind is not tidy, and if your mind is not tidy, you are not effective and will not achieve as much as a tidy person - that is the general opinion. And of course, the order of utilities can make them easier to find and might therefore increase efficiency. However, there are some very successful people who are rather chaotic than tidy. A famous Einstein-quote in that context is, for example

If a cluttered desk signs a cluttered mind, Of what, then, is an empty desk a sign?

Another thing is that chaos can also be productive. Penicillin, for example, was discovered by a contaminated petri dish.

I do not claim that cleaning up is useless in general - it is necessary to clean and tidy things up from time to time. And if you are sick, for example allergical, it is necessary to clean up regularily. But if there is no special reason, be brave and look how things are getting untidy.

Some people claim that one feels better in a cleaned room. This might be the case for some people, but on the other hand, a room that is tidied up completely often feels empty and lifeless. To prevent this, the people buy ornamentations and staubfangers. Well, I feel better when the things in my room are arranged symmetrically, but I admit that this is a spleen, I do not use it as an argument for others to arrange their stuff symmetrically. So tidying up just for the sake of tidiness is a part of our culture, nothing more.
Especially, a common misconception sees tidiness as something that can be achieved and then stays where it is until it is broken by something intrinsically bad. This is wrong. Tidiness is a product of maintenance, not an achievable state.

Now, assuming you actually want to tidy up your room, which is - as I said - a good thing if it is done wisely and not just for its own sake, there are a few things to consider.

Firstly, tidying up decreases the entropy, while nature usually tries to increase the entropy. That means that the universe will do everything it can to keep your room untidy - always keep that in mind. It is natural for stuff to get messed up, to prevent peaks of energy. But on the other hand, minimizing the amount of energy peaks will also put a structure onto your stuff. For example, you yourself are a peak of energy, and having stuff you often access far away from you increases this stuff's energy. Usually, the items you often use are near the places you use them, except maybe for special reasons like keeping your keyboard away from your tumbler. Often, dirty stuff groups up, and keeps separated from clean stuff. And furthermore, big stuff will be surrounded by smaller stuff: big items do usually not form groups and will drift away from one another, keeping "clouds" of smaller stuff around them.
Look at your room when it is messed up. I am sure you will see some of this. Of course, you are a self-aware being, and this look on mess produced by you is not always accurate, but it is what I have seen in many untidy rooms. It seems to be the "natural order" of stuff when used while not being tidied up, it is a form of self-organization.
The important thing to keep in mind when tidying up is that self-organizing systems are often locally optimal, that is, sufficiently small changes will make it worse, and "sufficiently small" can still be pretty large. Usually, it goes like this: You tidy up a part of the stuff you have, you find more stuff to tidy up, so you tidy it up, just to find even more stuff to tidy up. A metaphorical "fractal" of mess, sort of. Make up your mind about the scale you want to tidy up. If you are sorting your crayons while your dustbunnies gain self-awareness, you do something wrong.

If you really want to tidy up, you need to replace the natural order by a good artificial order. The natural order can give you clues for that.
Items you often use will find their way back to you soon or later. If you want to prevent them from lying about on the floor again, put them somwhere you can easily reach them and easily put them back.
In case you find something buried under a lot of other stuff, think about whether you really need it. If you do not need it, throw it away, give it away, sell it on ebay or donate it, depending on what it is. If it has an intrinsic value for you, at least put it out of your way: Use it for decoration at some place you do not need, or put it in a box into your attic. Otherwise, you will burry it again, anyway.
Did something fall on the floor or tilt over? That means that the state in which it was in the first place was unstable. Think about keeping it where it is now - it found its way to its place automatically, so at least think of a reason to force it to somewhere else. Of course, if it is garbage, throw it away!

Keep in mind that your brain uses "anchors" for its daily tasks, like an item that reminds you of buying food, or an item that just reminds your subconciousness to produce endorphines. Anchors you might not be aware of before they are gone. Especially when cleaning up after a long period, these anchors might get lost, and with them an important mechanism for organizing your life. Be aware of this.
Furthermore, even though it sounds unplausible, for more than one time I expierienced that stuff gets lost after cleaning up, especially items which are used seldom. If you have a screwdriver to bleed your heater which usually lies on your desk, and you decide to put it somewhere else because you do not need it often and it looks untidy on your desk, chances are that you will forget where you put it, but still remember that it used to be on your desk. Think about whether you really have to put such items away. In many cases, it is the best to just leave them where they are.

Now that you have made up your mind what you want to place somewhere else, some people suggest you to have some sort of register for your stuff, especially paper-stuff. My expierience is that such registers tend to become overful and unusable. Sure, a lot of important stuff is at the same place, but what is the "inner" order you give it? Often, there is a lot of small crap you have to keep that has no particular obvious order, and thus will always remain unsorted. A chaotic drawer can be better than a highly organized register, depending on the amount of stuff you have. It is better to have a compromise: Use drawers for major topics, for example, "Work", "Finance", "Health", "Electronic Devices", etc. - you can of course use registers for it, but it is a pure waste of time to try to keep any order into these. Just put stuff into there and throw away stuff you find that you do not need anymore and put it into some cabinet.
Also many paper sheets you have are not needed in original. If you have a scanner, digitalize them and save them on some backup device (be careful to use a proper backup system, though). It needs less place and is easier to search through.

To achieve the best results, try to keep in mind that your aim is not to tidy up your room at first place, but to make it look tidy. Try to create huge plain areas - start at the center of your room, rather than at the edges. Try to create a "bubble" of tidyness. A few items lying at the side of your room will look ok, and if they really annoy you, just put them in your wardrobe, where nobody sees them.
Stuff underlies "diffusion": It will find its way into every gap. That is, try to block the common gaps, like under your bed, or under chairs, or behind your wardrobe, maybe by some items that fill up that place. For example, under your bed, there is a good place for suitcases.

Let us assume you are almost done, and now have a lot of stuff which you want to put in some junk room. Of course, your chair is so comfortable now, and you are so exhausted from tidying up, that you will not do that right now. You will likely just forget it, keeping it in your room, burying it with new stuff until the next time you clean up. The best way to prevent this is to put the stuff somehwere it annoys you, for example, in front of the door, or in front of your bed. It must get on your nerves so much that you cannot get used to it. Then you will find a moment of free time when it annoyes you so much that you will put it away - well, at least with a higher probability.