Archiv für den Monat April 2013

Kommando Kommandos!

Liebe Lesende

jemand sehr weises sagt einmal „Benutz deine Kommandozeile, du Idiot!“

Ich hab vergessen, wer das war, aber ich würde meine Hand dafür ins Feuer legen, dass es schonmal jemand gesagt hat.

Auf FLP habe ich schon mehrmals darauf hingewiesen, wie wichtig ich die Auseinandersetzung mit der Shell finde und dieses Tutorial verlinkt. Denjenigen, die sich noch immer nicht an ihr Terminal gewagt haben, sei die Einführung zum verlinkten Terminal empfohlen mit der originellen Überschrift Shut Up And Shell. Ansonsten habe ich auch noch ein paar gute Gründe auf Lager:

  • Ein Terminal sicher handhaben und seine Funktionsweise verstehen zu können ist essentiell für das Programmierenlernen
  • Ein Terminal muss nicht das klickbare Interface ersetzen. Es erweitert den Rahmen an Handlungsoptionen in der Bedienung des Computers
  • Durch die Verwendung von Befehlen lernst du deinen Computer noch einmal ganz anders kennen. Die Verzeichnisstrukturen, welche dadurch erst sichtbar gemacht werden, ermöglichen dir ein ganz anderes und weniger abstrahiertes Verständnis der Funktionsweise deines Computers
  • Früher oder später wirst du nicht nur Befehle kennenlernen, welche dasselbe ermöglichen wie ein Klick, sondern auch Befehle, welche dir mehr ermöglichen
  • Dieses „Mehr“ bedeutet oftmals ein Anpassen deines Computers an deine Bedürfnisse und eine Verwendung, welche über die von den Präkonfigurationen vorgegebenen abweicht
  • Kommandozeile lernen ist also Kapitalismuskritik lernen!

Und noch viel mehr. Diese Erkenntnisse ziehe ich aus meiner eigenen Erfahrung und aus dem, was ich bei anderen Leuten beobachten konnte.
Das Terminal zu erkunden gliedert sich ein in eine ganze Reihe von Aktivitäten, welche ein besseres Verständnis von Computern ermöglichen. Sie befähigen und ermutigen zum Einen, Konfigurationen und Aussagen über Computertechnik infrage zu stellen und sie andererseits auch zu bewerten. Es stellen sich neue Fragen, wie bspw.

„Was passiert eigentlich, wenn ich jetzt zufällige Bytes an meinen Bildschirm schicke?“ oder

„Ist es eigentlich notwendig, dass die Installation von Linux auf Uefi-basierten Laptops so kompliziert ist?“

oder

„Kann es sein, dass die Telekom ein bisschen spinnt?“

oder

„Warum kann ich den Akku meines Macbooks nicht selber austauschen“

oder

„Hm, ich darf angeblich diese Datei nicht löschen/bearbeiten/lesen/öffnen, na das wollen wir doch mal sehen…“

Oderoderoder. Das sage  ich immer wieder und immer wieder gerne: Das Programmierenlernen bietet mir viele Antworten. Aber vor allem bietet es neue Fragen.
Das Schöne am Kommandos-Lernen ist, dass es wirklich sehr leicht nebenbei passiert. Es ist wie spanische Vokabeln lernen, wenn man sich gerade in Spanien befindet. Es ist wie wenn man viele verschiedene vietnamesische Ausdrücke für „Nein danke, sehr nett, aber ich bin wirklich satt“ lernt, wenn man sich gerade bei seinen vietnamesischen Verwandten befindet. Man braucht sie auf jeden Fall und verinnerlicht sie durch permanente Verwendung.

Und ja, ich muss und will auch mehr Befehle lernen. In Zukunft werde ich öfter mal einen Post über ein paar Linux-Commands verfassen, angefangen bei den Basics. Ich hoffe, dass ich damit ein paar Leute motivieren kann, ebenfalls die wunderbare glitzer-bunti-freie Welt der Konsole kennenzulernen. Wenn ihr Tips für besonders tolle, kluge, das Leben erleichternde und für AnfängerInnen geeignete Commands habt, dann her damit.

Danke an Andreas, der mir dieses Buch schenkte, das mich letztendlich zu diesem Blogpost inspirierte.

 

Crowdfundiona

 

 

DSC00189

Ich würde gerne „Danke“ sagen, aber ich bin noch ein bisschen sprachlos über die Reaktionen auf meine Bitte um Unterstützung.

 

