Online Sprachen lernen mit der VHS Bitburg

Wir haben mit der VHS Bitburg einen schlagkräftigen Partner gefunden, der ab dem nächsten Semester unser Sprachmodul flächendeckend als Ergänzung zu den Präsenzschulungen einsetzt. Gestern wurde die Sache unter Dach und Fach gebracht. Das klingt sehr, sehr vielversprechend.

Ansonsten habe ich das Modul nochmal optimiert. Soweit ich das einschätzen kann, hat die Reduktion der Anzahl an HTTP-Requests, die Umsortierung der Einbindung von externen JavaScript- und CSS-Dateien sowie die Verlagerung von dem Dojo Toolkit auf ein CDN wirklich was gebracht – obwohl die AJAX-RIA sowieso schon fixer ist als ich es erwartet habe.

Bug-Suche (??) im Sprachprogramm

Mein Sprachmodul steht kurz vor der Finalversion und ist mittlerweile im ersten richtigen Einsatz. Neben zahlreichen Testusern gibt es auch schon erste Kunden, die den Kurs als Produkt gekauft haben.

Und bei zwei gibt es z.Z. eine kleine Macke im Lückentext. In leider nicht ganz eindeutig nachvollziehbaren Situationen wird er gelegentlich nicht angezeigt.
Und jetzt bin ich auf der Suche, woran das liegen könnte.

Gibt jetzt einige Ansätze, die ich verfolge. Alles in Allem tricky, aber gar nicht schlecht, weil ich das Modul nochmal auf Herz und Nieren prüfe bzw. optimiere.
– Zuerst habe ich natürlich getestet und wieder getestet. Ich habe mittlerweile gut 20 verschiedene Testkonstellationen mit verschiedenen Rechnern, Betriebssystemen, Browsern, virutellen Maschinen etc. ausprobiert und das Problem will auf Teufel komm raus bei mir nicht auftreten. Auch bei meinem Partner nicht.
– Ich habe den Code wieder und wieder analysiert – der ist meines Erachtens ok.
– Die Datenbank habe ich auch nochmal gecheckt. Nix zu finden.

Die ganze Fehlersituation scheint nach meiner jetztige Interpretation auf eine unglückliche Konstellation aus Hardware, Internet-Verbindung und Softwareinstallation beim Kunden zurückzuführen zu sein. Aber die wollen wir natürlich rausbekommen, um möglichst genaue Vorgaben machen zu können, was für das Sprachprogramm unabdingbar ist.

Jetzt kam aber die Idee auf, dass das Problem bei einem Kunden an der langsamen Internet-Verbindung des Kunden hängen könnte. Er hat nur DSL 2000. Und da ich mit DSL 16000 arbeite deshalb das Problem nicht lokalisieren könne.

Konnte ich mir zwar nicht vorstellen, aber dem musste ich natürlich nachgehen.

Dabei hat mir das Tool YSlow sehr gute Dienste geleistet. Das ist ein Firefox-Addon zum Testen, welche Bestandteile einer Webseite die meiste Zeit verbrauchen und wie lange die Seite wirklich braucht. Das hat mich auf diverse gute Ansätze gebracht, die gesamte Applikation erheblich zu beschleunigen. Hab in dem problematischen Part des Moduls umgesetzt. Aber das hat das Problem noch nicht gelöst.

Jetzt habe ich weiter an der Performance-Idee rumgebastelt. Ich habe vor allen Dingen ein Tool gesucht, um meine eigene Internet-Verbindung zu drosseln und die RIA unter schlechten Internet-Verbindungen praxisnah zu testen. Ich hab zwar nur ein Shareware-Tool mit Namen Net Limiter gefunden, aber das kann man 28 Tage testen und es hat mir genial weiter geholfen. Ich habe meine Verbindung damit bis auf Modem-Geschwindigkeit gedrosselt.

Und dann unter den Extrembedingungen das Modul getestet.

