Danzig -> Marijampolė


Mit doch einiger Zeit Verspätung findet sich hier nun der zweite Teil des Berichtes über meine erste Radtour 2016. Das Ziel sollte eigentlich St. Petersburg sein; die dafür geplanten 3 Wochen sind selbst in der puren Theorie sichtlich ambitioniert. Geschrumpft auf nur 16 anstatt 21 Tage, von denen auch einige komplett für das Hedonisten-Festival verwendet wurden (eine gute Entscheidung !), habe ich real "nur" etwa 60% der Strecke umgesetzt.


Hier das erste Bild auf einer Fähre in Schwinemünde, die zwei nette Radwanderer von mir gemacht haben:


Einige Tage zuvor habe ich mein Tablet, dass ich hauptsächlich zu Navigationszwecken mit dabei hatte, fallen gelassen. Zunächst dachte ich, es wäre nun nur die permanente Spiderweb-App auf dem Display installiert, aber das Gerät war stattdessen völlig zerstört. Also sollte es ohne Navigation, ganz normal mit Karte weiter gehen.

Die Situation bei der Einfahrt in Polen war nun so, dass Kernpolen nur durch obige Fähre erreicht werden kann. Das wusste ich nicht, und es sollte ca. einen halben Tag kosten, das herauszufinden.

Denn normalerweise geht man davon aus, dass man ausgeschilderten Fahrradwegen, welche konstant in die richtige Himmelsrichtung weisen, auch folgen kann. Als ich also aus der Stadt herausnavigierte, fand ich den "roten" und den "blauen" Radweg. Der Rote führte zu obiger Fähre, aber ich wollte dann doch lieber zunächst den blauen Radweg probieren.

Dieser führte mich, über für mein Rennrad ziemlich ungeeignete Sand,- und Schotterpisten viele Kilometer an der Küste entlang in einen Wald hinein. Soweit nichts ungewöhnliches, ausgeschilderte Radwege müssen ja nicht immer die beste Bodenqualität aufweisen. Doch dann ging es in diesen etwas dichteren Wald, und urplötzlich endete der Radweg plötzlich an einem Leuchtturm.

Der Pfeil der Ausschilderung deutete richtig schön provokant auf diese Sackgasse. Hier fuhr keine Fähre, und es war einfach zu Ende. Es ist mir wirklich unverständlich, wie man nicht wenigstens alle paar Kilometer mal ein Hinweis der darüber aufklärenden Art platzieren kann.

Deutlich demotiviert von den Nachteilen des "blinden" Fahrens ohne Karte oder Navigationsgerät musste ich also den ganzen Weg wieder zurück, und dann doch die - dann aber immerhin kostenlose! - Fähre nutzen.

Dadurch gelernt habe ich, dass GPS-Navigation eben nicht nur eine Komfortfunktion ist, sondern tatsächlich Zeit und Nervenbelastung spart, was die Reisemotivation insgesamt doch enorm erhöht. Für zukünftige Touren wird hier an entsprechendem Equipment nicht mehr gespart werden.

Auf dem Weg nach Danzig gibt es dann nicht viel zu berichten; Nordpolen ist an der Ostseeküste entlang eben ein - aus deutscher Perspektive - rückständiges Land, mit verzweifelten Leuten und dementsprechend schlechter Lebensatmosphäre. Die Landstraßen hatten allerdings sehr gute und breite Radwege.

In Danzig angekommen auf der Routinemäßigen Suche nach der Tourismus-Info traf ich noch zwei weitere Radwanderer:

Über einen kleinen 50km-Umweg über die Marienburg, immerhin das größte Werk der Backsteingotik ging es dann Richtung Litauen weiter. Kaliningrad galt es einfach südlich zu umfahren. In Litauen angekommen gab es dann doch ordentliche Ernüchterung. Wahrscheinlich aufgrund der geringen größe kennt dieses Land das Konzept der Landstraßen nicht; entweder gibt es Autobahnen oder eben Feldwege zwischen den Städten. Das machte es mir mit meinem Rennrad unheimlich schwierig, weiter zu kommen.

Ausserdem setzte schon in der ersten Stadt, Marijampolė, ein kräftiger Sturzregen inkl. Gewitter ein, der laut Wetterbericht auch für die nächsten Tage nicht aufhören sollte. Ich hatte zwar Regenausrüstung dabei; aber demotiviert und mental wie psychisch durch die bisherige Tour angeschlagen entschied ich mich, schummeln zu wollen und ein Stück, vielleicht bis Riga, mit dem Zug zu fahren.

Allerdings machte ich den "Fehler" (ähnliches passierte mir auf meiner Wien-Reise auch) mir schon um den Rückweg Gedanken zu machen. Ich fand dort ein unglaublich günstiges Angebot - 35 € inkl. Fahrrad - mit dem Bus nach Berlin zurück zu fahren. Da mich die Broschüren von Tallinn und Riga nicht reizten, brach ich hier also die Tour 5 Tage früher als geplant ab.

