Liebenswerte Störenfriede

Es gibt Haltungen und Ansätze, die mir meine Arbeit als medienpädagogischer Berater extrem erschweren.

Wir als Beratungssystem sind ständig lobbyistischer Einflussnahme ausgesetzt. Gähn. Kennen wir allmählich. Ich halte persönlich z.B. wenig von Calliope – da gibt es m.E. etabliertere Mikrocontroller (allerdings ohne Lobby dahinter)  und mehr von integrierten Ansätzen. Meine Kinder bekommen erst ein Smartphone ab 12 Jahren, ich bin gegen Coding in der Grundschule und ich erziehe meine Kinder so lange wie möglich außerhalb digitaler Sphären.

In den letzten Tagen ging dieser Kommentar durch Twitter. Die Autorin vertritt die Auffassung, dass Codingkenntnisse im Zeitalter der Arbeitsteilung nicht notwendig sind und es wird einmal mehr das gute, alte Autoargument angeführt: „Man muss keinen Motor verstehen, um Auto zu fahren.“ (mit diesem Argument wären eine ganze Reihe von jetzigen schulischen Inhalten übrigens nicht notwendig). Dann wird noch schnell der Digitalpakt mit dem Coden derart verknüpft, dass damit die Voraussetzungen geschaffen werden sollen, das „lobbyistische Coding““ endlich in die Schulen zu bringen. Und Steve Jobs sprach mit seinen Kindern über Literatur (Sagt das irgendwas darüber aus, wie in der Familie Jobs mit informatischer Bildung umgegangen worden ist?). Und am Schluss wird dann gutbürgerlicher Stoffkanon (dort übrigens kein Wort über Medienkompetenz) vor das Coden gestellt, Joseph Krauss ist der Retter des Schulsystems, wenn er fordert, Computer aus Grundschulen zu verbannen  und fertig.

Kann man so machen – muss man aber nicht. Von einem „Qualitätsmedium“ wie der F.A.Z. erwarte ich irgendwie mehr. Ich verstehe außerdem nicht, wogegen die Autorin agitiert – selbst der Umgang mit dem momentan sehr hippen Calliope hat zunächst nichts mit Coding zu tun – gar nichts, eher mit informatischen bzw. logischen Grundkonzepten (Ja, man kann mit dem Ding theoretisch logisches Denken lernen, aber eine quelloffene Plattform wie Scratch würde es zugegebenermaßen auch tun.).

Die in dem Kommentar auftretenden „Kausalketten“ höre ich dann wieder und wieder in Beratungsprozessen zu Medienbildungskonzepten. Jahaaa – Lesen, Schreiben, Rechnen, Literatur und kritisch Denken – so unvermeidliches Zeug wie Jugendmedienschutz sourcen wir dann aus an freie Medienpädagogen und ansonsten bleibt Schule halt so, wie sie bleibt.

Wer für das Coden in der Schule ist, der ist dem Lobbyismus verfallen. So einfach funktioniert zur Zeit die Denke in die Feuilletons und Feuilletons sind immer noch das, was der gebildete Lehrer von heute oft liest.

Für Internetgiganten und auch totalitäre Systeme könnte es nicht besser laufen: Je weniger das gemeine Volk von den Grundlagen informatischer Systeme versteht und das „Auto einfach nur möglichst lustbetont fährt“, desto besser und desto leichter lassen sich z.B. Algorithmen implementieren, die – wie Philippe Wampfler unlängst schrieb – „Freiheitsmomente […] in der höchsten Qualität“ anbieten. Ich stimme dem sogar zu, wenn ich von starken Demokratien ausgehe, deren politische Systeme für einen Interessenausgleich zwischen Datensammlern und Nutzern sorgen. Es läuft damit gerade nicht so super in China oder der Türkei.

Dummerweise sind starke Demokratien auf unserem Globus nicht unbedingt die Regel. Und auch in einer starken Demokratie wäre es für die Beurteilung von Algorithmen nicht ganz verkehrt, einiges darüber zu wissen als sich mit Kompetenzgeseier alte Weltbilder zu bestätigen.

Es geht mir als Berater gerade nicht darum, Internetgiganten kampflos das Feld zu überlassen, sondern ich denke, dass man Politik – ganz gleich ob es z.B. Umwelt-, Netz- oder Sozialpolitik ist – auf Basis von rudimentären Wissensbeständen nachhaltiger betreiben kann. Dazu sind Software und Geräte als Hilfsmittel unerlässlich und die muss irgendwer herstellen und entwickeln. Das sind i.d.R. Firmen und das ist genau so lange kein Problem, wie ebendiese keinen inhaltlichen Einfluss auf Schule nehmen oder so lange kein Problem, wie dieser Einfluss in Schule einen unabhängigen Konterpart hat. Es wäre schön, wenn das auf Dauer nicht allein die Medienberatung der Länder wäre, sondern informatische gebildete Schülerinnen und Schüler sowie natürlich auch Lehrkräfte.