Von guten Freunden, von noch ganz frischen Bekanntschaften und von Leuten, deren Namen ich nicht kannte bis ich ihn auf den Absenderadressen las habe ich einen kleinen ansehnlichen Haufen Bücher bekommen, den ich fleißig abarbeiten werde. Einen Violinen-Pickup habe ich auch bekommen. Was ich damit anstelle wird sich noch zeigen.

Ihr unterstützt mich damit ungemein und ich freue mich wie ein junges, langweiliges Reh, das nie auf Festivals geht, auf die Lektüre der Bücher und über weitere Unterstützung, die ich nach wie vor gut gebrauchen kann.

Womöglich schaffe ich es noch diese Woche ein paar Commands aus dem „Linux Befehlsreferenzen Kompakt“ zu verbloggen. Das wäre doch ein guter (und in kurzer Zeit machbarer) erster Anfang.

Ansonsten bin ich gerade sehr stark mit meinem eigenen Seminar „Lauert Mehr“ an meinem Institut beschäftigt, zu welchem die Bücher wiederum sehr viel beitragen können. Grob zusammengefasst geht es in dem Seminar um die kulturwissenschaftliche Erschließung von netzkulturellen und netz-verwandten Forschungsfeldern. Das erfordert neben den anderen Seminaren, die ich belegt habe, recht viel Aufmerksamkeit.

Mein Traum Plan, dieses Semester nur dieses Seminar zu organisieren und mich sonst stärker dem Programmieren zu widmen, ist letztendlich doch meiner Angst vor den systemimmanenten Konsequenzen gewichen. Bologna-Bachelor-Bafög und so. Die drei Bs. B wie Bullshit. Das heißt, das Programmierenlernen wird in den gewohnt langsamen Schritten fortgesetzt. Aber immerhin.

Vielleicht werde ich in Zukunft auch zum Verlauf des Seminars hier ein wenig erzählen. Immerhin ist es auch so etwas wie eines der vielen „Kinder“ von FLP, beziehungsweise ohne das Wissen, welches ich mir im Rahmen von FLP angeeignet habe, hätte ich so ein Seminar nie organisieren können. Was meint ihr? Relevant für FLP? Ansonsten bloggen mein Kommilitone @spektrallinie, unsere Studierenden und ich auf http://netzkulturen.net darüber. Am ersten Artikel arbeite ich allerdings gerade noch. Der handelt davon, weswegen es als GesellschaftswissenschaftlerIn wichtig ist, sich mit der Technik des Internets auseinanderzusetzen, wenn man dessen Phänomene untersuchen möchte.

Technik!

Die Begeisterung und das Interesse an Code, an Computern und Technik generell ist auf jeden Fall noch da. Das immer wieder fest zu stellen ist nach so vielen Zweifeln sehr beruhigend.

Tja. Ihr wisst was jetzt kommt…

Lernt und lehrt weiterhin fleißig Programmieren!

Es lohnt sich 🙂

Getaggt mit , , ,

LINKLISTE #00000110

David Bauer hat den Selbstversuch gewagt und Programmieren innerhalb eines Jahres überwiegend mit Code Academy gelernt. Er schreibt in diesem Artikel über seine Erfolge, Misserfolge und was ihn dann doch wieder motivieren konnte. Er sieht erfreulicherweise auch davon ab, am Ende seiner Entwicklung sich selbst als Superprogrammierer zu sehen. Er betont stattdessen, was er auf dem Weg zu einem programmierenden Journalisten, der für „Programmierer-Maßstäbe“ nichts kann, alles gelernt hat. Er war auf jeden Fall sehr viel fleißiger als ich und hat auch schon kleine Webanwendungen gebaut und auf github gestellt.

Moeffju war so nett, meine Sexwürfel auf Github zu forken (haha wie das klingt!) und dem Code ein bisschen mehr Stil zu verleihen. Es gibt bestimmte Konventionen, die im oben verlinkten Style Guide nachgelesen werden können und an welche man sich der Lesbarkeit halber halten sollte.

Das erste Smartphone!
Danke Leitmedium.

We are all DOOOOOOOMED!
Danke Jakob.

Das Forum InformatikerInnen für Frieden und gesellschaftliche Verantwortung vergibt einen Preis für Abschlussarbeiten, welche sich mit Informatik und Gesellschaft auseinandersetzen. Einreichungen bis zum 31. Mai.

Eine lange, traurige Geschichte über Encryption Standards und das Erklären von Encryption Standards. Mit Strichmännchen. Aber es hat irgendwie auch ein Happy End.

Hätte ich das gewusst. Hier wird sehr knapp, aber dennoch überraschend verständlich die Architektur eines x86-Prozessors in einer Übersicht erklärt.