Realistischerweise hätte ich also ohnehin nur Tallinn erreichen können. Für St. Petersburg braucht man definitiv noch eine weitere Woche.

Hier noch ein Bild im Wasted-Look, welcher meine Gemütsstimmung ganz gut wiederspiegelt, bei meiner Wiederankunft in Berlin:



Von hier galt es dann nochmal ca. 180km zurück nach Leipzig zu fahren.

Hier die Daten der Tour tabellarisch zusammengefasst:



Tag
km avs         
        time

1 95,475 19,8         04:48:00
2 142,46 22,2 06:23:00
3 189,71 19,6 09:38:00
4 0 0 00:00:00
5 0 0 00:00:00
6 0 0 00:00:00
7 70 24 02:45:00
8 34,826 18,4 01:53:00
9 121,11 16,9 07:09:00
10 124,89 20,1 06:11:00
11 144,85 20,9 08:27:00
12 79,34 20 03:57:00
13 113,7 20,6 05:29:00
14 170,69 23,7 07:10:00
15 130,73 21,8 05:58:00
16 51,769 18,3 02:48:00
17 200,98 23,2 08:38:00
Sum/Avg 1670,53    20,67
















Die nächste Tour wird zum Ende des Sommers 2016 durch Skandinavien gehen. Diesmal, etwas realistischer geschätzt, geht es von Kopenhagen nach Helsinki. Diese Tour wird mir mit 1129 km angegeben, was dann innerhalb 2 oder 3 Wochen mit Sicherheit geleistet werden kann.

Leipzig -> St. Petersburg Teil 1

Für den frühen Sommer 2016 habe ich mich entschieden, eine Radreise von Leipzig nach St. Petersburg zu machen. Inspiriert dadurch, dass es einen europäischen Radwanderweg von Berlin bis St. Petersburg gibt, den ich auf meiner Tour nach Wien im Jahr 2015 entdeckt habe, möchte ich diese doch recht große Strecke (1.890km) in 3 Wochen meistern.



Tag 1: Leipzig nach Dessau: 
Strecke: 95.475 km 
Avs: 19.8 km/h
Fahrtzeit: 4:48 min

Auf dem Weg nach Norden habe ich noch kurz Alex besucht. Im Decathlon bei Dessau/Roßlau besorgte ich mir noch schnell Camping-Geschirr. Da dies meine erste Tour ohne Zelt ist - denn jedes Gramm zählt - hab ich mir eine kleine Mini-Hängematte für 10€ eingepackt. Viele "Probleme" wie Krabbeltierchen und Morgentau geht man damit aus dem Weg; und zwei Bäume im Abstand von 4 Metern sind schnell gefunden.


Tag 2: Dessau nach Oranienburg 
Strecke: 142.46 km 
Avs: 22.2 km/h
Fahrtzeit: 6:23 min

Anscheinend bin ich doch weniger in Form als ich dachte; die 142.46km waren doch schon ziemlich anstrengend für mich. Da ich den Weltkongress der hedonistischen Internationale pünktlich erreichen will, muss ich meine Kräfte für den kommenden Tag sparen. Deswegen raste ich recht früh an diesem coolen Pennplatz:

Tag 3: Oranienburg nach "Geheim" nähe Friedland 
Strecke: 189.71 km 
Avs 19.6 km/h
Fahrtzeit: 9:38 min

Hier eine Vogelvoliere im Tier,- und Dinosaurierpark Germendorf:


Diese Tour war etwas härter und etwas über meinem täglichen Pensum, das ich mir vorgenommen hatte. Ich wollte aber noch unbedingt Abends auf dem Kongress ankommen, so das ich ordentlich in die Pedale treten musste. Sehr erschöpft, aber auch langsam wieder "sportlich" eingefahren erreichte ich dann gegen 23:00 noch das Festival an dem geheimen Ort in der nähe von Friedland.

Tag 4: Hedo-Kongress. Was ich alles phänomenales auf diesem Kongress erlebte, soll nicht Gegenstand dieses Reiseberichtes sein. Ich bin aber auf jeden Fall 2 Tage länger geblieben, als ursprünglich geplant.
Tag 5: Hedo
Tag 6: Hedo

Tag 7: Schwichtenberg nach Greifswald 
- ich habe aus versehen den Fahrradcomputer resettet; deswegen gibt es für diesen Tag nur Schätzungen. Bei dem recht gutem Schnitt von 24km/h bin ich mir aber sicher, da ich sehr gerast bin.

Strecke: ca. 70 km 
Avs: 24 km/h
Fahrtzeit: 2:45:00

Hier habe ich bei Vici nochmal alle Geräte und alles andere aufgeladen. Ab jetzt heisst es, die Ostseeküste nur noch in Richtung Osten zu fahren. Der nächste größere Halt ist Gdansk(Danzig).

