Linkgebliebenes 40

Linkgebliebenes 39

Codecademy Hour of Code: Minute des Grauens

Hinter der Idee, das Programmieren möglichst einer breiten Masse zu erklären und damit auch noch möglichst früh anzufangen, stehe ich uneingeschränkt. So war ich von Codecademy, wie von vielen webbasierten Lernplattformen, sehr angetan. Gerade niedrigschwellige Kurse zu Grundlagen bekannter Programmiersprachen sind in vielen Fällen heute recht gut umsetzbar und können Hemmschwellen überwinden helfen. Wenn sie wie Codecademy zudem kostenlos sind, reißen sie einige Hürden sogar regelrecht ein.

Aber gerade bei Codecademy fehlt mir nach langer Zeit dort eine stringente didaktische Linie. Ihre Kurse sind meist fahrige Unterrichtseinheiten, die keiner erkennbaren Qualitätskontrolle unterliegen. Dabei kommt dann gerade der erwünschte Lerneffekt zu kurz, wenn Aufgaben irreführend oder nicht lösbar sind. Das Team hinter Codecademy wirbt, ganz von der eigenen Stärke überzeugt, in den höchsten Tönen vom eigenen Angebot, wirklich nachvollziehen kann ich das aber nicht. Zu oft bin ich auf Codecademy mittlerweile in schlecht geschriebene Kurse und andere Sackgassen gerannt, nur um dann zu erfahren, dass diese von ihren Entwicklerinnen und Entwicklern aus der Community verlassen wurden. Codecademy selbst hält sich dann meist zurück. Das können sie gerne machen, es ist ihr Dienst, ihr kostenloses Angebot, doch sehr im Einklang mit dem eigenen Anspruch erscheint es nicht.

Mein Eindruck ist also der einer gewissen Fahrigkeit, vielleicht sogar auch Gleichgültigkeit seitens des Dienstes. Neuestes Indiz ist die kürzlich im App Store aufgeschlagene Anwendung *Codecademy: Hour of Code". Hier kulminiert das Auseinanderklaffen von eigenem Anspruch und tatsächlicher Leistung in einer winzigen App, deren didaktischer Wert sich mir nicht erschließt.

Codecademy schließt sich dem Projekt der Hour of Code an, das sich an absolute Anfängerinnen und Anfänger richtet. Das ist allemal ein ehrenwertes Ziel, da kann ich verschmerzen, dass die App eigentlich nur ein aufgehübschter Multiple-Choice-Test in fingierter Editorumgebung ist. Ein wenig statische Eingabe kann vielleicht die Furcht nehmen, ohne dann mit absoluter Freiheit zu verwirren. Was aber nicht geht, sind die vielen Ungereimtheiten und Achtlosigkeiten, die Codecademy in der App an den Tag legt. Da soll ich dann mein Alter eingeben, kann aber genauso auch beliebige Strings eingeben. Die App feiert mein Alter von "jj" Jahren trotzdem als bahnbrechenden Erfolg in meinem kometenhaften Aufstieg als Programmierer.

Diese Unachtsamkeit häufen sich in dem Kurs voll simpler Aufgaben, die wenig einsteigerfreundlich vor die Füße geworfen werden. Wirkliche Erklärungen, was dort mit meinem Dummy-Code passiert, erhalte ich nicht. Aber das wäre anscheinend auch zuviel verlangt, denn Codecademy will mich anscheinend nicht einmal damit verwirren, mir mitzuteilen, welche Sprache sie mir hier beibringen. Es passt für mich ins Bild, wenn hinter dieser App mehr der Wunsch nach Wahrnehmung der eigenen Marke als das tatsächliche Interesse an durchdachten Lernkonzepten steckt. Für mich ist das enttäuschend, denn es droht doch, dass damit dann doch manche Leute eher abgeschreckt werden. Denn sie können nicht wissen, wie wenig ihnen die App tatsächlich erklärt, so könnten sie doch die eigene Verwirrung über die App so auslegen, als wäre das alles einfach eben doch nichts für sie.

Castro: Alter Spalter

Diese App muss ja spalten. Als Podcatcher setzt Castro klar auf ein stromlinienförmiges Design mit spartanischer Funktionalität.

