Archiv für den Monat Juni 2013

Haters gonna hate this bot

Ich habe es bisher leider noch nicht geschafft, den Beleidigungsbot fertig zu programmieren. Aus aktuellem Anlass würde ich gerne dem allgemeinen Alltagssexismus die Schuld dafür in die Schuhe schieben. Die europäische Flüchtlingspolitik  ist auch echt scheiße und überhaupt habe ich heute morgen sehr eklige Dinge aus der WG-Spülmaschine geholt.

Aber das was ich bisher gelernt habe, kann ich schonmal verbloggen. Der Code für den Beleidigungsbot ist für mich eh sehr neu, komplex und relativ lang, daher ist es vermutlich keine so blöde Idee, einen Teil schon vorab zu erklären. Danke Spülmaschine!

Für den Beleidigungsbot habe ich als erstes diese sehr hilfreiche Anleitung von Travis McCrea verwendet. Es müssen nur noch die Variablen verändert werden um einen simplen funktionierenden Bot zu bauen.
Leider ist in dem Artikel nicht alles was passiert detailliert erklärt. Das werde ich in den folgenden Blogposts mal selber versuchen. Dann kann ich mich auch dem Vorwurf entziehen, ich hätte seinen Artikel einfach geklaut – was nämlich stimmt. Aber wir sind hier ja auch in Internetland.

Um was geht es? 

Um das Programm wirklich einfach und zugänglich zu erklären, sollte ersteinmal geklärt werden, was IRC überhaupt ist.
IRC steht für Internet Relay Chat und ist ein Chat-System das auf dem IRC protocol beruht. Ein sehr altes aber effizientes Protokoll, welches jedoch auch etwas wacklig ist aufgrund seiner Netzwerktopologie. In Kürze: Zwischen den TeilnehmerInnen besteht immer nur eine Kommunikationsverbindung, was Kapazitäten schont, aber auch unsicher ist, da es keine sogenannten Redundanzen gibt. Das heißt, die Verbindung bricht ab, wenn ein Server mal ausfällt. So etwas wird „netsplit“ genannt und führt dazu, dass einige TeilnehmerInnen eines Channels rausfliegen und die Verbliebenen kichern [Anm.: Ich habe gerade erfahren, dass es sehr viel komplizierter ist. Aber ich finde die Erwähnung, dass Kommunikation, Liebesbeziehungen und Netsplits immer sehr viel komplizierter sind, als es auf den ersten Blick scheint, überflüssig].
Das IRC Protokoll ermöglicht das Chatten in Channels und Querys. Channels können problemlos eröffnet und wahlweise registriert werden. Beliebig viele TeilnehmerInnen können einen Channel betreten und dort miteinander chatten. Querys können von UserIn zu UserIn private Kommunikation ermöglichen.