Leipzig->Dresden->Prague->Brno->Vienna->Linz->Passau

I have not done a tour for some months, so i am very pleased to deliver you my latest experience that i just finished. Because of some international audience this blog is gaining on my tours, i am going to write this and all future travel reports in english. All my german audience is able to read it, anyway.

This time i wanted to visit Budapest. Unfortunately i only made it to Vienna. Read on to know, why.

Day 1: Leipzig->Oschatz; 85km

I started in Leipzig on September, 18. My first stop was the Skatecontest in Oschatz. Oschatz actually is only 60km away from Leipzig, but because i went with my boozing friends, we took the long 85 km route. As far as i know i made the last place of the finalists, which is place 6 at the contest. Actually, for having 85km and already a lot of beer this is a quite good result.

Day 2: Oschatz; 0km

Actually i got so fucking drunk at the afterparty of the Contest, that i decided to stay whe whole day in Oschatz to sober up.

Day 3: Oschatz -> Bad Schandau; 119,65km

Had Dresden on the Route, but i decided to ignore it and continue my way on the Elbe River. I already know Dresden a lot.

Day 4: Litoměřice; 81.48km

I was entering the Czech Republic. Asking a policeman at the border if i could pay with Euro, he told me that it´s better to go to the change office. So i decided to change 50€ in czk. This was a big mistake - i lost about 10€ in the transfer just for being so stupid to take the first cabin i came along!

Day 5: Mělník: 90km

I was being waked up by machine gun fire. Seriously. Only used to this sound through Computer Games so far, and it sounded absolutely identical. It was raining, and after i was looking out of my tent, i saw a tank driving around. I quickly did a reality-check if this isn´t a very realistic dream. It was not. I was camping inside a military training area. After quickly leaving the area i felt safe again. This also was the first time my left knee started to hurt. It always gets problematic after some hundred kilometers, and i was not really in Training.

Day 6: Prague; 19km(inside Prague)

On this Day i was approaching Prague. A Screw of my Carrier was broken and therefore lost. Fortunately there was a Scott Service Center where they replaced it quickly and for free! Now it was the first time i realized that my carrier is overburdened. According to the manual it can carry 25 kilo at maximum, and i estimate having about 30 kilo.

On the way to Prague i met Erik Arvidson, another very kind bike traveller who fortunately made some photos of me (i didn´t take a cam with me so i was depending on foreign people taking photos of me):





The Yellow bike is his machine, and just a few minutes after my flat tire, his spikes on his back wheel were being destroyed completely. In his own Words:

The irony of it: "I haven't had a single flat tire", then 500m later 13 spikes goes to hell
Of Prague itself i am really disappointed. I visited most of the touristic attractions, including the Miniature Eiffel Tower and the Castle. But i am not really impressed by the City, so i decided to continue quickly. Just as i was about to leave i randomly came about the Mystic Skatepark which is so awesome that i spent some hours there. See for yourself, this is Skater´s Paradise for street and transition skaters alike:




Day 7: Štěchovice; 57km

I started to realize that the Czech Republic is god damn mountainous. Not only hilly or something, i almost felt like in the alps. First gear, giving full power and only getting 7km/h. Very frustrating and Time consuming.

Day 8: Zruč nad Sázavou: 77,8km

Another very frustrating biking day on the hills. Mady my first contact with the czech police. They couldn´t speak english, the only word they kept repeating was "pass, pass". No problems with a german pass tough.

Day 9: Světlá nad Sázavou: 61,68km

Following the River Sázavou i was hoping that this mountains will stop. They didn´t ! Having a bike route on a river is not a guarantee that the route is plain !

Day 10: Brno: 94,57km

Now it was going to be more plain, the kilometer counter is raising again. Brno is a really, really great and nice city with a very scientific touch. I visited the Mendelianium there, which is really informative and one of the Cornerstone (besides Darwin) of genetics, and therefore modern Biology. A must-visit !

I also came across a Bike Park in Brno which was absolutely unskateable with a Skateboard. Even with great wheels. Oh and i came across the first skateboard bronze statue ever in my life ! I can´t find it on Google Images so i regret not having a cam with me even more now...

Day 11: Brno: 0km

Another Day in Brno. There was a great skate pool that i probably get sent a photo of. Will include it if possible.

Day 12: 92,88km

I quickly wanted to leave the Czech Republic because, really, the people were really unfriendly. Getting to the Austrian Border everything was getting better. Actually the reason also may be that there´s no language barrier anymore.

Day 13: Vienna; 99,29km



Vienna is an absolutely fantastic and very huge city. The image above is just a small Skatepark, there are much more of them around in the City. And the Wallride was higher than it looks ;). I could spend many more days in Vienna because it was so beautiful. Also visiting the Sigmund Freud Museum was really great for me.

Day 14: Vienna: 51,60 km (just going around in Vienna)