Und – oh Wunder – das Modul funktioniert sogar mit Modem-Geschwindigkeit halbwegs. Das hätte ich nie erwartet. Selbst vor der Performance-Optimierung, die ich vor der endgültigen Finalversion noch durchführen will. Zwar werden die Tondateien nicht richtig abgespielt (das wäre zuviel des Guten), aber sonst funktioniert das Teil. Unglaublich. Mit ISDN-Kanalbündlung ist das Sprachprogramm voll funktionstüchtig. AJAX und Dojo/Prototype sei Dank. Das Teil ist so viel schneller als ich erwartet habe. Klasse. Wir könnten im Prinzip also die untere Grenze für die Internet-Verbindung auf ISDN (zur Sicherheit mit Kanalbündlung) festlegen, aber das macht im Grunde keinen Sinn. Wer mit dem Sprachmodul lernen möchte, sollte auf jeden Fall eine Flatrate oder zumindest einen Volumentarif haben und sowas findet man eigentlich nur bei DSL. Aber der einfachste DSL-Standard ist auf jeden Fall ausreichend.

Nur das Problem, das mich zu den Tests und Optimierungen geführt hat, habe ich immer noch nicht gefunden. DSL 2000 ist mehr als ausreichend.

Ich tippe immer mehr auf eine fehlerhafte Installation vom Browser, Java, Flash oder so was. Zur Not versuche ich einen Remotezugriff auf den Kundenrechner, wenn der mich lässt. Ich muss die Fehlermeldung und den gerenderten Quelltext sehen. Sonst stochere ich nur im Nebel.

Neue Version des Blogs mit WordPress auf eigener Domain

Nachdem ich bisher meine Blogs ja hier bei Blogger (Google) gehostet habe, verlege ich die Blogs nun zusätzlich auf meine eigene Domain https://blog.rjs.de. Insbesondere möchte ich mich tiefer in WordPress einarbeiten und dessen erweiterte Möglichkeiten nutzen. Allerdings bleiben meine Blogs auch bei Google und ich werde wohl eine Weile parallel posten. Immerhin sind die Blogs bei Blogger mittlerweile ganz gut besucht.

Der Import der Daten aus Blogger in WordPress hat ganz gut funktioniert, aber nur indirekt. Der direkte Zugriff auf Blogger sollte eigentlich gehen, aber ich hatte ein Problem mit der Legitimierung. Das Tool https://blogger2wordpress.appspot.com/ hat aber super Dienste geleistet.

RJS Assoziativmemory die Zweite


Ich habe das RJS Assoziativmemoy für den Onlinesprachkurs zum Lernen von Fremdsprachen weiter entwickelt. Ich habe ein paar Verbesserungen der Benutzerführung integriert und mehr Lektionen (also Texte) freigegeben.

Hier ist der Webstartaufruf zum Ausprobieren.

Des Weiteren habe ich eine kleine Abwandlung von dem Programm erstellt. Und zwar für Fremdsprachler, die Deutsch lernen wollen. Im Wesentlichen sind dazu aber nur die beschreibenden Texte der Applikation ins Englische übertragen worden. Sonst gibt es keine wesentlichen Unterschiede.

Hier ist der Webstartaufruf zum Ausprobieren.

Neues JavaFX-Programm


Wie schon mehrfach erwähnt arbeite ich zur Zeit an der Fertigstellung und Markteinführung von einem Onlinesprachkurs zum Lernen von Fremdsprachen. Der Kurs ist mittlerweile freigeschaltet und kann bereits für mehrere Sprachen wie Englisch, Französisch, Spanisch, etc. genutzt werden.

Auf der anderen Seite überarbeite ich zur Zeit mein Buch zu JavaFX. Zudem werde ich im Sommer als Speaker auf einer Konferenz einen Vortrag und einen Workshop zu JavaFX halten. Nun lag es nahe, diese beiden Aspekte zu verbinden.

Ich habe deshalb mit JavaFX ein kleines Feature geschrieben, das das Lernen von Sprachen auf eine weitere Weise ergänzt.

Testen Sie Ihre Sprachkenntnisse mit dem RJS-Assoziativmemory.
Hier ist der Webstartaufruf zum Ausprobieren.
Beachten Sie, dass Sie beim Aufruf über Webstart einige Sicherheitsfragen explizit bestätigen müssen. Ebenso sollten Sie beachten, dass es sich zur Zeit noch um einen frühen Prototypen handelt, was sich etwa in der Benutzerführung und der Performance auswirken kann. Dennoch enthält er bereits alle geplanten Features.

