Liebenswerte Störenfriede

Es gibt Hal­tun­gen und Ansät­ze, die mir mei­ne Arbeit als medi­en­päd­ago­gi­scher Bera­ter extrem erschwe­ren.

Wir als Bera­tungs­sys­tem sind stän­dig lob­by­is­ti­scher Ein­fluss­nah­me aus­ge­setzt. Gähn. Ken­nen wir all­mäh­lich. Ich hal­te per­sön­lich z.B. wenig von Cal­lio­pe – da gibt es m.E. eta­blier­te­re Mikro­con­trol­ler (aller­dings ohne Lob­by dahin­ter)  und mehr von inte­grier­ten Ansät­zen. Mei­ne Kin­der bekom­men erst ein Smart­pho­ne ab 12 Jah­ren, ich bin gegen Coding in der Grund­schu­le und ich erzie­he mei­ne Kin­der so lan­ge wie mög­lich außer­halb digi­ta­ler Sphä­ren.

In den letz­ten Tagen ging die­ser Kom­men­tar durch Twit­ter. Die Autorin ver­tritt die Auf­fas­sung, dass Coding­kennt­nis­se im Zeit­al­ter der Arbeits­tei­lung nicht not­wen­dig sind und es wird ein­mal mehr das gute, alte Auto­ar­gu­ment ange­führt: „Man muss kei­nen Motor ver­ste­hen, um Auto zu fah­ren.“ (mit die­sem Argu­ment wären eine gan­ze Rei­he von jet­zi­gen schu­li­schen Inhal­ten übri­gens nicht not­wen­dig). Dann wird noch schnell der Digi­tal­pakt mit dem Coden der­art ver­knüpft, dass damit die Vor­aus­set­zun­gen geschaf­fen wer­den sol­len, das „lob­by­is­ti­sche Coding““ end­lich in die Schu­len zu brin­gen. Und Ste­ve Jobs sprach mit sei­nen Kin­dern über Lite­ra­tur (Sagt das irgend­was dar­über aus, wie in der Fami­lie Jobs mit infor­ma­ti­scher Bil­dung umge­gan­gen wor­den ist?). Und am Schluss wird dann gut­bür­ger­li­cher Stoff­ka­non (dort übri­gens kein Wort über Medi­en­kom­pe­tenz) vor das Coden gestellt, Joseph Krauss ist der Ret­ter des Schul­sys­tems, wenn er for­dert, Com­pu­ter aus Grund­schu­len zu ver­ban­nen  und fer­tig.

Kann man so machen – muss man aber nicht. Von einem „Qua­li­täts­me­di­um“ wie der F.A.Z. erwar­te ich irgend­wie mehr. Ich ver­ste­he außer­dem nicht, woge­gen die Autorin agi­tiert – selbst der Umgang mit dem momen­tan sehr hip­pen Cal­lio­pe hat zunächst nichts mit Coding zu tun – gar nichts, eher mit infor­ma­ti­schen bzw. logi­schen Grund­kon­zep­ten (Ja, man kann mit dem Ding theo­re­tisch logi­sches Den­ken ler­nen, aber eine quell­of­fe­ne Platt­form wie Scratch wür­de es zuge­ge­be­ner­ma­ßen auch tun.).

Die in dem Kom­men­tar auf­tre­ten­den „Kau­sal­ket­ten“ höre ich dann wie­der und wie­der in Bera­tungs­pro­zes­sen zu Medi­en­bil­dungs­kon­zep­ten. Jahaaa – Lesen, Schrei­ben, Rech­nen, Lite­ra­tur und kri­tisch Den­ken – so unver­meid­li­ches Zeug wie Jugend­me­di­en­schutz sourcen wir dann aus an freie Medi­en­päd­ago­gen und ansons­ten bleibt Schu­le halt so, wie sie bleibt.

Wer für das Coden in der Schu­le ist, der ist dem Lob­by­is­mus ver­fal­len. So ein­fach funk­tio­niert zur Zeit die Den­ke in die Feuil­le­tons und Feuil­le­tons sind immer noch das, was der gebil­de­te Leh­rer von heu­te oft liest.

Für Inter­net­gi­gan­ten und auch tota­li­tä­re Sys­te­me könn­te es nicht bes­ser lau­fen: Je weni­ger das gemei­ne Volk von den Grund­la­gen infor­ma­ti­scher Sys­te­me ver­steht und das „Auto ein­fach nur mög­lichst lust­be­tont fährt“, des­to bes­ser und des­to leich­ter las­sen sich z.B. Algo­rith­men imple­men­tie­ren, die – wie Phil­ip­pe Wampf­ler unlängst schrieb – „Frei­heits­mo­men­te […] in der höchs­ten Qua­li­tät“ anbie­ten. Ich stim­me dem sogar zu, wenn ich von star­ken Demo­kra­ti­en aus­ge­he, deren poli­ti­sche Sys­te­me für einen Inter­es­sen­aus­gleich zwi­schen Daten­samm­lern und Nut­zern sor­gen. Es läuft damit gera­de nicht so super in Chi­na oder der Tür­kei.