I visited everything in Vienna in Tourist mode. Now i had to make a decision. To be honest, i made the mistake to look about the prices for going back. For financial reasons i decided to change my route to Linz and Passau, because 55€ for a Bus is a lot cheaper than 200€ from Budapest. I also was late on Time because all the Hills in the Czech Republic.

Day 15: Linz: 162,32 km

Travelling all the way across the Donau River you get a lot of kilometers. Compare this to the 57km in Czech Republic, its a three time difference !

Day 16: Linz, Passau; 106,62 km

Nothing to see in Passau. I was here some years ago, but i forgot everything. This is just a small, beautiful City at the Austrian Border. Nothing special.

Day 17: Passau 53km

Going to the Bus station and leaving for Leipzig. It´s a sad feeling after 1468km in 2 weeks according to my Bike Computer. Actually i feel somewhat healthy and fit now!

Visit my Appendix "Biking is the best Method of Tourism" to know why bike travelling is the best method available!

Thank´s for reading so far.


Biking is the best Method of Tourism

After my recently finished Tour Leipzig->Dresden->Prague->Brno->Vienna->Linz->Passau i want to share some thoughts about different Travelling Techniques that are common. Already having made some trips in my life, including hitchhiking, airplane and hiking,  i came to the Conclusion that Bike Travelling is the best method of all possible variations.

I want to collect some Pro´s and Con´s of Bike Tourism:

Con´s:

  • You are bound to your bike the whole Tour. That´s not so flexible. Having all the luggage on your carrier makes it difficult to, let´s say, visit this Museum or this Disco that you are coming along spontaneously. Actually there are techniques to overcome this problem, like hiding your stuff in a forest (using a tarp makes the stuff look like garbage, i also always add a note "this is worthless travellers stuff, please keep it here"), but there is always a small risk of losing all your stuff. You can also keep your stuff in locker boxes in most Train Stations, but its cost intensive. Or you store your stuff temporary at people you meet´s places.
  • Your ass hurts when cycling the whole day !
  • Accidents are a little bit more likely than walking around with a backpack - wear a Helmet !


Pro´s

  • All the weight of your luggage is being carried by the wheels of your bike, not your back.
  • You see the countryside, not only the bigger or small cities. I mean, the real countryside. Even when hitchhiking you do not get to the real heart of the countries you are visiting.
  • The travelling speed is not too fast and not too slow. Biking at 20 km/h in average is the perfect Speed to get you in the freedom mood.
  • Even inside the big cities your bike is an advantage. Some tourists are lending bikes to do sightseeing; you can just use the bike you are used to!
  • You stay fit and healthy.
  • Destinations and Goals can be changed at every time ! 
  • In an emergency case you can take your bike with in the train and even in most buses (most, not all MeinFernbus/Flixbux buses do have bike carriers at the back)
  • You meet other bike travellers! Most of the people you meet will go in the other direction, but sometimes you meet people going the same way, like on junctions or ferries.



Die Angst der 1%-Elite

In einem Interview mit dem Journalisten Steven Levy äußert [Bill Gates] sich skeptisch über Zahlungssysteme wie Bitcoin und Ripple, weil diese fremden Systeme der Ökonomie von Entwicklungsländern übergestülpt würden. Auch das "Zero Rating", bei dem der Internet-Zugriff auf Lernprogramme oder die Inhalte von Wikipedia kostenlos ist, findet nicht seine Zustimmung. Besser und nachhaltiger sei es, den Internet-Zugang nach Einkommensklassen zu bemessen und kostengünstig zu halten.
Es ist genau anders herum, als Kapitalismus-Guru Gates es hier darstellt.

Wieso sollte es für Entwicklungsländer besser sein, "kostengünstig" an digitale Inhalte zu kommen, als kostenlos?

Man sieht an seiner Aussage sehr deutlich, wie er versucht, das längst überholte, der Menschheit massiv schadende, kapitalistische Finanzsystem auch den Entwicklungsländern aufzuzwingen.

Bitcoin, Ripple, oder andere wahrhaft gedeckte Komplementärwährungen würden die Länder _befreien_, anstatt diese abhängig von dem bestehendem globalen Finanzkapitalismus zu machen.

Davor haben Gates und die anderen 81 Personen der 1%-Elite Angst.

Angst davor, dass ihre Scheiß Geldscheine,- und virtuellen Derivate von einer aufgeklärten Öffentlichkeit verbrannt und zerstört werden, anstatt sich weiter von ihnen verarschen zu lassen.

 Offensichtlich trifft er sich mit Merkel, um die Weichen gegen freie, dezentrale Systeme wie Bitcoin zu stellen. Das einzig positive daran ist, meiner Meinung nach, dass Bitcoin bzw. die dahinter stehende Technologie der Blockchain von der Finanzelite als Gefahr gesehen wird und nicht weiter ignoriert werden kann... 