Das halte ich aber noch für eine längeren Weg. Das ist ja genau das Problem: Lobbyismus trifft hier auf weitgehend unbestellte Felder, an denen derartige Kommentare nicht ganz unschuldig sind.

Ich bin mir nicht sicher, ob sich dieses Problem wirklich dadurch lösen lässt, Geräte aus den Schulen herauszuhalten – geht auch gar nicht, weil die in Form von Handys und wahrscheinlich bald auch in Form von Wearables schon da sind.

Die Antwort darauf kann nur Bildung sein und dazu gehört für mich im Zeitalter der Digitalisierung auch informatische Bildung. Möglichst früh. Geht auch ohne Gerät und unterstützt dann sogar Lesen, Schreiben, Rechnen und logisches Denken.

Es geht dabei – richtig angepackt – also schon um ein wenig mehr als darum, der IT-Industrie willfährige Programmierer zuzuführen. Leider bewegt sich die Debatte m.E. oft auf unterkomplexem Niveau.

 

 

 

OpenLDAP automatisch installieren und einrichten

Ich habe heute ein Script geschrieben, welches OpenLDAP auf Debiansystemen automatisch installieren und auch gleich für ppolicy konfigurieren kann. Wer sowas schonmal von Hand gemacht hat, weiß um die Schwierigkeiten. Es sollte auf den meisten Debianderivaten funktionieren (entwickelt habe ich auf stretch), ist aber leicht anpassbar, da ich alle Einzelschritte in Funktionen gepackt habe.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#!/bin/bash
 
# globals
LDAPDB="mdb"
PASSWORD="test1234"
HOSTNAME=`hostname`
DOMAIN=`echo  $HOSTNAME | awk -v FS="." '{print $1}'`
TLD=`echo  $HOSTNAME | awk -v FS="." '{print $2}'`
PPOLICY_FILE="/etc/ldap/schema/ppolicy.ldif"
LOGFILE="debug.txt"
 
# basesetup()
# Installs slapd (openLDAP) unattended
# using debconf
 
basesetup() {
 
	PASS=$1
        HOST=$2
	DBTYPE=$3
 
	echo "Building LDAP-Roottree ...\n"
 
	export DEBIAN_FRONTEND=noninteractive
	echo -e " \
		slapd    slapd/internal/generated_adminpw    password   $PASS
		slapd    slapd/password2    password    $PASS
		slapd    slapd/internal/adminpw    password   $PASS
		slapd    slapd/password1    password    $PASS
		slapd	 slapd/backend: string	$DBTYPE
		slapd	 slapd/domain	string	$HOST
	" | debconf-set-selections
 
	apt-get install -y slapd ldap-utils
 
}
 
make_index() {
 
	echo "Adding index ...\n"
 
        echo -e " \
dn: olcDatabase={1}$LDAPDB,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: mail,givenName eq,subinitial
        " | ldapmodify -Y EXTERNAL -H ldapi:///
 
}
 
# configure_policy()
# installs: 	ppolicy-scheme
# 		ppolicy-module
# 		overlay
# 		ppolicycontext
# 		defaultpolicy
 
configure_policy() {
 
        echo "Setting temporary ACLs ..."
 
        echo -e " \
dn: olcDatabase={1}$LDAPDB,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" write by * none
        " | ldapmodify -Y EXTERNAL -H ldapi:///
 
	echo "Adding ppolicy-scheme ..."
 
	ldapadd -Q -Y EXTERNAL -H ldapi:/// -f $PPOLICY_FILE
 
        echo "Activating ppolicy-module ..."
 
        echo -e " \
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: ppolicy.la
        " | ldapmodify -Y EXTERNAL -H ldapi:///
 
	/etc/init.d/slapd restart
 
        echo "Generating ppolicy-context ..."
 
        echo -e " \
dn: ou=policies,dc=$DOMAIN,dc=$TLD
objectClass: organizationalUnit
objectClass: top
ou: policies
        " | ldapadd -Q -Y EXTERNAL -H ldapi:///
 
        echo "Setting default policy ..."
 
        echo -e " \
dn: cn=default,ou=policies,dc=$DOMAIN,dc=$TLD
objectClass: top
objectClass: person
objectClass: pwdPolicy
cn: default
sn: default
pwdAllowUserChange: TRUE
# this don't work though documentation says it should
# pwdAttribute: userPassword
# So we use OID for workaround
pwdAttribute: 2.5.4.35
pwdInhistory: 3
pwdLockout: TRUE
pwdLockoutDuration: 1800
pwdMaxAge: 0
pwdMaxFailure: 3
pwdMinLength: 6
pwdMustChange: TRUE
pwdSafeModify: TRUE
# comment for syntax reason (trailing TAB here leads to syntax error when importing)
        " | ldapadd -Q -Y EXTERNAL -H ldapi:///
 
        echo "Generating overlay ..."
 
        echo -e " \
dn: olcOverlay=ppolicy,olcDatabase={1}$LDAPDB,cn=config
objectClass: olcOverlayConfig
objectClass: olcPPolicyConfig
olcOverlay: ppolicy
olcPPolicyDefault: cn=default,ou=policies,dc=$DOMAIN,dc=$TLD
olcPPolicyHashCleartext: FALSE
olcPPolicyUseLockout: FALSE
olcPPolicyForwardUpdates: FALSE
# comment for syntax reason (trailing TAB here leads to syntax error when importing)
        " | ldapadd -Q -Y EXTERNAL -H ldapi:///
 
}
 