Bis jetzt gibt es keinen Podcatcher, der sich so nahtlos in iOS7 einfügt. Castro ist eine Augenweide. In der Podcastübersicht dominiert noch das schlichte Weiß, in das sich viele Apps tauchen. Doch darauf explodiert jede Seite zu den Podcast in den jeweiligen Farben der Logos, doch ohne dass Castro an Struktur verliert. im Zweifel gebe ich nicht viel auf Design, wenn es aber so schlüssig ist wie hier, bin auch ich einfach nur beeindruckt.

Aber nicht nur optisch überzeugt mich Castro, auch die komplett gestenbasierte Oberfläche könnte kaum komfortabler dein. Zumal konkurrierende Podcatcher gerne mal größere Klickstrecken sind, als die Webpräsenz einer beliebigen deutschen Lokalzeitung. Alles ist nah beieinander in Castro, denn es gibt auch gar nicht so viel, wohin man sich verirren könnte. Die Übersicht abonnierter Podcasts ist eine Liste, der Strom aktueller Episoden ist eine andere. Von dort folgen nur noch einzelne Seiten zu den Podcasts, deren Einstellungen, und den Episodenbeschreibungen. Schon der Player selbst ist in die Episodenansicht integriert und befindet sich sonst in der Fußzeile der App.

Aber es gibt ein Aber. Die gewollte Simplizität kommt auf Kosten vieler Funktionen, die zumindest die deutsche Podcasthörerschaft schmerzlich vermissen wird. Es fehlen Features über Features, die manche als essentiell betrachten werden. Es fängt schon damit an, dass die Podcastsuche wie angepriesen sehr schnell ist und sogar erlaubt Episoden zu laden, ohne den Podcast abonnieren zu müssen, aber Podcasts manuell über ihren Feed hinzuzufügen war mir bislang nicht möglich. Es fehlt auch ein Sleep-Timer, das können die meisten wohl verschmerzen. Ich für meinen Teil komme gut ohne Kapitelmarken und Social-Media-Optionen aus, das werden wiederum manche überhaupt nicht leiden können. Problematisch ist aber schon eher, dass es derzeit keinen OPML-Import und -Export gibt, was für mich schon eher ein Tabu ist.

Die Menschen sind verschieden, warum sollten Podcatcher das also nicht abbilden? Castro ist noch nicht fertig, so fühlt es sich zumindest an. Einige Features werden wie die OPML-Unterstützung mit Sicherheit noch folgen, andere werden nie folgen. Castro ist anzumerken, dass e keine Allzweckwaffe sein soll, sondern ein schlichter, reduzierter Player. Ich finde es gut, wenn eine solch minimalistische App für Podcasts sich von unten an eine gesunde Zahl von Features herantastet, um nicht überfrachtet zu werden.

Castro liefert mir Podcasts, ohne dass ich noch viel dafür tun muss. Aber noch stimmt nicht alles. So deutlich Usability und Design für mich als Nutzer da sind, so deutlich fallen die Kanten auf, die Castro noch immer hat. So begeht die App einen der Fehler, bei denen ich mir immer denke, ob wir uns alle nicht darauf einigen können, dass wir nicht mehr App-Einstellungen außerhalb der App vornehmen müssen. Es kann einfach nicht in meinem Sinne sein, in die Systemeigenschaften wechseln zu müssen, nur um einstellen zu können, wie viel Speicherplatz die Episoden etwa einnehmen dürfen. Und damit bin ich an dem Punkt, der mir noch nicht klar ist, weil Castro vielleicht sogar etwas über das Ziel hinausschießt: Castro wird mit einem intelligenten Downloadmanagement beworben, das im Hintergrund alte Episoden entfernt. Allerdings kommuniziert die App nicht, wie genau sie vorhat, das zu tun. Ich muss also darauf vertrauen, dass gehörte Episoden irgendwann gelöscht werden. Es gibt aber keine Downloadübersicht, also sehe ich nicht in einer Liste, welche Episode. noch tatsächlich auf meinem Gerät sind oder welche Downloads noch laufen oder sogar gescheitert sind. Ich habe ja überhaupt nichts gegen ein wenig Magie, aber so komplett machtlos auf sie vertrauen zu müssen, bereitet mir doch Bauchschmerzen. So ist das auch bei den Einstellungen selbst, wenn ich derzeit noch für jedes Abonnement manuell einstellen muss, dass ich nicht jede aktuelle Folge herunterladen möchte.

Ich finde es auf jeden Fall erfrischend, dass Castro sich traut, aus dem Einerlei der Podcatcher auszubrechen. Noch geht die Rechnung nicht ganz aus, verspricht aber enorm viel Gutes.