Dum­mer­wei­se sind star­ke Demo­kra­ti­en auf unse­rem Glo­bus nicht unbe­dingt die Regel. Und auch in einer star­ken Demo­kra­tie wäre es für die Beur­tei­lung von Algo­rith­men nicht ganz ver­kehrt, eini­ges dar­über zu wis­sen als sich mit Kom­pe­tenz­ge­sei­er alte Welt­bil­der zu bestä­ti­gen.

Es geht mir als Bera­ter gera­de nicht dar­um, Inter­net­gi­gan­ten kampf­los das Feld zu über­las­sen, son­dern ich den­ke, dass man Poli­tik – ganz gleich ob es z.B. Umwelt-, Netz- oder Sozi­al­po­li­tik ist – auf Basis von rudi­men­tä­ren Wis­sens­be­stän­den nach­hal­ti­ger betrei­ben kann. Dazu sind Soft­ware und Gerä­te als Hilfs­mit­tel uner­läss­lich und die muss irgend­wer her­stel­len und ent­wi­ckeln. Das sind i.d.R. Fir­men und das ist genau so lan­ge kein Pro­blem, wie eben­die­se kei­nen inhalt­li­chen Ein­fluss auf Schu­le neh­men oder so lan­ge kein Pro­blem, wie die­ser Ein­fluss in Schu­le einen unab­hän­gi­gen Kon­ter­part hat. Es wäre schön, wenn das auf Dau­er nicht allein die Medi­en­be­ra­tung der Län­der wäre, son­dern infor­ma­ti­sche gebil­de­te Schü­le­rin­nen und Schü­ler sowie natür­lich auch Lehr­kräf­te.

Das hal­te ich aber noch für eine län­ge­ren Weg. Das ist ja genau das Pro­blem: Lob­by­is­mus trifft hier auf weit­ge­hend unbe­stell­te Fel­der, an denen der­ar­ti­ge Kom­men­ta­re nicht ganz unschul­dig sind.

Ich bin mir nicht sicher, ob sich die­ses Pro­blem wirk­lich dadurch lösen lässt, Gerä­te aus den Schu­len her­aus­zu­hal­ten – geht auch gar nicht, weil die in Form von Han­dys und wahr­schein­lich bald auch in Form von Weara­bles schon da sind.

Die Ant­wort dar­auf kann nur Bil­dung sein und dazu gehört für mich im Zeit­al­ter der Digi­ta­li­sie­rung auch infor­ma­ti­sche Bil­dung. Mög­lichst früh. Geht auch ohne Gerät und unter­stützt dann sogar Lesen, Schrei­ben, Rech­nen und logi­sches Den­ken.

Es geht dabei – rich­tig ange­packt – also schon um ein wenig mehr als dar­um, der IT-Indus­trie will­fäh­ri­ge Pro­gram­mie­rer zuzu­füh­ren. Lei­der bewegt sich die Debat­te m.E. oft auf unter­kom­ple­xem Niveau.

 

 

 

OpenLDAP automatisch installieren und einrichten

Ich habe heu­te ein Script geschrie­ben, wel­ches OpenLDAP auf Debi­an­sys­te­men auto­ma­tisch instal­lie­ren und auch gleich für ppo­li­cy kon­fi­gu­rie­ren kann. Wer sowas schon­mal von Hand gemacht hat, weiß um die Schwie­rig­kei­ten. Es soll­te auf den meis­ten Debi­an­de­ri­va­ten funk­tio­nie­ren (ent­wi­ckelt habe ich auf stretch), ist aber leicht anpass­bar, da ich alle Ein­zel­schrit­te in Funk­tio­nen 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

Eigent­lich muss man oben nur ein ande­res Pass­wort set­zen und am Ende das „cleanldap“ aus­kom­men­tie­ren. Da das Gan­ze noch „Work in Pro­gress“ ist, feh­len noch eini­ge Funk­tio­nen:

  1. Kon­fi­gu­ra­ti­on für TLS
  2. Inte­gra­ti­on des fre­e­ra­di­us-Sche­mas
  3. Ver­nünf­ti­ge ACLs nach Abschluss der Instal­la­ti­on set­zen

Ja, ich ste­he in die­sem Jahr ziem­lich auf LDAP

Neues Jahr, neue Zielgruppen