Quelle: http://www.heise.de/newsticker/meldung/Bill-Gates-Die-naechsten-15-Jahre-sind-entscheidend-2527954.html

Reisebericht Türkei 2012

Als Frühlingsauftaktreise kam Alex spontan auf die Idee, einen Billigflug nach Analya in der Südtürkei zu starten. Prompt meldete ich mich für diese hervorragende Idee mit an.

Nach butterweichem Hinflug und einem ausserordentlich freundlichen Empfang landeten wir dann bei
einem Couchsurfing-Host, der uns direkt mit - für die Türkei üblich - grottenschlechtem Gras begegnete.

Da pures liegen auf der faulen Haut uns also nicht glücklich machte, fuhren wir mit dem Bus in den 60 Kilometer weiter südlich gelegenen Ort Oliympos.

Fast alle folgenden Fotos sind leider Schwarz-Weiss, da die Kamera wohl einen geringen Energiestand hatte...

Bei immerhin schon 20 °C Aussentemperatur wanderten wir dort durch das Gebirge:




Und schauten uns antike Festungen, Tore und Amphitheatren an:


Immerhin waren die natürlichen, niemals versiegenden Flammen des Ortes Çıralı, die wir, nachdem wir uns um den Mann, der den Eintritt verlangte, herumgeschlichen hatten, erleben durften, relativ spannend - dank dem Mangel der Farben auf diesem Bild allerdings kaum zu erkennen:


Es wurde spät und dunkel - so entschlossen wir, doch erstmal am Strand zu schlafen. Dort traf ich dann einen Recklinghäuser mit seinem Wohnmobil - ein Zufall, der seinesgleichen sucht.

Nach einem halben Strandtag, bei dem man sogar im Wasser schwimmen und sich komplett Nackt sonnen konnte, wanderten wir weiter - stets bergauf natürlich:



Hier ein Eindruck, wie mollig warm der Strand war, aufgenommen von ein paar antiken Ruinen auf einem Berg herab:


Schon weit oben auf dem Berg angekommen, erschraken wir vor dem monumentalen Anblick des noch weitaus höheren Berges Tahtalı - etwa 2400 Meter hoch:





Hier Alex beim überqueren eines Flusses:



Und ich später beim gleichen Vorhaben - allerdings etwas bequemer:



Einen Tag später zurück in Antalya gab es dann noch ein paar Sehenswürdigkeiten zu sehen:


human readable difference between two timestamps in php

I recently encountered a common problem in computer engineering:
Displaying the difference between two timestamps in a human
readable fashion. For example, between the second day of may
2012, 12 o' clock and the fourth day of may 2012, 14 o'clock are
50 hours difference, which renders into 2 days and 2 hours.

To achieve this in php, i have written the following function:

function dateDiff($date1, $date2) {
$seconds = abs($date1 - $date2);

$delay = array();
foreach( array( 86400, 3600, 60) as $increment) {
$difference = abs(floor($seconds / $increment));
$seconds %= $increment;
$delay[] = $difference;
}

return strtr('{days} D, {hours} H, {minutes} M', array(
'{days}' => $delay[0],
'{hours}' => $delay[1],
'{minutes}' => $delay[2]));
}


At first, we get the difference between the timestamp in
seconds. We remove the sign of that value with abs().
Then we splice the seconds through 86400, 3600 and 60, which
represents the seconds of one day, a hour and a minute, each.
At last we display the calculated values to the User.

A quick, handy solution in just a few lines. Enjoy !

Ankündigung zur sportlichen Kurzreise

Morgen früh starte ich auf eine spätsommerliche, spontane Kurzreise mit dem Fahrrad von Leipzig nach Recklinghausen. Das Ziel ist es, die Strecke von insgesamt etwa 500 kilometern trotz kaum getätigter konditioneller Vorbereitung in drei Tagen, also 72 Stunden zu schaffen.

Das ganze geschieht immer noch auf dem gleichem Fahrrad, mit dem ich das vorletzte Jahr meine Reise nach Paris angetreten bin. Erstaunlicherweise habe ich, trotz täglicher Nutzung, an dem Rad nichts ausser den Bremsbelägen ausgewechelt. Somit wird das ganze Unterfangen eine Belastung für Mensch und Maschine.

Geschlafen wird natürlich unter freien Himmel im Schlafsack. Ich denke, die spätsommerlichen Temperaturen sollten es gerade noch ermöglichen, komfortabel frei zu rasten.

Da ich nicht davon ausgehe, dass ich unterwegs zwischenberichte schreiben kann, gibt es den nächsten Bericht bei der Ankunft in Recklinghausen oder auch erst bei der Wiederankunft in Leipzig. Den Rückweg plane ich auch mit dem Fahrrad zu absolvieren.

Backside 180 Kickflip

im Skatepark im Nova Eventis Park bei 35° Aussentemperatur:

meine Gentoo success story

Nach geschätzten 20 Stunden kompilierzeit ist mein hoch optimiertes Gentoo-System nun auf dem Asus Eeepc 1201N lauffähig. Ich habe den Weg zum Erfolg dokumentiert.

mkfs.ext4 /dev/sda5
mount /dev/sda5 /mnt/
cd /mnt

# Download Stage 3 and Portage
wget ftp://ftp.wh2.tu-dresden.de/pub/mirrors/gentoo/releases/amd64/autobuilds/20100514/stage3-amd64-20100514.tar.bz2
wget ftp://ftp.wh2.tu-dresden.de/pub/mirrors/gentoo/snapshots/portage-20100605.tar.bz2

# Check for integrity
md5sum stage3-amd64-20100514.tar.bz2
md5sum portage-20100605.tar.bz2

# Unpack system
tar xvjpf stage3-amd64-20100514.tar.bz2
tar xvjf portage-20100605.tar.bz2 -C usr/

# chroot into our new system
mount -o bind /dev /mnt/dev/
mount -t proc none /mnt/proc
chroot . /bin/bash

vi etc/resolv.conf # set nameserver
env-update
emerge --sync
eselect profile list
eselect profile set 2 # Desktop System without GNOME/KDE

# We want to compile with gcc4.5 to optimize for -mtune=atom, so we need to
# install layman to add the toolchain overlay
emerge subversion
emerge layman
echo "source /usr/local/portage/layman/make.conf" >> /etc/make.conf
echo "PORTDIR_OVERLAY=\"/usr/local/portage\"" >> /usr/local/portage/layman/make.conf
layman -a toolchain
nano /etc/make.conf
add ACCEPT_KEYWORDS="~amd64" to make.conf to allow development version of gcc
mkdir /etc/portage

# Unmask gcc 4.5.0
echo "=sys-devel/gcc-4.5.0 **" >> /etc/portage/package.keywords
echo "=sys-devel/gcc-4.5.0" >> /etc/portage/packages.unmask
emerge gcc
gcc-config x86_64-pc-linux-gnu-4.5.0
env-update
source /etc/profile
emerge binutils
emerge libtool

nano /etc/make.conf
# CFLAGS="-march=native -mtune=atom -msse3 -O2 -pipe"
# CXXFLAGS="${CFLAGS}"
# MAKEOPTS="-j5"

emerge -eav system
emerge -eav world

emerge vim # i don't like nano
vi etc/locale.gen # set your locale
locale-gen

cd usr/src/
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.tar.bz2
tar xvf linux-2.6.34.tar.bz2
ln -s linux-2.6.34 linux
cd linux/
# configure your kernel or copy existing .config here
make; make modules; make modules_install
cp arch/x86_64/boot/bzImage /boot/linux-2.6.34
vi /etc/fstab
# configure your fstab here

# configure your bootloader. when using ubuntu 10.04 see this
# http://ubuntuforums.org/showthread.php?t=1195275

emerge dhcpcd

# We now need to boot our system to have our kernel running

# The Asus Eeepc1201N has an Nvidia Ion (Geforce 9400M) chipset, so we need
# to install the nvidia-drivers. Portage will automatically emerge the
# x.org environment for us.

emerge nvidia-drivers
emerge xf86-input-evdev # important because X.org will freeze without evdev
nvidia-xconfig

# Now install the other system essentials

# the dual-core atom isn't the fastest processor around, so we should try to
# reduce compile time as much as possible using ccache
emerge ccache

# emerge other system essentials
emerge xterm fluxbox irssi hnb alpine screen xdm xfe

# make sure that hald is running
/etc/init.d/hald start

startx

# enjoy your new optimized gentoo System

Hier meine make.conf (work in progress):
ACCEPT_KEYWORDS="~amd64"
CFLAGS="-march=native -mtune=atom -msse3 -O2 -pipe"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"
USE="mmx sse sse2 gtk -qt4 -qt3 -qt3-support -xulrunner -kde xvmc threads"
MAKEOPTS="-j5"
INPUT_DEVICES="keyboard mouse evdev"
VIDEO_CARDS="nvidia"

FEATURES="ccache"
CCACHE_SIZE="2G"

source /usr/local/portage/layman/make.conf


Ohne die stets dagewesene, sich nun aber deutlich zeigende Fügung der modernen Sozialisten in klassisch/konservative Machtverhältnisstrukturen gutheißen zu wollen, möchte ich darauf hinweisen, wie deutlich es sich nunmehr zeigt, mit welch selbstverständliche falscher Miene hier die Gunst der besitzlosen Masse zu erhaschen versucht wird. Aus intellektueller Sicht das Prinzip linker Ideologie ad Absurdum geführt, wenn sie auf solch unredliche, ja fast religiöse Weise das Glück der Massen verspricht, sollte sich das Volk ihrer Macht nur fügen.