# configure_tls()
# does:
#	generating of cert-authority
#	generating of certs for slapd
#	configuring of slapd for using tls
 
configure_tls() {
 
	echo
 
}
 
# toggle_acl()
# sets ACL back to save values after install
 
toggle_acl() {
 
	echo
 
}
 
# debug_output()
# dumps to file:
#	debconf values for slapd
#	complete Root-DN
#	complete cn=config
 
debug_output() {
 
	debconf-show slapd > $LOGFILE
	slapcat >> $LOGFILE
	ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config >> $LOGFILE
 
}
 
 
# cleanldap()
# Removes all of openLDAP
 
cleanldap() {
 
	apt-get remove -y slapd ldap-utils --purge
 
}
 
# main
 
basesetup $PASSWORD $HOSTNAME $LDAPDB
make_index
configure_policy
debug_output
cleanldap

Eigentlich muss man oben nur ein anderes Passwort setzen und am Ende das „cleanldap“ auskommentieren. Da das Ganze noch „Work in Progress“ ist, fehlen noch einige Funktionen:

  1. Konfiguration für TLS
  2. Integration des freeradius-Schemas
  3. Vernünftige ACLs nach Abschluss der Installation setzen

Ja, ich stehe in diesem Jahr ziemlich auf LDAP …

Neues Jahr, neue Zielgruppen

Dieses Blog ist ja relativ breit aufgestellt, was die Themen angeht. Erstmals habe ich auch etwas an anderer Stelle veröffentlicht und dabei sehr viel darüber gelernt, wie man Leserinnen und Leser nicht vergrault – da bietet so mancher Artikel hier doch einigen Optimierungsbedarf.

WordPress hat den entscheidenen Vorteil, dass es relativ suchmaschinenfreundlich aufgestellt ist. Da hier mittlerweile einiges an Inhalten vorhanden ist, werde ich demnächst ein paar Dinge verändern – für die treuen Feedleser sollte dabei alles beim Alten bleiben.

  1. Die Seite selbst wird sich mehr in Richtung eines Onlinemagazins entwickeln. Viele Artikel aus den vergangenen Jahren kann ich so etwas prominenter präsentieren – man sieht schon etwas im Header der Seite oder als Widget. Da werde ich aber noch viel experimentieren. Vielleicht kann ich den einen oder anderen so etwas länger auf der Seite halten.
  2. Ich möchte versuchen im Zuge von Punkt 1 mehr mit Bildern zu arbeiten. Das lockert die Texte ggf. etwas auf und macht es dem Lesenden u.U. leichter, dem teilweise doch recht minimalistischen Kauderwelsch zu folgen. Ich werde dazu Bilder unter CC0-Lizenz nutzen, etwa von Pixabay oder Jay Mantri.
  3. Ich werde meine Inhalte allesamt nach und nach hier im Blog zusammenziehen. Wundert euch also nicht, wenn hier demnächst auch viel Technikkram aus meinen Administrationserfahrung und der Arduino-AG hier hineindiffundiert. Wenn ich das Veröffentlichungsdatum frisiere, sollte da eigentlich nicht so viel in den Feed hineinwirken.
  4. Uneins bin ich mir noch, ob ich mich über Twitter hinaus in sozialen Netzwerken engagieren sollte. Mich machen die meisten Sachen und Diskussionen dort nicht besonders glücklich. Meine Twitterwelt besteht ja fast ausschließlich aus der Edu-Welt-Filterblase, die ich sehr bereichernd finde, die aber auch eine recht geschlossene ist.

Dieses Blog bekommt seine meisten Besucher über Suchmaschinen, naja, eigentlich über eine Suchmaschine. Diese „belohnt“ Seiten mit Inhalten mit hohen Platzierungen. Jeder neue Inhalt profitiert damit von den bestehenden, ist also u.U. in einem Wiki wie bisher nicht gut aufgehoben.