Die­ses Blog ist ja rela­tiv breit auf­ge­stellt, was die The­men angeht. Erst­mals habe ich auch etwas an ande­rer Stel­le ver­öf­fent­licht und dabei sehr viel dar­über gelernt, wie man Lese­rin­nen und Leser nicht ver­grault – da bie­tet so man­cher Arti­kel hier doch eini­gen Opti­mie­rungs­be­darf.

Word­Press hat den ent­schei­de­nen Vor­teil, dass es rela­tiv such­ma­schi­nen­freund­lich auf­ge­stellt ist. Da hier mitt­ler­wei­le eini­ges an Inhal­ten vor­han­den ist, wer­de ich dem­nächst ein paar Din­ge ver­än­dern – für die treu­en Feed­le­ser soll­te dabei alles beim Alten blei­ben.

  1. Die Sei­te selbst wird sich mehr in Rich­tung eines Online­ma­ga­zins ent­wi­ckeln. Vie­le Arti­kel aus den ver­gan­ge­nen Jah­ren kann ich so etwas pro­mi­nen­ter prä­sen­tie­ren – man sieht schon etwas im Hea­der der Sei­te oder als Wid­get. Da wer­de ich aber noch viel expe­ri­men­tie­ren. Viel­leicht kann ich den einen oder ande­ren so etwas län­ger auf der Sei­te hal­ten.
  2. Ich möch­te ver­su­chen im Zuge von Punkt 1 mehr mit Bil­dern zu arbei­ten. Das lockert die Tex­te ggf. etwas auf und macht es dem Lesen­den u.U. leich­ter, dem teil­wei­se doch recht mini­ma­lis­ti­schen Kau­der­welsch zu fol­gen. Ich wer­de dazu Bil­der unter CC0-Lizenz nut­zen, etwa von Pixabay oder Jay Man­tri.
  3. Ich wer­de mei­ne Inhal­te alle­samt nach und nach hier im Blog zusam­men­zie­hen. Wun­dert euch also nicht, wenn hier dem­nächst auch viel Tech­nik­kram aus mei­nen Admi­nis­tra­ti­ons­er­fah­rung und der Ardui­no-AG hier hin­ein­dif­fun­diert. Wenn ich das Ver­öf­fent­li­chungs­da­tum fri­sie­re, soll­te da eigent­lich nicht so viel in den Feed hin­ein­wir­ken.
  4. Uneins bin ich mir noch, ob ich mich über Twit­ter hin­aus in sozia­len Netz­wer­ken enga­gie­ren soll­te. Mich machen die meis­ten Sachen und Dis­kus­sio­nen dort nicht beson­ders glück­lich. Mei­ne Twit­ter­welt besteht ja fast aus­schließ­lich aus der Edu-Welt-Fil­ter­bla­se, die ich sehr berei­chernd fin­de, die aber auch eine recht geschlos­se­ne ist.

Die­ses Blog bekommt sei­ne meis­ten Besu­cher über Such­ma­schi­nen, naja, eigent­lich über eine Such­ma­schi­ne. Die­se „belohnt“ Sei­ten mit Inhal­ten mit hohen Plat­zie­run­gen. Jeder neue Inhalt pro­fi­tiert damit von den bestehen­den, ist also u.U. in einem Wiki wie bis­her nicht gut auf­ge­ho­ben.

Ich weiß, dass es nicht „statt­haft“ ist, so zu den­ken und zu schrei­ben – Geld gibt es aber kei­nes für die­ses Blog und Kom­men­ta­re oder direk­te Rück­mel­dun­gen auch eher wenig, d.h. ich möch­te ger­ne schau­en, wie ich moti­viert bei der Sache blei­ben kann und da blei­ben neben den altru­is­ti­schen, idea­li­sier­ten Ansät­zen eigent­lich nur nack­te Zah­len.

 

 

Mailmanagement mit osTicket

Seit lan­gem nervt es mich, dass ich kei­ne kla­re Tren­nung zwi­schen der Bear­bei­tung von E-Mails und sons­ti­gen Auf­ga­ben  hin­be­kom­me. Mir schrei­ben vie­le Men­schen E-Mails: Mei­ne Kol­le­gin­nen und Kol­le­gen bei Pro­ble­men mit unse­rer Schul­ser­ver­lö­sung, Men­schen, mit denen ich im Rah­men der Medi­en­be­ra­tung zu tun habe. Oft geht es dabei um Ter­min­ver­ein­ba­run­gen, tech­ni­sche Pro­ble­me, Erstel­lung von Aus­stat­tungs­vor­schlä­gen, also klas­si­sche The­men, die man dem „Sup­port­be­reich“ zuord­nen kann. Da geht viel durch­ein­an­der, sodass ich das eine oder ande­re auch schon ein­mal ver­ges­se. Zum Glück gibt es ein Stück Tech­nik, wel­ches genau für die­se Anfor­de­rung erschaf­fen wur­de, denn Fir­men haben im Sup­port genau die glei­chen Her­aus­for­de­run­gen: Das Ticket­sys­tem. Ich set­ze dafür das kos­ten­lo­se Open­so­ur­ce-Sys­tem  osT­i­cket ein (hier gibt es eine Demo – Log­in: demo / Pass­wort: anmel­den ).