Solche politischen Szenarien gab es in der Geschichte öfter, und ich würde nur auf die Weisheit konservativer Politik wetten bzw. hoffen, die ein wiederholen der Geschichte in der Moderne nicht erneut möglich macht. Ferner wünsche ich, dass die politische Unqualifiziertheit und der Kurzblick der jetzigen Liberalen in dieser noch langen Legislaturperiode nicht auf die konservative Stabilität auswirkt.

OpenGeoDb Umkreissuche optimieren und in Yii implementieren

In diesem Kurzartikel geht es darum, wie die aktuelle OpenGeoDb-Geolokalisationsdatenbank durch ein PHP-Skript so umbauen, dass eine Umkreissuche möglich ist. Es gibt bereits zwei Tutorials zu diesem Thema, nämlich hier und hier, dessen Resultate in meinen Augen aber ineffizient sind. Trotzdem danke ich diesen Autoren, dass sie mir die Arbeit leichter gemacht haben. Besonderen Dank möchte ich an den Autor dieses Tutorials ausrichten, da er den mathematischen Hintergrund der Umkreissuche sehr einleuchtend vermittelt.

Mein Skript benutzt das Yii-Framework, speziell die PDO-Klasse, um die Datenbankverbindung aufzubauen.

1.) Vorbereitung:

Die eleganteste Datenquelle für unsere Umkreissuche wäre eine Tabelle aller deutschen Städte und Ortschaften, mit einmaliger Postleitzahl, Ortsbezeichnung, Breitengrad und Längengrad. Wir bereiten eine SQL-Tabelle dementsprechend vor:

CREATE TABLE IF NOT EXISTS `Stadt` (
`Plz` INT(11) UNSIGNED NOT NULL ,
`Ort` VARCHAR(80) NOT NULL ,
`Latitude` DOUBLE NULL ,
`Longitude` DOUBLE NULL ,
PRIMARY KEY (`Plz`) )
ENGINE = InnoDB;


2.) Extrahieren der Geo-Daten

Als erstes werden wir aber nur dazu kommen, die Spalten Plz und Ort zu füllen, da die Extraktion der Breiten,- und Längengrade komplizierter ist. Dies bewerkstelligen wir, wie an dieser Stelle im OpenGeoDb-Handbuch beschrieben, folgendermaßen:

SELECT code.text_val as "Plz", name.text_val as "Ort"
FROM geodb_textdata code, geodb_textdata name
WHERE name.loc_id=code.loc_id AND
code.text_type=500300000 /* AREA_CODE */ AND
name.text_type=500100000 /* NAME */
ORDER by 2;

Wir lesen diese Daten in unsere Tabelle ein.

Anschliessend erzeugen wir uns eine Hilfstabelle z.B. tmp_stadt, die genau so aussieht, wie unsere Tabelle Stadt.
Mithilfe meines Skriptes werden nun für jeden einzelnen Ort die Koordinaten ausgelesen:

active = True; // Verbindung aktivieren

// Optional: group by Ort; dann wird jeder Ort nur einmalig mit seiner Haupt-PLZ aufgeführt.
$command = $connection->createCommand("select * from Stadt group by Ort");

$data = $command->queryAll();

foreach($data as $object) {
$query = "SELECT zc_id, zc_location_name, zc_lat, zc_lon FROM zip_coordinates WHERE zc_zip = '";
// Da Integer keine führenden Nullen haben, müssen wir hier unter Umständen eine einfügen
if (strlen($object['Plz']) == 4) $query .= "0";

$query .= $object['Plz'] . "'; ";

$reader = $connection->createCommand($query)->query();
$result = $reader->read();

// Sollten die Geodaten einmal fehlen, müssen sie mit 0 hineingeschrieben werden, da das Skript sonst abbricht:
if($result['zc_lat'] == '') $result['zc_lat'] = 0;
if($result['zc_lon'] == '') $result['zc_lon'] = 0;

$query = "insert into tmp_stadt (Plz, Ort, Latitude, Longitude) values ('" . $object['Plz']."','" . $object['Ort'] . "', " . $result['zc_lat'] . ", " . $result['zc_lon'] . ")";

// Wenn gewünscht, zeige an, was du tust:
if($verbose) {
$i++;
echo $i . ": " . $query . "";
}

if(!$connection->createCommand($query)->execute()) {
echo $query;
die("something went wrong!");
}
}
?>


Da in der OpenGeoDb leider nicht alle Stadtteile eingepflegt sind, beschränkt sich mein Skript darauf, für Ballungsgebiete wie z.B. Hamburg oder Berlin die Position der ersten gefundenen, also kleinsten Postleitzahl zu verwenden. Soll aber trotzdem jede Postleitzahl auftauchen, kann man das Group by Ort durch Group by Plz ersetzen. Da aber nach dem SQL-Feld Ort gruppiert wird, kann man das Skript auf eventuell später nachgepflegte Datenbestände anwenden, und es würde dann den Bestand präzisieren.