Netzpolitik.org ist ein wichtiges Blog, wo zentrale Diskussionen der Netzpolitik aufgegriffen, analysiert und wiedergegeben werden. Bzw. was noch viel wichtiger ist: Teilweise werden sie dort erstmal zu zentralen Diskussionen gemacht. Damit das so bleibt, braucht Netzpolitik.org GELDGELDGELD. Ihr könnt und solltet ein paar Euro spenden, ich werd auch mal schauen, was sich tun lässt. Besser ist natürlich ein Dauerauftrag. Von den 30 000 LeserInnen (ich habe aus dramaturgischen Gründen deren Statistik übernommen) könnten ja wenigstens 50% einen Euro jeden Monat spenden und damit unabhängige Berichterstattung über die Politik im Internet, dem wichtigsten Medium der jetzigen und zukünftigen Zeit, finanzieren.
Tut es besser jetzt und rühmt euch mit euren heldenhaften Motiven, bevor wir es alle nur noch tun, um die nervigen Banner loszuwerden. Aber die Fotos sind echt gut! (Disclaimer: Die Fotos sind von m..ach lassen wir das)

Linkliste #00000110

Getaggt mit , , ,

Bloggen gegen Bier

Ich bin neuerdings Mitglied bei den Iron Bloggers Berlin.

Als Mitglied verpflichtest du dich dazu, einmal die Woche zu bloggen, sonst gibt’s auffe Fresse. Da ich mir das nicht leisten kann, bin ich jetzt real dazu gezwungen, einmal die Woche zu bloggen. Tatsächlich freue ich mich aber auch über einen Anreiz, öfter hier reinzuschreiben, was effektiv auch bedeuten würde, dass ich wieder mehr programmiere. Hoffentlich.

Allerdings: Weil ich leider noch nicht auf der Liste der participants bin, gibt es zur Strafe nur diesen billigen rekursiven Post.

Bis nächste Woche! (Garantiert)

Zufallssex

Ich hab’s getan!

Ihr kennt das vielleicht aus eurer Jugend, als die erotischste Konsumerfahrung noch das Vorbeigehen an halbherzigen Sextoys und aufblasbaren Schafen in einem Laden für kiffende Mittelschicht-Punks war. Also bei mir war das zumindest so. Man könnte meinen, daran habe sich nie etwas geändert, als ich Freitagabends nichts besseres zu tun hatte, als Pizza zu essen und zu programmieren.

Gestern besuchte mich Genosse Erlehmann und als ich ihn gerade rauswerfen wollte, bestellten wir stattdessen im Affekt Essen (Wir guckten einen Flyer an). Um die Stunde, die wir aneinander gebunden waren, zu überbrücken, wollte ich etwas kleines programmieren. Ich wollte nicht aus dem Muster ausscheren und programmierte daher nach dem schlecht.s-Programm, der Beleidigungsmaschine, dem editor und dem Schlangenkuchenrezept erneut etwas völlig sinnloses. Und zwar:

Terminalbasierte Sexwürfel!

Und hier der Code dazu:

#!/usr/bin/env python
print "L I E B E S W U E R F E L"

# wie = ("zaertlich", "fest", "brutal", "schlecht", "angewidert", "lustig")
wo = ("Nippel", "PENIS", "Pussy", "Schenkel", "Bauch", "Po")
was = ("kuessen", "saugen", "lecken", "knabbern", "streicheln", "kitzeln")

from random import choice
# print choice (wie)
print choice (wo)
print choice (was)

Das ist ein sehr sehr sehr einfaches Programm und jedeR sollte das verstehen können. Erlehmann zeigte mir erst in einer Python-Shell, wie man choice verwendet und wie eine Liste erzeugt wird. Eine Python-Shell ist das, was passiert, wenn du im Terminal „python“ eintippst. Du kannst dann sozusagen „live“ Python Befehle ausführen, anstatt sie in ein Programm zu schreiben, das sie für dich nach und nach ausführt. Die simpelste Anwendung ist sicherlich, die Shell wie einen Taschenrechner zu verwenden. Aber die Funktion „Choice“ bspw. kann ich darin auch verwenden. In der Pythonshell lernte ich ersteinmal, wie choice überhaupt funktioniert und konnte es dann in das Programm einbinden.

Im Programm sexwuerfel.py werden zunächst die Variablen mit einer Liste belegt. Das Format ist denkbar simpel:

variable = (1, 2, 3, ..., n-1, n)