logo

osT­i­cket soll­te auf fast jedem Webspace pro­blem­los lau­fen, der fol­gen­de Bedin­gun­gen erfüllt:

  • MyS­QL-Unter­stüt­zung
  • PHP ab Ver­si­on 5.3
  • PHP IMAP – Modul
  • imap-fähi­ger E-Mail­ac­count mit der Berech­ti­gung, eige­ne Ord­ner anzu­le­gen

Was ändert sich?

osT­i­cket macht eigent­lich tech­nisch genau das, was ein belie­bi­ges E-Mail­pro­gramm wie Out­look oder Thun­der­bird tut: Es holt die Mails eines Kon­tos per imap ab, schreibt die­se jedoch in eine Daten­bank. Jede neue Mail erhält eine Ticket-ID, die auto­ma­tisch mit in die Sub­ject-Zei­le geschrie­ben wird, wenn ich jeman­dem ant­wor­te. Ant­wor­tet mir mein Gegen­über auf die­se Mail, erkennt osT­i­cket anhand der Ticket-ID, zu wel­chem Kom­mu­ni­ka­ti­ons­vor­gang die Ant­wort gehört und weist die­sen auto­ma­tisch zu. Ein Kom­mu­ni­ka­ti­ons­vor­gang heißt „Ticket“. Das ist erst­mal alles.

Hä? Und wo ist da jetzt der Unter­schied zu vor­her?

Bleibt ein Ticket zu lan­ge lie­gen (bei mir sind es drei Tage), schreibt osT­i­cket Jam­mer­mails und prio­ri­siert das jewei­li­ge Ticket, indem es den Kom­mu­ni­ka­ti­ons­pro­zess in einer Lis­te nach oben schiebt. Erst wenn ich ant­wor­te, ist wie­der für drei Tage Ruhe – ich brau­che das.

Wenn ein Pro­zess abge­schlos­sen ist, kann ich das Ticket „schlie­ßen“. Natür­lich wird eine Sta­tis­tik erstellt (mein Dienst­herr mag Sta­tis­ti­ken als „Arbeits­nach­weis“ und ich habe kei­nen Bock, die selbst zu erstel­len) und ich kann geschlos­se­ne Tickets ganz ein­fach fin­den, z.B. mit einer Suche nach einem Namen oder einer E-Mail­adres­se. Damit weiß ich, was ich wie oft mit wel­cher Per­son ver­hack­stückt habe.

Und sonst?

Ich kann vor­de­fi­nier­te Ant­wor­ten anle­gen – wenn eine Schu­le z.B. über unse­re Medi­en­zen­trum eine Home­page hos­ten und betreu­en las­sen möch­te, ähneln sich die Pro­zes­se doch sehr. Die Ant­wor­ten kli­cke ich ein­fach in die Mail hin­ein.

Auch für tele­fo­ni­sche oder münd­li­che Anfra­gen kann ich selbst Tickets eröff­nen. Da alle Pro­zes­se in osT­i­cket mehr­be­nut­zer­fä­hig sind, wüss­ten z.B. auch Kol­le­gin­nen und Kol­le­gen von mir, wo ich gera­de ste­he.

Wer es mag, kann osT­i­cket auch mit Andro­id und Co. über eine App mana­gen. Das ist für mich und mei­nen Work­flow aber eher ein Nach­teil. Ich set­ze mich lie­ber gezielt 1–2x am Tag an einen Rech­ner und arbei­te den Kram dann kon­zen­triert ab.

Außer­halb mei­ner Arbeits­zeit gibt es eine höf­li­che, aber bestimm­te Mail, die den Emp­fang bestä­tigt, aber dann auf z.B. Mon­tag ver­trös­tet.

Und nicht zuletzt: Das Back­up einer MyS­QL-Daten­bank ist auch viel per­for­man­ter als das­je­ni­ge tau­sen­der Fit­zel­da­tei­en auf der Fest­plat­te.

Und der E-Mail­cli­ent zu Hau­se?

osT­i­cket löscht nor­ma­ler­wei­se emp­fan­gen­de Mails auf dem Ser­ver, kann aber die­se auch in einen imap-Unter­ord­ner ver­schie­ben. Wenn sich eine wirk­lich pri­va­te Mail auf einen Dienstac­count ver­irrt, kann ich sie immer noch aus dem Archiv­ord­ner her­aus ganz nor­mal ohne Ticket-ID per­sön­lich mit der pri­va­ten Mail­adres­se beant­wor­ten.

 

1 2 3 4 17