Nach dem hoffentlich erfolgreichen durchlaufen, was je nach Rechenleistung einige Sekunden oder Minuten dauern wird, finden wir unser Ergebnis in tmp_stadt wieder. Wir löschen Stadt, benennen tmp_stadt in Stadt um und geniessen unseren Datenbestand.

Dieser hat aber leider selten vereinzelt einige Lücken, siehe z.B. hier:

mysql> select * from tmp_stadt where Ort = 'Leipzig';
+------+---------+----------+-----------+
| Plz | Ort | Latitude | Longitude |
+------+---------+----------+-----------+
| 4318 | Leipzig | 51.3667 | 12.3833 |
| 4328 | Leipzig | 0 | 0 |
| 4329 | Leipzig | 51.3667 | 12.3833 |


Diese Lücken sind aber selten, und ich denke, man kann damit erstmal leben.

3.) Umkreissuche

Für die Realisierung der Umkreissuche bedient man sich einfach diesem recht guten Algorithmus, hier auch ein mal in Yii implementiert:

$query = "SELECT Plz, Ort, Latitude, Longitude FROM Stadt WHERE Plz = '";

if (strlen($plz) == 4) $query .= "0"; // wieder auf führende Nullen achten

$query .= $plz . "'; ";

$reader = Yii::app()->db->createCommand($query)->query();
$result = $reader->readAll();

$latitude = $result[0]['Latitude'] / 180 * M_PI;
$longitude = $result[0]['Longitude'] / 180 * M_PI;

$query = "SELECT Plz, Ort, (
6368 * SQRT(2*(1-cos(RADIANS(Latitude)) *
cos(".$latitude.") * (sin(RADIANS(Longitude)) *
sin(".$longitude.") + cos(RADIANS(Longitude)) *
cos(".$longitude.")) - sin(RADIANS(Latitude)) * sin(".$latitude.")))) AS Distance
FROM Stadt WHERE
6368 * SQRT(2*(1-cos(RADIANS(Latitude)) *
cos(".$latitude.") * (sin(RADIANS(Longitude)) *
sin(".$longitude.") + cos(RADIANS(Longitude)) *
cos(".$longitude.")) - sin(RADIANS(Latitude)) * sin(".$latitude."))) <= ".$radius." ORDER BY Distance "; $reader = Yii::app()->db->createCommand($query)->query();
$result = $reader->readAll();

In $result habe ich nun ein Array aller Städte im Umkreis von $radius km der Stadt mit der Plz $plz. Ausserdem gehe ich in diesem Beispiel davon aus, dass ich die Datenbankverbindung in meiner Yii-Applikation in Yii::app()->db konfiguriert habe.

Ich benutze für diese Beispiele die Version opengeodb-0.2.5a-UTF8-sql.gz. Nach diesem Durchlauf hatte ich
6358 Städte in meiner Datenbank, wenn jede Stadt nur ihre Haupt-Postleitzahl benutzt, und 8270 Städte, wenn alle Städte mit ihren Stadtteilen aufgeführt werden (Group by PLZ vs. Group by Ort).

bash & vim & screen als IDE

Da ich in Zukunft wieder in die Programmierung zurückkehre, habe ich mich auf der Suche nach komfortablen und mächtigen IDE's gemacht. Bisher habe ich immer auf der Console gearbeitet. Nachdem ich mich nun mal mehrere Tage gezwungen habe, mit NetBeans zu arbeiten, bin ich wieder zu meiner bash, meinem screen und dem vim zurück gekehrt. Einige Funktion habe ich in Netbeans aber zu schätzen gelernt, und möchte zeigen, wie diese alle in vim genutzt werden können:

Die Exuberant CTags bringen Tagging-Funktionen für 34 Programmiersprachen mit. Ein einfaches "ctags -R" taggt alle Dateien rekursiv vom aktuellen Ordner in die Datei "tags"; ein Aufruf von "vim -t tags" lässt vim die Tags einlesen und öffnet, sofern vorhanden, eine als Tag markierte Datei. Mithilfe eines einfach ":ca " kann ich nun blitzschnell zwischen den gewünschten Positionen pendeln, tab-completion ist auch integriert.

Folding ist seit Vim7 problemlos möglich: Im Visual-Modes (v) den Bereich markieren, und mit zf einklappen.

Aus der globalem /etc/vim/vimrc sollten mindestens folgende Optionen in die eigene .vimrc übernommen werden:

set showcmd " Show (partial) command in status line.
set showmatch " Show matching brackets.
set ignorecase " Do case insensitive matching
set smartcase " Do smart case matching
set incsearch " Incremental search
set autowrite " Automatically save before commands like :next and :make
set hidden " Hide buffers when they are abandoned
set mouse=a " Enable mouse usage (all modes)
syntax on