Ich weiß, dass es nicht „statthaft“ ist, so zu denken und zu schreiben – Geld gibt es aber keines für dieses Blog und Kommentare oder direkte Rückmeldungen auch eher wenig, d.h. ich möchte gerne schauen, wie ich motiviert bei der Sache bleiben kann und da bleiben neben den altruistischen, idealisierten Ansätzen eigentlich nur nackte Zahlen.

 

 

Mailmanagement mit osTicket

Seit langem nervt es mich, dass ich keine klare Trennung zwischen der Bearbeitung von E-Mails und sonstigen Aufgaben  hinbekomme. Mir schreiben viele Menschen E-Mails: Meine Kolleginnen und Kollegen bei Problemen mit unserer Schulserverlösung, Menschen, mit denen ich im Rahmen der Medienberatung zu tun habe. Oft geht es dabei um Terminvereinbarungen, technische Probleme, Erstellung von Ausstattungsvorschlägen, also klassische Themen, die man dem „Supportbereich“ zuordnen kann. Da geht viel durcheinander, sodass ich das eine oder andere auch schon einmal vergesse. Zum Glück gibt es ein Stück Technik, welches genau für diese Anforderung erschaffen wurde, denn Firmen haben im Support genau die gleichen Herausforderungen: Das Ticketsystem. Ich setze dafür das kostenlose Opensource-System  osTicket ein (hier gibt es eine Demo – Login: demo / Passwort: anmelden ).

logo

osTicket sollte auf fast jedem Webspace problemlos laufen, der folgende Bedingungen erfüllt:

  • MySQL-Unterstützung
  • PHP ab Version 5.3
  • PHP IMAP – Modul
  • imap-fähiger E-Mailaccount mit der Berechtigung, eigene Ordner anzulegen

Was ändert sich?

osTicket macht eigentlich technisch genau das, was ein beliebiges E-Mailprogramm wie Outlook oder Thunderbird tut: Es holt die Mails eines Kontos per imap ab, schreibt diese jedoch in eine Datenbank. Jede neue Mail erhält eine Ticket-ID, die automatisch mit in die Subject-Zeile geschrieben wird, wenn ich jemandem antworte. Antwortet mir mein Gegenüber auf diese Mail, erkennt osTicket anhand der Ticket-ID, zu welchem Kommunikationsvorgang die Antwort gehört und weist diesen automatisch zu. Ein Kommunikationsvorgang heißt „Ticket“. Das ist erstmal alles.

Hä? Und wo ist da jetzt der Unterschied zu vorher?

Bleibt ein Ticket zu lange liegen (bei mir sind es drei Tage), schreibt osTicket Jammermails und priorisiert das jeweilige Ticket, indem es den Kommunikationsprozess in einer Liste nach oben schiebt. Erst wenn ich antworte, ist wieder für drei Tage Ruhe – ich brauche das.

Wenn ein Prozess abgeschlossen ist, kann ich das Ticket „schließen“. Natürlich wird eine Statistik erstellt (mein Dienstherr mag Statistiken als „Arbeitsnachweis“ und ich habe keinen Bock, die selbst zu erstellen) und ich kann geschlossene Tickets ganz einfach finden, z.B. mit einer Suche nach einem Namen oder einer E-Mailadresse. Damit weiß ich, was ich wie oft mit welcher Person verhackstückt habe.

Und sonst?

Ich kann vordefinierte Antworten anlegen – wenn eine Schule z.B. über unsere Medienzentrum eine Homepage hosten und betreuen lassen möchte, ähneln sich die Prozesse doch sehr. Die Antworten klicke ich einfach in die Mail hinein.

Auch für telefonische oder mündliche Anfragen kann ich selbst Tickets eröffnen. Da alle Prozesse in osTicket mehrbenutzerfähig sind, wüssten z.B. auch Kolleginnen und Kollegen von mir, wo ich gerade stehe.

Wer es mag, kann osTicket auch mit Android und Co. über eine App managen. Das ist für mich und meinen Workflow aber eher ein Nachteil. Ich setze mich lieber gezielt 1-2x am Tag an einen Rechner und arbeite den Kram dann konzentriert ab.

Außerhalb meiner Arbeitszeit gibt es eine höfliche, aber bestimmte Mail, die den Empfang bestätigt, aber dann auf z.B. Montag vertröstet.

Und nicht zuletzt: Das Backup einer MySQL-Datenbank ist auch viel performanter als dasjenige tausender Fitzeldateien auf der Festplatte.

Und der E-Mailclient zu Hause?

osTicket löscht normalerweise empfangende Mails auf dem Server, kann aber diese auch in einen imap-Unterordner verschieben. Wenn sich eine wirklich private Mail auf einen Dienstaccount verirrt, kann ich sie immer noch aus dem Archivordner heraus ganz normal ohne Ticket-ID persönlich mit der privaten Mailadresse beantworten.

 

1 2 3 16