Die Idee ist folgende:

Mit dem Programm können Sie über Assoziationen Ihre Kenntnisse einer Sprache testen. Sie sehen sowohl fremdsprachige Sätze als auch die deutschen Übersetzungen. Allerdings unsortiert. Sie sollen die fremdsprachigen Sätze mit den deutschen Übersetzungen in Verbindung bringen.

Sie starten einen Test und sehen dann auf der linken Seite Schaltflächen mit fremdsprachigen Texten. Auf der rechten Seite sehen Sie in zufälliger Reichenfolge die Schaltflächen mit den zugehörigen deutschen Texten. Sie sollen jeweils die zwei zusammengehörigen Button selektieren.

Wenn Sie ein zusammengehörendes Paar selektieren, wird das Paar entfernt. Die Idee des Tests ist dabei an das Spiel Memory angelehnt

Das Feature wird in absehbarer Zeit in einer weiterentwickelten Version in den Onlinesprachkurs integriert.

Noch was zur Technik:
Das Frontend von dem Programm ist wie gesagt in JavaFX Script geschrieben und greift per HTTP auf einen Webserver zu, um Texte für den Test auszuwählen. Im konkreten Fall wird auf Serverseite ein PHP-Skript aufgerufen, das Daten aus einer MySQL-Datenbank lädt (die fremdsprachigen und deutschen Texte für den Test).
In den Folgeversionen soll insbesondere die Flexibilität bei der Auswahl der Texte erhöht werden und vor allen Dingen die Texte genau an die Lektionen in dem Onlinesprachkurs angepasst werden. Z.Z. ist das in dem Prototyp noch fest mit einer Lektion verdrahtet.

Kurz vor Ende – das offizielle Cebit-Fazit

Es ist kurz vor Ende der CeBIT 2009 und die Messe zieht ein positives Fazit. Man sei mit dem Verlauf der CeBIT 2009 zufrieden und rund ein Viertel weniger Aussteller als im Vorjahr sei kein Problem. Es würden viele Geschäfte gemacht und es gäbe

qualitativ sehr gute Zahlen, sehr gute Besucher

. Und

es herrsche Zufriedenheit

.

Hm. da muss ich auf einer anderen Cebit gewesen sein 😉

Aber im Ernst – warum kann man nicht einmal ehrlich sein?

hasta la vista baby

Gestern war ich auf der Cebit. Ziemlicher Hammertag. Früh morgens kurz nach 6:00 Uhr los und heute um 2:00 Uhr zurück gekommen. Zumindest war die Fahrerei problemlos (kein Stau und vor allen Dingen nicht das sonst übliche Schneecaos auf der Rückfahrt). Und meinen Beitrag zur Verringerung der CO2-Werte habe ich auch geleistet, da 2 Leute über die Mitfahrzentrale zur Cebit mitgenommen.

Nur stellt sich die Frage, was es an Highlights und Erwähnenswertem zur Cebit selbst gibt?

Der Autorenabend von Addison-Wesley respektive Markt+Technik natürlich. Die Feten sind ja sowieso meist das Beste an Messen 😉

Ich hab auch ein paar ganz interessante Gespräche führen können und hab viel Marketing für das Sprachmodul gemacht. Da ist so eine Messe natürlich eine gute Plattform.

Ganz interessant fand ich die Webciety-Ecke. Wobei mit diese Wortschöpfung aus web und society ekelhaft ist. Sowas von anbiederndes Marketing. Aber aus dem kleinen Park zu dem Thema konnte ich ein paar Anregungen mitnehmen.

Aber sonst? Hab mal meine Mitautoren gefragt und kaum einer hat was wirklich Spannendes bemerkt. Außer Arni natürlich. Den hätte ich gerne gesehen, aber der konnte seinen Terminplan nicht mit meinem synchronisieren.