Ich selber bin in einigen IRC-Channeln ab und zu oder regelmäßig unterwegs. Zum Beispiel im Channel zu diesem Blog (##fionalerntprogrammieren, ich bin nicht immer dort, freue mich aber auf BesucherInnen und Austausch im Channel, sonst sind da meistens ein paar harmlose Lurker/Trolle). Insbesondere in der Hacker- und Nerd-Szene ist IRC recht beliebt. Ich habe eine Weile darüber nachgedacht, woran das wohl liegt, aber die schönste Liebeserklärung kam von Nerds in einem IRC-Channel selbst:

15:38 <Fotografiona> man kann aber verschlüsselt kommunzieren oder?
15:38 <erlehmann> naja, niedrige barriere, gibt quasi überall clients, keine 
absichtlichen inkompatibilitäten.
15:38 <plomlompom> Fotografiona, es ist so schön text-only / minimalistisch.
15:38 <erlehmann> hmmnaja. zum server schon über SSL.
15:39 <erlehmann> fotografiona, das einzige chat-protokoll, dass ähnliche vorteile 
von verbreitung und unterstützung durch unendlich viele clients hat ist XMPP und 
das ist sehr viel schwieriger zu implementieren.
15:40 <plomlompom> Ja, ein IRC-Client ist recht einfach zu schreiben.
15:40 <erlehmann> und max-nachrichtenlänge sind 512 bytes, nicht 140 zeichen wie 
bei SMS-twitter
15:41 <plomlompom> IRC ist ein Hacker-Traum, offen und dezentral, und leicht zu 
implementieren.
15:41 <erlehmann> es gibt viele irc-clients und dies hier ist meiner 
#http://blog.dieweltistgarnichtso.net/uii-a-minimalist-irc-client
15:41 -oiler_in|#nodrama.de- uii – a minimalist IRC client | Die Welt ist 
gar nicht so. <http://blog.dieweltistgarnichtso.net/uii-a-minimalist-irc-client>
15:41 <erlehmann> plomlompom „leicht zu implementieren“ mein arsch
15:41 <moeffju> Damals gab es auch noch keine Geheimdienste.
15:42 <Fotografiona> verstehe komplett
15:42 <Fotografiona> ich nehm das als zitat

Aber wie so oft wäre es vermutlich am Besten, wenn ihr einfach mal selber IRC ausprobiert, um euch ein Bild zu machen. Dafür könnt ihr euch einen Client installieren, also ein Programm mit welchem ihr am IRC teilnehmen könnt, oder über einen Browser chatten, so wie damals bei knuddels! Die meisten Channels die ich kenne laufen auf dem freenode-Server. Ihr könnt beispielsweise mal in den #debian oder #linux channel reinschauen oder in meinen (nicht die zwei Rauten vergessen!). In den genannten Channels wird allerdings nicht allzu viel los sein. Womöglich werden dort aber hin und wieder Äußerungen nach einem bestimmten redundanten Muster hineingeschrieben – von einem Bot.

Was wollen wir?

In IRC-Channels gibt es manchmal einen oder mehrere Bots, welche z.B. die Überschrift eines Links ausgeben, falls jemand diesen in den Chat postet. Andere Bots regeln den Rausschmiss von UserInnen und manche sind nur da, um andere Leute zu beleidigen und Zwietracht zu säen. Bots sind genauso wie du und ich Mitglieder des Channels, aber automatisiert durch ein Skript, beispielsweise in Python. Der Bot muss also in der Lage sein, sich über das IRC Protokoll mit dem Channel zu verbinden und dort entweder nur zu lauern oder eine Handlung auszuführen.

Ich möchte einen Bot bauen, der vor allem das mit dem Zwietracht macht. Um besonders fies zu sein und möglichst viel Schaden anzurichten, habe ich mir verschiedene Handlungen und Eigenschaften des Bots überlegt und versucht, diese in Code umzusetzen. Bis ich damit fertig bin, wird es noch dauern, bis dahin reicht ein Bot, der in einen Channel hineingeht und dort kollektiv die Leute beleidigt.

Was programmieren wir?

Der Code beginnt wieder mit einer she-bang-Zeile. Danach werden ein paar Module importiert, dann die Variablen definiert und anschließend kommen einige socket-Funktionen und zum Ende ein paar Schleifen.

#!/usr/bin/env python

import sys
import socket
import string
HOST="irc.freenode.net"
PORT=6667
NICK="beleidigungsbot"
IDENT="beleidigungsbot"
REALNAME="beleidigungsbot"
CHAN="##fionalerntprogrammieren"
readbuffer=""
s=socket.socket( )
s.connect((HOST, PORT))
s.send("NICK %s\r\n" % NICK)
s.send("USER %s %s bla :%s\r\n" % (IDENT, HOST, REALNAME))
s.send("JOIN :%s\r\n" % CHAN)
s.send("PRIVMSG %s :%s\r\n" % (CHAN, "Na ihr Penner?"))

while 1:
    readbuffer=readbuffer+s.recv(1024)
    temp=string.split(readbuffer, "\n")
    readbuffer=temp.pop( )

    for line in temp:
        line=string.rstrip(line)
        line=string.split(line)
        
        if(line[0]=="PING"):
            s.send("PONG %s\r\n" % line[1])

Die Teile des Codes die verändert werden müssen, sind die Werte und Strings mit denen die Variablen im ersten Block belegt werden. Wenn ihr auf einem freenode Server bleibt, dürften die ersten Werte aber gleich bleiben. Nur die Namen unter nick, ident und realname müsst ihr ändern. Dann noch den Channel-Namen einfügen und natürlich das was ihr eurem Chat mitteilen wollt am Ende des zweiten Blocks. Probiert’s einfach aus.

Und jetzt?

1.  Code kopieren
2. Modifizieren
3. Speichern
4. Ausführen
5. Debuggen
6. Ausführen
7. Lauern
8. Magie
9. Freuen

So einfach ist das!

In den nächsten Posts werd ich versuchen, das Ganze zu erklären, aber das hier dürfte ersteinmal reichen. Es lohnt sich, für das Verständnis ersteinmal die Einleitung des RFCs (Request for Comments) über IRC zu lesen. Ich muss aber selber erst noch ein paar Dinge über das Programm verstehen, da das auch meine erste Anwendung ist, die irgendwas mit dem Internet macht.

Bis dahin viel Spaß beim Trollieren!

Übrigens:

Eine kleine Sache die ich schon dazuprogrammiert habe, ist eine etwas größere Auswahl an Beleidigungen in einer Liste. Also muss eine Liste (zum Beispiel namens beleidigungen) angelegt werden, die mehrere Elemente umfasst. Mit „from random import choice“ kann ich daraus ein zufälliges Element zurückgeben lassen und diese Variable anstelle der manuell eingetippten Nachricht einsetzen. In den letzten Posts steht eigentlich alles notwendige dafür, insbesondere in „Zufallssex„.

Advertisements

It’s Alive!

#15:58 beleidigungsbot (~beleidigu@188-192-98-127-dynip.superkabel.de) has joined #nodrama.de
#15:58 <beleidigungsbot> Ey ente! Kleiner Fettsack.
#15:58 beleidigungsbot (~beleidigu@188-192-98-127-dynip.superkabel.de) has quit (Client Quit)
#15:59 <ente> ❤

Have you read…

your RFC today?

http://www.ietf.org/rfc/rfc2616.txt

Notizen machen, Vokabeln lernen. Gehört meiner Erfahrung nach auch zum Programmierenlernen dazu.
Hier wird das Hypertext Transfer Protocol sehr ausführlich erklärt. Wie immer schnörkel- und bullshitlos, so wie ich es mag. Die Seite ist ein Dokument der Internet Engineering Taskforce und in diesen sogenannten „Requests for Comments“ (RFCs) wird beschrieben, wie das Internet entwickelt ist und weiterentwickelt werden soll, was gemeinhin als ein Standard wahrgenommen wird.
Interessant ist der gesamte erste Teil. Hier wird erläutert, was HTTP eigentlich ist und soll, was hinter solchen beliebten Begriffen wie „proxy“, „server“ und „cache“ steckt und wie HTTP grundlegend funktioniert.

Ich werde mich mal durchwühlen bis zum Kapitel 9, um heute Nachmittag einen heiteren IRC-Bot zu schreiben. Ich bin mir nicht sicher, ob ich heute damit fertig werde, aber es wird schon bald Code regnen, keine Sorge. Beziehungsweise Shit stormen, wenn er gut funktioniert…

iFortune

Ich habe mal wieder etwas programmiert, was euren Alltag weder leichter, noch schwerer, aber dafür eventuell etwas lustiger macht. So wie die Sex-Würfel. HAHA!
Gestern habe ich ein kleines Python-Programm programmiert, mit welchem man eine Fortune-Datei anlegen kann, die ihre Fortunes aus einem Twitter-Archiv zieht.

Zur Erklärung: Fortune ist ein Programm, welches einen Spruch ausgibt, wenn es im Terminal ausgeführt wird. Das sieht dann beispielsweise so aus:

fortune

Der zweite Spruch verdeutlicht, was das Programm eigentlich imitiert: Glückskekse, oder auch Fortune Cookies.
Der fünfte Spruch ließ mich kurz stutzen. Ich wähnte mich schon in der Riege illustrer Personen, deren Zitate in Fortunes gespeist werden, den gleichen Spruch hatte ich nämlich auch schon gemacht. Das war aber nicht der gleiche, sondern derselbe. Das war mein Spruch. Der Command „fortune“ wählt nämlich zufällig einen Spruch aus einer Hand voll Dateien aus, worunter sich mittlerweile die ratschlagfiona.dat befindet. Außerdem hätte mir auch auffallen können, dass das der einzige deutsche Spruch war. Ich werde mich vermutlich nie in der illustren Runde von Personen befinden, deren Zitate in fortunes standardmäßig eingespeist werden.

Wie konnte das nur passieren?
Ganz einfach. Jedoch: Ein sehr kluger Mensch riet mir dazu, mein Vorhaben in Einzelschritte zu zerlegen. Das ist sehr klug, weil das alle möglichen Autoren von Büchern, die ich über’s Programmieren gelesen habe, auch gesagt haben. Also erkläre ich mal in Einzelschritten, was ich tun wollte, musste und mittlerweile habe.

Was ich wollte: 
Ein Fortune, das mir statt Fefe-Aphorismen, Sci-Fi-Zitaten oder  Glückskeks-Philosophie etwas anderes, nämlich Tweets von @ratschlagfiona ausgibt. Dabei möchte ich natürlich ein Programm schreiben, das für andere nutzbar ist. Für den unwahrscheinlichen Fall, dass sie die Tweets von einem anderen Account gerne in ihrem Terminal hätten.

Was ich tun musste:

1. Twitter-Archiv von @ratschlagfiona herunterladen.

2. Die darin enthaltene csv-Datei muss bearbeitet bzw. bearbeitbar gemacht werden.

3. Die Tweets enthalten viel Metadatenkram den ich nicht will. Weg damit.

4. Die übriggebliebenen Tweets in eine neue Datei schreiben.

5. Die Tweets müssen jeweils in einer Zeile liegen und durch ein %-Zeichen getrennt sein.

6. Diese Datei muss in den Pool von Fortune-Dateien rein und genutzt werden.

Was ich habe

Die Tweets in der csv-Datei sehen so aus:

"342921659667345408","","","","","2013-06-07 08:31:09 +0000","web","Liebe ist immer noch die schönste Prokrastination! &lt;3"
"337189811200860163","","","","","2013-05-22 12:54:50 +0000","web","Geld an sich hat keinen Wert. Wenn du weder Zeit noch Freude am Getauschten hast, solltest du vielleicht deinen Job kündigen."
"337189294022205440","","","","","2013-05-22 12:52:47 +0000","web","Pöbelnde, sexistische Autofahrer haben eh zuviele Rückspiegel!"

Was ich haben will
ist eine fortune-file und die ist so aufgebaut:

"Liebe ist immer noch die schönste Prokrastination! <3"
%
"Geld an sich hat keinen Wert. Wenn du weder Zeit noch Freude am Getauschten hast, solltest du vielleicht deinen Job kündigen."
%
"Pöbelnde, sexistische Autofahrer haben eh zuviele Rückspiegel!"

Was ich getan habe:

1. Mich eine Weile rumärgern und relativ unsystematisch nicht so wirklich etwas tun. Ich hatte eine Weile versucht, an der csv-Datei in calc rumzuhantieren, bis mir irgendwann dämmerte, dass das eine ziemlich bescheuerte Idee ist. Solche Aufgaben, wie Elemente einer Zeile abschneiden und dann etwas dazwischen schreiben klingen sehr stark danach, als würden sie mich davon abhalten, etwas wichtigeres zu tun und als sollte mein dummer, aber sehr treuer Computer das übernehmen.

2. Trotzdem viel zu viel Zeit damit verbringen.

3. Auch mal jemand anderes als Google nach Hilfe fragen.

Soviel zu den Metadaten. Ich probierte noch ein paar Dinge aus und kam meinem Ziel durchaus auch näher aber nicht nah genug. Dann bot sich benthor an, mir zu helfen und wir vereinbarten einen Termin, den ich wieder absagte. Dann vereinbarten wir einen neuen Termin für Mittwoch um 8!UHR!MORGENS!

Das Treffen mit Leuten zum Programmierenlernen hat meiner Erfahrung nach den Vorteil, dass man unheimlich viel nebenher lernt. Zum Beispiel, dass bei Linux die Ordner in den Ordnern immer oben stehen. Außerdem lernte ich, dass meine Festplatte voll ist. Darüber hinaus erfuhr ich, dass die Köche bei der GPN ziemlich kranke Schweine sein müssen, wenn sie ernsthaft mit Ohai-Brause kochen!

Benthor zeigte mir ersteinmal ipython, eine interaktive Shell zur Python-Programmierung. Alle, die Python lernen, sollten sich schleunigst ipython installieren. Mit tab completion kannst du beispielsweise die möglichen Befehle zu dem von dir eingegebenen Teil anzeigen lassen:

str

Und wenn du hinter einen Befehl ein Fragezeichen setzt, bekommst du gleich eine Erklärung dazu, die verständlicher ist, als die pädagogische Katastrophe, die sich in meinen manuals abspielt.

file

Mit ipython war es relativ leicht, die notwendigen Befehle herauszusuchen und sie gleich live anzuwenden und auszuprobieren. Mit benthors Hilfe und Geduld und seinem Absehen von Fragen wie „Naaaaa? Was kommt da jetzt hin???“ brauchte ich auch nur zwei Stunden um die 15 Zeilen Code zu schreiben. Dazu sei aber gesagt, dass ich wirklich etliche Zwischenfragen gestellt habe, um auch wirklich alles und alles darüber hinaus zu verstehen. Danke nochmal für dein Verständnis, Geduld und lustige Gestikulation, benthor!

Hier das Ergebnis:

#1
#!/usr/bin/python
#2
lesdatei = open("tweets.csv", "r")
schreibdatei = open("ratschlagfiona", "w")
#3
liste = lesdatei.readlines()
#4
for element in liste[1:]:
    felder = element.split(",", 7)
    tweet = felder[7]
    fortune = tweet + "%\n"
    if fortune[1] != "@":
    schreibdatei.write(fortune)

Die ersten Zeilen sind recht schnell erklärt:

#1
Hinter der Raute und dem Ausrufezeichen steht eine Anweisung an das Betriebssystem, damit es weiß, welchen Interpreter es braucht. Das ist aber in zufallssex nochmal genauer erklärt.

#2
Dann wird die csv-Datei geöffnet. Das „r“ in der Klammer bedeutet, dass ich sie lesen möchte, das kann aber auch weggelassen werden, da es sich dabei um die Standardaktion handelt. Die Datei in welche ich reinschreiben will, wird ebenfalls geöffnet, bzw. erstellt, sofern sie noch nicht existiert. Beachte: Die Dateien müssen in demselben Verzeichnis liegen wie das Programm, ansonsten kann auch einfach der Pfad reingeschrieben werden.
Die Dateien „adressiere“ ich im Programm jetzt mit lesdatei bzw. schreibdatei.

#3
Dann wird mit dem Befehl readlines die lesdatei zu einer Liste gemacht, die ich jetzt „liste“ genannt habe.

#4
Darauf folgt eine heitere for-Schleife. Ich erkläre das mal in ganz kleinen Schritten, Zeile für Zeile:

for element in liste[1:]:

Ich gebe in der ersten Zeile der Schleife an, dass die einzelnen Elemente der Liste „elemente“ heißen und dass ich erst beim zweiten Element mit der for-Schleife anfangen will. Daher die „1“ in eckigen Klammern, da bei Null angefangen wird zu zählen. Das mache ich, weil in der ersten Zeile irgendein unnützer Kram steht, der nicht lustig ist.

 felder = element.split(",", 7)

In der zweiten Zeile splitte, also trenne ich die Elemente entlang der Kommata. Die sind nämlich die delimiters, die in der csv-Datei einige Meta-Daten und dann die Tweets voneinander trennen. Die voneinander getrennten Teile nenne ich „felder“. Ich höre beim 7. Feld auf, da dort der Tweet beginnt, der unter Umständen Kommata enthält, die nicht als delimiter verstanden werden sollen. Daher gebe ich den sogenannten „maxsplit“ an, in diesem Falle eine 7.

tweet = felder[7]

Das siebte Feld der einzelnen Zeilen ist für mich interessant, denn darin steht der eigentliche Tweet. Ich belege die Variable „tweet“ mit dem, was im siebten Feld steht. (Nicht vergessen, es handelt sich dabei eigentlich um das 8. aber wir fangen bei Null an zu zählen!)

fortune = tweet + "%\n"

Jetzt füge ich jedem einzelnen tweet noch ein % hinzu und eine \n (newline), denn das ist für das Format einer fortune-Datei notwendig. Mit dem Ergebnis wird die Variable „fortune“ belegt.

 if fortune[1] != "@":
 schreibdatei.write(fortune)

Jetzt möchte ich noch verhindern, dass @-Replys in die fortune-Datei übernommen werden, da die ohne Kontext nicht besonders viel Sinn ergeben. Ich habe in der csv-Datei gesehen, dass die @-Zeichen an zweiter Stelle nach den Anführungszeichen kommen, also prüfe ich, ob im zweiten Element [1] der fortunes ein @ steht. Wenn das zweite Element ungleich (!=) @ ist, wird das fortune endlich in die Datei geschrieben. Wenn die Bedingung nicht stimmt, weil es sich um eine Reply handelt, wird der Schritt übersprungen und die Schleife von vorne begonnen.

Damit das nicht falsch verstanden wird: Ich schreibe, dass die Schritte hier mit allen Elementen der Liste durchgeführt werden, aber die for-Schleife grast natürlich jede Zeile einzeln ab, bis sie am Ende der Datei angelangt ist.

Fertig!

Naja!

Noch nicht ganz!

Was ich noch machen muss:

Jetzt habe ich im günstigsten Falle eine neue Datei beschrieben namens ratschlagfiona. Die muss natürlich noch in das richtige Verzeichnis geworfen werden. In diesem Fall unter /usr/share/games/fortunes – dann wird sie noch zu einer Binärdatei umgewandelt. Dafür gehe ich in das Verzeichnis mit cd und wende dann den befehl strfile an. Das sieht dann so aus:

root@lorem:/home/fiona# cd /usr/share/games/fortunes/
root@lorem:/usr/share/games/fortunes# strfile ratschlagfiona
"ratschlagfiona.dat" created
There were 192 strings
Longest string: 287 bytes
Shortest string: 12 bytes

Ich hoffe, das wurde einigermaßen verständlich erklärt. Aber ein paar Fragen bleiben vielleicht noch. Witzig ist natürlich, dass ihr gar nicht das Twitter-Archiv von ratschlagfiona habt. Ich könnte aber die von mir äh manipulierte ratschlagfiona.dat irgendwo zur Verfügung stellen.

Was ich noch machen müsste irgendwann mal…

Das Programm muss auf jeden Fall noch ein wenig ausgebessert werden. Schöner wäre es, wenn das Programm Tweets direkt vom Online-Account einspeist, allerdings bin ich etwas skeptisch gegenüber Twitter-APIs. Besser wäre es auch, wenn ich die Dateien, mit denen ich arbeiten will, nicht in den Code schreibe, sondern per Einlesen, z.B. mit raw_input oder Ähnlichem beziehe.

Was also damit getan werden kann, ist eine fortune-Datei mit Tweets von einem Twitter-Archiv, zu welchem Ihr Zugang habt, bestücken. Vielleicht habt ihr ja auch so einen Besserwisser-Account wie @ratschlagfiona und wollt die csv-Datei und eure Tweets mit eurer Umwelt teilen.
Was auch ginge, wäre eine csv-Datei selber anlegen und durch dieses Programm jagen, wobei das Programm dann vermutlich auf die Hälfte gekürzt werden könnte oder verändert werden müsste.

Eine sinnvolle Erweiterung oder Änderung des Programms, bzw. ein sinnvolles anderes Programm wäre also eines, das auch die Verwendung von Tweets von anderen erlaubt. Mir fällt da gerade nur der Account vom Dalai Lama ein, wobei der ja schon ganz schön 90er ist.

Puh. Gar nicht so einfach, Programme für jemand anderes als sich selbst zu schreiben. Aber ich kann ja auch auf github schauen, ob nicht jemand Bock…

Apropos Bockbier!
Ich bin heute Abend zu Gast im Podcast „Wir müssen reden“ mit Michael Seemann und Max Winde und erzähle dort bestimmt auch etwas über Fortune, Fortran und Fiona. Schaut doch im Chat vorbei, schaltet ein, schreibt in die Kommentare, wenn euch etwas einfällt, was ich bis heute Abend recherchieren und ansprechen oder wenn ich eure Verwandten grüßen soll.

People dressed with naked Computers laughing

Ich bin wieder zurück aus der Versenkung, noch nicht ganz erholt, aber wieder blogfähig.

Ich war eine gefühlte Ewigkeit weg. An einem Ort wo der Nebel morgens schwer auf den Felder liegt, wo du den Lärm der Welt erst durch die Stille des Waldes hörst, wo du beim Pinkeln nicht genau weißt, ob das jetzt eine Brennessel oder ein sehr großer Ohrenkäfer war, wo du dich bei den Iron Bloggern verschuldest, weil du echt viel zu sehr mit der Natur verbunden bist, um zu bloggen.

Schön war es!

DSC00238

An diesem geheimen Geheimort hab ich sogar einen Vortrag über das Programmieren gehalten. Auf der Wiese, unter freiem Himmel, tauchten erstaunlich viele Leute auf und sahen zu, wie ich live von Mücken zerstochen wurde. Danach führte ich sogar noch mit letzter Kraft unheimlich interessante Gespräche mit BarbNerdy, einem Malte, ’nem anderen netten Herrn mit schwarzen Haaren und Brille, mit Peter, mit Heidi und dann warf ich mir ein paar Ibuprofen ein und ging wieder schlafen.

Toll war das!

Als ich zurückkam und den Ernst des Lebes entdeckt hatte, musste ich erstmal die ganzen KomikerInnen vom Finanzamt und der Uni per E-Mail wieder abwimmeln. Zwischendurch fanden sich aber Goldstücke in meinem Postfach mit Fotos wie diesem:

IMG_20130528_221142

Die begabte Marie hat ihren Computer auseinandergebaut! Marie ist aus Frankreisch und lässt sich derzeit als Praktikantin beim Rundfunk in Berlin ausbeuten. Darüber hinaus ist sie eine langjährige Freundin, die ich über’s Saufen in Neukölln kennenlernte. Und das schrieb der Fotograf Konsti:

Betr.: Maries bestes Stück! Nackt!

Hey Fiona! 
Guck mal was wir grad angerichtet haben: Eigentlich war nur die eine Abdeckung an der Rückseite zum teil offen. Wahrscheinlich von nem Sturz… Wir haben den Schraubenzieher gezückt, die klappe mit Hilfe eines Messers vorsichtig geöffnet und schon entblößten sich RAM, Festplatte & Lüfter in all ihrer Pracht. Der wurde bei der Gelegenheit gleich mal gesäubert. Und nen weiterer RAM Riegel geht bei Bedarf auch noch rein 🙂 
Klappe zu, schrauben rein, Erkenntnis da.

Ein Traum!

Noch ein schönes Fotos von Tobias, allerdings ohne Tobias:

tobias

Tobias schreibt:

Das sind zwei Ein-Platinen-Computer, hergestellt von pcengines.ch
und genannt „ALIX“. Sehr schmucke, lüfterlose Kleinrechner, die
bei mir eine ganze Weile lang Internetzugang und WLAN gemacht
haben. Einmal installiert laufen die ohne Betreuung quasi endlos.
Ohne bewegte Teile geht da ja auch nix kaputt.

Hardware-technisch sind das AMD Geode-Prozessoren (irgendwo
zwischen 486er, Pentium und Pentium 2, je nach Sichtweise). Ding
ist, die haben extra Hardware für AES-Verschlüsselung, das
heisst, die sind zwar eher langsam, aber VPN und WLAN können sie
trotzdem super.

Gelernt:

– Man kann auch mit ein paar Watt Computer laufenlassen
– Auch ohne Monitor geht es: die beiden haben nur eine serielle
  Schnittstelle (RS232), VGA oder DVI oder derlei gibt es nicht.
– Wenn man Hardware simpel genug strickt, läuft sie drei Jahre
  ohne Reboot.

Ich hatte noch weitere Fotos bekommen, aber darauf waren nur nackte Computer und keine angezogenen Menschen abgebildet und das ist mir echt ’ne Nummer zu krass. Also nochmal die Bitte um Fotos von ausgezogenen, abgebauten, auseinandergebauten und -geschraubten Computern, Smartphones, Laptops, Tower, usw. mit einem Foto von euch –lachend.

Danke!

Nächste Woche bin ich zu einem bisher geheimen Termin in einem noch geheimen Geheimpodcast zu Gast. Irgendwelche Wunsch-Themen, die angesprochen werden sollten und entfernt etwas mit FLP zu tun haben? Oder mit Kochen, Segelfliegen, Rettungsschwimmen, Ethnologie?

Ich würde ja gerne bis dahin noch etwas Lustiges programmieren, der Credibility wegen. Zum Beispiel eine Fortune-Version mit Tweets von @ratschlagfiona. Tips und Hinweise, wie ich das hinbekomme sind sehr willkommen.