Sleepy Hollow: Schläfrig hohl

Washington Irvings The Legend of Sleepy Hollow lädt zu neuen Interpretationen ein. Da wäre zunächst das mittlerweile längst abgelaufene Urheberrecht der 1820 veröffentlichten Erzählung, mit der sich eine bekannte Geschichte ohne lästige Lizenzen und Tantiemen an Hinterbliebene wiederbeleben lässt. Reizvoll ist aber auch der Inhalt: eine schaurige Mär um einen Reiter ohne Kopf.

Schon in Tim Burtons Sleepy Hollow wurde ordentlich an den Stellschrauben gedreht, braucht so ein ausgewachsenes Starvehikel doch einen geeigneteren Protagonisten als den vor Aberglaube in die Flucht geschlagenen Ichabod Crane aus Irvings Mär. In der 1999er Verfilmung ist Crane zwar noch immer ein Sonderling, aber einer, der eher zum Helden taugt, der sich im ausgehenden 18. Jahrhundert mit beinahe futuristischen Ermittlungsmethoden dem Irrglauben der Dorfbewohner und dem Übernatürlichen in den Weg stellt. War Crane schon bei Burton aus der Zeit gefallen, ist er es in der neuen TV-Serie umso mehr. Vermutlich um die Geschichte noch näher zur Zuschauerschaft zu tragen, werden der kopflose Reiter sowie Ichabod Crane, der nun gänzlich zum Widerstandskämpfer gegen die Briten im Unabhängigkeitskrieg hochgejazzt wurde, in die Gegenwart geworfen. Da gibt es dieses beschauliche Örtchen Sleepy Hollow noch immer, nun müssen wir also nicht mal mehr auf moderne Technik in unseren düsteren Sagen verzichten.

Mit ausreichend Popcorn und in geselliger Runde müsste das doch für kurzweiligen Grusel reichen. Müsste. In Wahrheit ist es eine so berechnete wie konfuse Enttäuschung. Für die Serie zeichneten unter anderen Alex Kurtzman und Roberto Orci verantwortlich, die das hervorragende Fringe hervorbrachten oder auch am Reboot von Star Trek im Kino ihren Anteil hatten, sie stecken aber auch hinter solchen Abgründen wie den Transformers-Verfilmungen. Und an letztere erinnert Sleepy Hollow viel zu oft. Schmerzhafte Dialoge treiben die Fremdschamesröte ins Gesicht, da hilft auch nicht, dass Tom Mison seinem Ichabod Crane hin und wieder heitere Momente abringt. Ansonsten wirkt Crane aber wie ein Fremdkörper — nicht in der Zeit, doch in der Narrative. Unterm Strich erstickt alles unter dem dicken Teppich wild gestreuter Mythologie und tumben Sprüchen.

Darunter leidet vor allem auch die von Nicole Beharie gespielte Abbie Mills. Mills steht als junge Ermittlerin der örtlichen Polizei im Zentrum der Ereignisse und hat auch noch weitere Verbindungen zu den aus der Zeit Gefallenen. Als starke Figur taugt Mills in Sleepy Hollow leider nicht. Weil Beharie nicht viel mehr machen braucht, sie muss nur die Verwirrung über die Drehbücher direkt in Mills kanalisieren, da bleibt kaum noch Raum für eine runde Figur. Schade, denn Beharie spielt charismatisch und so viele schwarze Frauen gibt es im Fernsehen leider immer noch nicht. Weder Beharie noch die Anlage der Figur trifft also die Schuld. Es liegt einzig an dem enormen Tempo, mit dem die Autoren eine historische Verschwörung an die nächste übernatürliche Erscheinung klammern. Selten hat eine Serie so schnell überdreht wie dieses wild mit Verweisen und Blut um sich werfende Sleepy Hollow.

Ganz so als ob die gefürchteten Anlaufschwierigkeiten einer Serie mit Gewalt überrannt werden sollen, prescht die Serie unerbittlich nach vorne. Vergisst aber, sich zu versichern, ob überhaupt noch jemand folgen kann. Und wie immer wenn die Nachvollziehbarkeit auf der Strecke bleibt, sammelt die Gleichgültigkeit die Reste auf.

Joe Danger Touch: Mehr Gefahr als für den zweiten Vornamen gut wäre