Ansonsten ist mir aufgefallen, dass ich das erste Mal seit meiner Cebit-Zeit ohne anzuhalten bis zum Parkplatz fahren konnte. In den offiziellen Quellen heisst es, dass die stark zurückgegangenen Besucher- und Ausstellerzahlen kein Problem wären, da die Qualität gestiegen wäre. Was ein Bullshit. Das behaupten sie jedes Mal. Wirtschaftskrise hin oder her – die Wendung der Cebit von einer Messe für den Massenmarkt hin zu einer seriösen B2B-Messe fährt die gesamte Veranstaltung gegen die Wand. Wird einfach interessanter.

Geärgert hat mich auch das Kontrollsystem der Veranstaltung. Die Freischaltung der Karten fordert viel zu privaten Daten. Das ist m.E. unverschämt. Und die Registierung als Fachjournalist wird auch immer schwerer. Meinen Presseausweis erkennen die gar nicht mehr an.

Und auch arm ist, dass das freie W-LAN nicht funktioniert hat.

Cebit-Woche

Die Cebit geht los. Bis Ende der Woche trifft man sich mal wieder in Hannover. Werde auch hingehen. Am Donnerstag. Aber ehrlich gesagt fürchte ich, dass es kaum was Interessantes gibt (bis auf die Feiern rundrum natürlich ;-)). So sehr ich auch nachdenke – was soll denn z.Z. der Knaller sein?

Etwa der Öko-PC und Stromsparen in der EDV? Das ist politisch vielleicht als Topthema gewünscht – aber ehrlich – wen interessiert das wirklich bei einer Cebit?

Oder noch kleinere Handys? Ich habe sowieso nicht die besten Augen – wenn ich jetzt schon das Handy mit der Lupe suchen, muss bringt mir das auch nix.

Netbooks? Die waren schon die letzten Monate hipp.

Kurz gesagt – ich lasse mich überraschen, erwarte aber rein gar nichts wirklich Spannendes dieses Jahr.

VHS-Kurse

Es stehen mal wieder ein paar Schulungen an verschiedenen Volkshochschulen an. Gestern habe ich an der VHS Mainz mit einem Abendkurs zu Java begonnen (6 Termine), morgen läuft ein 1-täger Kurs zu Powerpoint an der VHS Taunusstein und am Sonntag – falls der Kurs nicht noch ausfällt (z.Z. steht er ziemlich auf der Kippe) – ein Tagesgrundkurs zum Thema Internet an der VHS Idstein.

Englisch in der Praxis

Nachdem der Kurs Englisch ohne Mühe den Reigen der Onlinesprachen begonnen hat, beendet ihn der Fortgeschrittenenkurs Englisch in der Praxis – zumindest erst einmal.

Aktuell bin ich zwar an der Umsetzung von Russisch ohne Mühe, aber die russichen Sonderzeichen machen einige Mühe. Sowohl was die Integration in die MySQL-Datenbank als auch die gemeinsame Darstellung mit den deutschen Zeichen in der Webseite angeht.
Zwar habe ich die Kollation der Datenbank für Russisch auf utf-8 (utf8_unicode_ci) eingestellt (auch explizit alle Felder) und auch der Charset steht auf utf-8. Dennoch bekomme ich zur Zeit nur ???? zu sehen. Hier muss ich wohl noch eine Weile experimentieren, bevor Russisch und andere Sprachen mit besonderen Zeichensätzen funktionieren.

Livemeeting-Konferenz

Es ist später Abend und ich nehme gerade an ner kostenlosen Livemeeting-Konferenz über Silverlight-Applikationen mit Blend teil. Hält ein Typ von Microsoft selbst direkt in USA. Und mit dem Microsoft Office Live Meeting sind 17 Teilnehmer aus aller Welt zugeschaltet.
Ist schon faszinierend, wie das mittlerweile weltweit funktioniert. Wird die Art der Schulungen sicher auf Dauer stark verändern. Hin von der Präsensschulung zur Onlineschulung. Aber die Anfangsprobleme bei der Konferenz mit dem Ton machen mir doch Mut, dass Liveschulungen noch einige Jahre dennoch die Regel bleiben. Außerdem wird man unglaublich leicht abgelenkt, wenn man zuhause am Rechner sitzt.
Das Thema selbst ist für mich mäßig interessant. Aber als ergänzenden Überblick zu Silverlight nehme ich doch auch bei peripherer Aufmerksamkeit was mit.
Und ich kann ein bisschen weiter mit Windows 7 experimentieren, denn die ganze Geschichte lasse ich in einer VM laufen.