Wenn du Zufallszahlen generieren möchtest, kannst du die Zahlen einfach durch Komma getrennt in Klammern setzen. In diesem Fall gebe ich Wörter in Form von Strings in die Liste, also müssen sie in Anführungszeichen gesetzt werden, damit sie als Strings erkannt werden. Damit belege ich drei Variablen. Wobei eine auskommentiert ist, mit einer Raute (#) davor. Dadurch wird die danach folgende Zeile „wirkungslos“ gemacht, sie spielt keine Rolle mehr im Programm. Das ist lediglich Schadensbegrenzung. Kompetente und ganz besonders versaute LeserInnen können die Zeilen ja wieder reinkommentieren.

Der Korrektheit halber: Eigentlich sind die Listen keine Listen, sondern Tupel. Aber egal. Choice ist nicht besonders wählerisch und nimmt alles, was irgendwie abzählbar ist.

In der Zeile

from random import choice

weise ich das Programm an, aus dem Python-Modul „random“ die Funktion(sdefinition) „choice“ zu importieren. Das kennt die geneigte Leserin vielleicht schon aus diesem Post wo ich dasselbe mit „from sys import arg“ verwende.

Die nächsten Zeilen erklären sich eigentlich von selbst. Ich jage die „choice“-Funktion auf die Variablen, die mit den Listen belegt sind. Mit print wird mir das Ergebnis – also ein zufällig aus der Liste ausgewähltes Element – ausgegeben.

Es können natürlich beliebig viele Listen und choices noch hinzugefügt werden. Zum Beispiel

ort = ("kueche", "wohnzimmer", "aufzug", "buergeramt" ...)

oder

wer = ("ich", "du", "aufblasbares Schaf", "deine mutter",...)

und so weiter.

Jetzt brauche ich nur noch ein paar Beta-Tester, die das Spiel ein paar mal… ähm… durchspielen und Verbesserungsvorschläge und Erfahrungsberichte einreichen. Freiwillige?

Hier hört die Erklärung des Programm eigentlich schon auf, aber es folgt noch eine überspringbare Kleinigkeit, für Fortgeschrittene und alle die es werden wollen über Berechtigungen, Unix-Benutzergruppen und zur allerersten Zeile:

#!/usr/bin/env python

Das ist eine sogenannte „Shebang“-Zeile. Ja, wirklich. Sie weist das Betriebssystem beim Ausführen der Datei darauf hin, welcher Interpreter das Programm -nunja- interpretieren kann. Den Tip gab mir Erlehmann und ich weiß bei seinen Hinweisen immer nicht so genau, wie sinnvoll und notwendig die sind. Es hat aber auf jeden Fall den Vorteil, dass nicht etwa

python sexwuerfel.py

in die Kommandozeile eingetippt werden muss, sondern einfach nur

./sexwuerfel

um das Programm auszuführen. Die Endung .py hat übrigens keine Funktion, sie ist einfach nur ein Hinweis an den Menschen, dass es sich um ein Python-Programm handelt. Um eine Datei auf diese Art und Weise ausführbar zu machen, mussten wir allerdings noch ein paar Berechtigungen ändern.

Wenn ich in meinem Terminal

ls sexwuerfel.py -l

eintippe, sehe ich die Berechtigungen: -rw-r–r–
Das kann man aufspalten in  rw-, r– und r–. Das sind drei verschiedene Berechtigungen für mich, den user, die group und other
user (ich) darf:

rw-

Ich habe ein r (lesen) und ein w (schreiben, also das Programm verändern), das heißt ich darf die Datei lesen und reinschreiben. Wo ein x stehen könnte, steht ein Strich, ich darf die Datei also nicht ausführen. Group und Other dürfen nur lesen. Group bezieht sich auf eine definierte Benutzergruppe, ist aber in diesem Falle irrelevant.

Als Userin kann ich die Berechtigungen verändern. Das mache ich mit dem Befehl „chmod“, das steht für „change mode“. Mit

chmod a+x sexwuerfel.py

gebe ich allen (a) Usern das Recht, die Datei auszuführen (x). Jetzt bekomme ich mit

ls sexwuerfel.py -l

das Ergebnis rwxr-xr-x. Aufgespalten wäre das: rwx, r-x, r-x. Also kann ich jetzt als userin lesen, schreiben und ausführen und groups und others dürfen lesen und ausführen aber weiterhin nicht schreiben. Jetzt kann das Programm von jedem mit ./ ausgeführt werden.

Bessere Erklärungen zu chmod gibt es hier und hier gibt es detaillierte Erklärungen zu den Unix-Benutzergruppen.

Getaggt mit , , , , , , ,