Dieses Spiel schuldet mir eine Menge Stunden meines Lebens. Aber die kriege ich wohl nicht zurück, ich hab sie ja gern auf den Sandpisten gelassen. Joe Danger ist kein großes Spiel, aber ein richtig ordentliches. Von vorne bis hinten es auf Spielbarkeit getrimmt, selten stieß ich an eine Schwelle, wo die Motivation nachließ.

Allen voran ist die Langzeitmotivation den ausgefeilten Mechanismen geschuldet. Wir kennen das: Trophäen, Pokale, Boni und Plaketten. Alles mögliche wollen uns Designer an die Brust heften, nur um uns in die Versuchung zu führen, die Level wieder und wieder zu spielen. Damit sie uns hoffentlich etwas mehr Zeit – und damit vermeintlichen Mehrwert – aus den Rippen geschnitten haben.

Bei Joe Danger sind die spielzeitdehnenden Maßnahmeb aber so präzise austariert, es macht gar nichts aus. Die Level spielen sich durchaus unterschiedlich. Will ich möglichst Punkte machen, muss ich Stunts vorführen. Das schließt aber oft aus, einen Level im Profimodus, also mit allen Sammelgegenständen und Aufgaben zu bestehen. Und auf Zeit ist eine ganz andere Herausforderung. Aber alle Modi machen im Grunde genauso viel Spaß wie die jeweils anderen. Also wirkt sich das ganze Brimborium, das einem mobile Spiele auch so oft verleiden kann, hier nur zum Vorteil aus.

Joe Danger nimmt Canabalts minimale Spielmechanik und bläht sie wieder etwas auf. Ein One-Touch-Spiel ist es nicht mehr wirklich. Immerhin ist es noch nah dran, bietet aber kein Endlosrennen, sondern glücklicherweise kurze Abschnitte mit diversen Herausforderungen.

Linkgebliebenes 38

Pythonista: Zitatesammlung

Als ich morgens in der Ringbahn durch den App Store klickte, fielen mir einige Apps auf, die nichts anderes machten, als ein paar Zitate anzuzeigen. Da dachte ich mir, so etwas doch auch mal in Python klöppeln zu können. Gesagt, getan. Zumindest der Anfang ist gemacht.

# -*- coding: utf-8 -*-
from scene import *
from random import randrange, choice
 
class MyScene (Scene):
	def setup(self):
		self._changebackground()
		self._shownewquote()
		
	def _changebackground(self):
		background(randrange(50, 90)/100.0, 
		           randrange(50, 90)/100.0,
		           randrange(50, 90)/100.0)
	
	def _truncatestring(self, s, length=25):
		# Split into quote and author
		s, author = s
		# Truncate quote to fixed length, but
		# keeping word boundaries.
		output = []
		while len(s) > 0:
			if len(s) < length:
				output.append(s)
				break
			elif s[length - 1] == ' 'and len(s) > length:
				output.append(s[:length])
				s = s[length:]
			else:
				adjust = s[length:].find(' ')
				if adjust == -1:
					output.append(s)
					s = ''
				else:
					output.append(s[:length + adjust])
					s = s[length + adjust + 1:]
		# Strip all unnecessary blank spaces
		# from resulting strings.
		output = [line.strip() for line in output]
		# Righta-djust author and append to output
		w = max([len(data) for data in output])
		output.append(author.rjust(w))
		return '\n'.join(output)
		
	def _shownewquote(self):
		text(self._truncatestring(rq.next(), 20), x=self.size.w/2, y=self.size.h/2, font_name='DejaVuSansMono', font_size=12)
	
	def touch_began(self, touch):
		self._changebackground()
		self._shownewquote()
 
class RandomQuotes():
	def __init__(self):
		self.quotes = list(open('quotes.txt'))
		self.currentquote = self._newquote()
 
	def next(self):
		while True:
			next = self._newquote()
			if next != self.currentquote:
				self.currentquote = next
				break
		return self.currentquote
		
	def _newquote(self):
		 return choice(self.quotes).split('#-#')
		
if __name__ == '__main__':
	rq = RandomQuotes()
	run(MyScene())

Das Script nimmt sich aus einer weiteren Textdatei (quotes.txt), die auch auf Gist liegt, einige Zitate* und gibt sie dann aus. Bei jedem Touch auf das Display wird ein neues Zitat angezeigt und die Hintergrundfarbe geändert. Feinschliff ist noch überhaupt nicht angesetzt, dafür musste ich zu früh aus der Bahn aussteigen. Aber es tut immerhin ganz ordentlich.

* Die Zitate selbst stammen von Wikiquote.

Linkgebliebenes 37