Sprachmodul redesigned

Nachdem mittlerweile 4 Sprachen in das Sprachmodul integriert sind, habe ich eine gute Basis um die grundsätzliche Funktionalität und das Zusammenspiel der einzelnen Komponenten zu testen.

Die ersten Testrückmeldungen von Anwendern sowie eigene Experimente sind vielversprechend, so dass ich mich zum ersten Redesign entschlossen habe. Damit sollte das Modul einen entscheidenden Schritt hin zur Finalversion gemacht haben. Ich setze die Versionsnummer auf 0.97.


Im Rahmen des ersten Redesigns wurden verschiedene kleinere Bugs korrigiert, Anregungen von Testern eingebaut und das Modul modularisiert und verschlankt. Das sollte sich auch positiv auf die Performance auswirken.

Ich gehe jetzt an die Integration weiterer Sprachen. Aktuell sind

  1. Englisch ohne Mühe
  2. Französisch ohne Mühe
  3. Italienisch ohne Mühe
  4. Spanisch ohne Mühe

verfügbar und m.E. auch bereits für den Prxiseinsatz fertig. Die ersten kommerziellen Anwender sind auch schon am Lernen.

Zeichenwandler in JavaFX

In der letzten Zeit brauche ich bei der Programmierung immer wieder die Zeichencodes von einzelnen Buchstaben und vor allen Dingen Sonderzeichen (vor allen Dingen für HTML und PHP). Das Suchen von Tabellen im Internet ist mir langsam lästig geworden.

Deshalb habe ich ein kleines Programm in JavaFX geschrieben, in das man einfach ein oder mehrere Zeichen eingeben kann und den entsprechenden ASCII-Code beziehungsweise Unicode erhält.

Das Programm kann sowohl als Java-Applet in eine Webseite eingebunden werden oder aber per Webstart direkt von einem Webserver gestartet werden.

Klicken für einen Webstart zum Beispiel hier

Ich habe das Programm so gebaut, dass bis zu maximal 10 Zeichen umgewandelt werden. Das bedeutet mit anderen Worten, dass Sie bis zu 10 Zeichen in das Eingabefeld eingeben können und die jeweiligen Code der einzelnen Zeichen (abgetrennt durch einen Bindestrich) erhalten.


Sie können das Tool als Widget kostenlos direkt in Ihre Webseiten einbinden, ohne es auf Ihrem Server bereitstellen zu müssen. Dann wird es bei einem Aufruf von meinem Server hinzugebunden.

Kopieren Sie einfach den nachfolgenden Code in Ihre Webseite.

Die Oberfläche von dem Programm ist mit JavaFX programmiert, die Logik im Hintergrund wieder reines Java.

Mit Java dreieckige Arrays erzeugen

Java kennt ja erst einmal keine multidimensionale Arrays. Aber Arrays mit Arrays als Inhalt (allgemein – beliebige Referenztypen). Kann man sehr einfach ganz witzige Effekte erzielen. Weihnachten ist zwar vorbei, aber dennoch:


public class Weihnachtsbaum {
public static void main(String[] args) {
char[] spitze = { ' ', ' ', ' ', '*' };
char[] ebene1 = { ' ', ' ', '*', '*', '*' };
char[] ebene2 = { ' ', '*', '*', '*', '*', '*' };
char[] ebene3 = { '*', '*', '*', '*', '*', '*', '*' };
char[] stamm = spitze;
char[] baum[] = { spitze, ebene1, ebene2, ebene3, stamm, stamm, stamm,
stamm };
for (char[] cs : baum) {
for (char c : cs) {
System.out.print(c);
}
System.out.println("");
}
}
}

Führt dazu:


*
***
*****
*******
*
*
*
*