hubersn

Die gehackte Webpräsenz

 Uncategorized  Kommentare deaktiviert für Die gehackte Webpräsenz
Jan 302016
 

Irgendwann zwischen Weihnachten und Neujahr ist es passiert – genauer ließ es sich nicht rekonstruieren. Meine Webpräsenz wurde gehackt. Alle vier WordPressInstallationen und die Drupal-Installation waren betroffen. Die dahinter liegenden Datenbanken waren Gott sei Dank sauber.

Wie äußerte sich der Hack? Einige Benutzer berichteten von Redirects auf Phishing-Seiten, die meisten waren aber nur von schlechterer Performance betroffen, weil in die HTML-Daten JavaScript injected wurde, das auf gewisse Fremdseiten zugriff, die unglaublich schlechte Antwortzeiten hatten. oil-hockey.ch und rardec.co.uk waren darunter. Das verzögerte den Aufbau der Webseiten erheblich.

Klassifiziert war das Problem als „JS:Injection-A“ (Avast) oder „Mass Injection Website 19“ (Symantec). Für mehr Details hier ein Link zu Symantec. Es dauerte nicht lange, bis die Webpräsenzen bei mindestens einem Dienst (Norton Safeweb) auf der Blacklist standen. Das zieht dann weitere Kreise – vor allem Firmen haben oftmals automatische Verfahren, um Zugriffe aus dem Intranet auf Seiten auf Blacklists zu unterbinden. Gott sei Dank gab es bei Norton Safeweb eine relativ unkomplizierte Möglichkeit, eine Reevaluierung des Zustands zu veranlassen.

Seit einer Woche ist nun wieder alles bereinigt – WordPress- und Drupal-Neuinstallation nebst zwei WordPress-Theme-Wechseln (die alten sind noch verseucht, die muss ich noch aufräumen) hat das Problem gelöst. Dazu natürlich die Routine-Dinge wie Wechseln aller Passwörter. Scheiss-Aufwand, aber man lernt ja was dabei (man soll ja alles positiv sehen).

Ich danke meinen aufmerksamen Blog-Lesern, die mich über das Problem informiert haben, weil ihre Sicherheitssoftware angesprungen ist. Wer seine Webpräsenz schnell online auf Malware checken will, dem sei der Online-Security-Scanner von Sucuri empfohlen.

Und was lernt man daraus? Früher war alles besser – da hätte man schnell ein paar alte Versionen der HTML-Dateien eingespielt und fertig wäre die Säuberungsaktion. In der heutigen Welt der CMS-Systeme mit ihrem üblen PHP-Verhau dauert eine Analyse viel länger. Und: nur weil eine Webpräsenz eine überschaubare Anzahl Besucher hat – man sollte also denken, dass so ein Hack ein wirklich schlechtes Preis-Leistungs-Verhältnis hat – heißt das nicht, dass nicht doch ein paar üble Gesellen Hand anlegen. Abgesehen davon ist es nie schlecht, regelmäßig Backups zu machen – ok, das ist eine IT-Binsenweisheit, das sollte man schon vorher gewusst haben.

RetroPie vs. MiST: erste Eindrücke

 Retrogaming  Kommentare deaktiviert für RetroPie vs. MiST: erste Eindrücke
Jan 252016
 

Als Kind der 80er mit besonderer Affinität zum Schneider CPC und tausenden Spielstunden Erfahrung mit Klassikern wie Bomb Jack, Nemesis, R-Type, Gryzor, Ikari Warriors, Renegade, Savage, Sorcery, Hexenküche II, Deflektor, Grand Prix Simulator, BMX Simulator, Barbarian, IK+, Highway Encounter, The Bard’s Tale, Boulder Dash, Bruce Lee, Combat School, Commando, Defender of the Crown, Speedking, Super Hang-On, Wec Le Mans, Prohbition, Silent Service, Gunship, They $tole a Million, Impossible Mission, Winter Games, Barry McGuigan’s Championship Boxing, Ping Pong, Yie Ar Kung Fu, Puzznic, Saboteur, Spindizzy, Ghost’n’Goblins, Western Games, Werner – Mach Hin! und Boulder Dash – um nur die wichtigsten zu nennen – bin ich immer auf der Suche nach Lösungen, die alten Schätzchen neu erleben zu können.

Seit einiger Zeit betreibe ich dazu das MiST-Board (alte Blog-Posts dazu hier, hier und hier), welches gute Dienste leistet, aber bekanntlich ist ja das Bessere des Guten Feind. Als Besitzer diverser Raspberry-Pi-Modelle – natürlich vornehmlich zum Einsatz von RISC OS – lag es nahe, eine der Emulationslösungen auf dem Pi unter die Lupe zu nehmen.

Als Distribution zum Testen habe ich mir RetroPie ausgesucht (Version 3.3), das im Prinzip eine benutzerfreundliche Schale um EmulationStation ist und Raspbian als Unterbau verwendet. Als Hardware-Basis dient ein RPi 2 Model B, um ein bisserl Luft für die CPU-intensive Emulation zu haben. Als Controller verwende ich einen Competition Pro USB, um das originale 80er Microschalter-Feeling zu genießen.

Der erste Test war natürlich mit dem CPC-Emulator (caprice32 wird hier als Backend verwendet). Dazu schnell ein paar DSKs per Netzwerk (RetroPie richtet standardmäßig SMB-Freigaben ein) auf den Pi gespielt, diese wurden problemlos erkannt und nach Auswahl von „Amstrad CPC“ in einer grafisch schicken Liste angezeigt. Wie überhaupt die grafische Präsentation von RetroPie sehr schön aussieht. Nacheinander habe ich Bomb Jack, Nemesis, Grand Prix Simulator und Gryzor angetestet, sowohl mit Joystick als auch mit Tastatur gesteuert (traditionell spiele ich CPC-Spiele oft mit der Tastatur, weil ich zu Anfang meiner CPC-Karriere schlicht keinen Joystick hatte – der Computer war ja schließlich Lern- und Arbeitsgerät :-)). Optisch und akustisch ist das alles einwandfrei (eine echte Prüfung für Emulatoren ist immer die Sprachausgabe von Grand Prix Simulator). Aber ich hatte ständig das Gefühl, das was nicht stimmt. Ich kann es nicht genau sagen, aber irgendwie stimmt das Timing nicht. Die alten Rückenmarksreflexe funktionieren nur ab und zu – und dass die eigentlich noch in Ordnung sind, zeigt der Wechsel zum MiST – dort habe ich jederzeit das Gefühl, vor einem Original-CPC zu sitzen.

Das MiST ist also mein Favorit bezüglich des originalgetreuen Spieleerlebnisses. Was also spricht für RetroPie? Eine ganze Menge. Der Pi ist preiswerter als das MiST. RetroPie unterstützt mehr Plattformen. Bluetooth-basierte Controller können verwendet werden (dafür nicht ohne weiteres die klassischen Atari-kompatiblen digitalen Joysticks). Ein Anschluss an moderne Fernseher oder Projektoren per HDMI ist völlig problemlos. Auch komplexe Plattformen können emuliert werden – das MiST ist vermutlich irgendwo zwischen Amiga und Archimedes am Ende, der Pi 2 hat genug Saft für PS1, Sega 32X und Nintendo N64. Das Handling des MiST mit den SD-Karten ist uneleganter als die Befütterung des Pi über Netzwerkfreigaben. Die Auswahl der Spiele ist deutlich hübscher als über das schmale OSD-Menü des MiST.

Und kaum schreibe ich das alles auf, schon gibt es eine neue Version von RetroPie: 3.4 wurde am 2016-01-21 veröffentlicht, das unter anderem nun Debian Jessie statt Wheezy als Basis verwendet. Ansonsten klingen die Änderungen eher nach Bugfixing als nach Feature-Revolution.

Abgesehen davon gibt es Alternativen wie Lakka und Recalbox die auch noch ausprobiert werden müssen.

Aber am Ende bleibt die Erkenntnis: bevor man zu lange überlegt, einfach beides kaufen und Spaß haben.

Die Windows 10-Netzwerk-Misere

 OS  Kommentare deaktiviert für Die Windows 10-Netzwerk-Misere
Jan 162016
 

Man sollte ja immer offen sein für Neues. Und so hatte ich es Ende letzten Jahres gewagt, einen Windows 7-Rechner des Haushalts auf Windows 10 umzustellen (ich vermeide hier mal das eher positiv belegte Wort „Upgrade“). Das Upgrade dauerte ewig, aber am Ende schien alles in Ordnung. System lief prima, ob besser oder schlechter als mit Windows 7 wage ich nicht zu beurteilen. Aber viele Dinge sahen schon schicker aus, und Nachteile waren auf den ersten Blick nicht zu erkennen. Alle Treiber hatten das Upgrade auch überlebt, also alles im grünen Bereich.

Dann, vor wenigen Tagen, passierte es. Keine Internet-Verbindung mehr. Wie sich nach kurzer Analyse herausstellte: überhaupt keine Netzwerkverbindung mehr. Weder WLAN noch LAN ging – das System schaffte nicht mal den DHCP-Request, ein kurzes Umkonfigurieren auf eine statische IP half auch nicht.

Erster Versuch: Problem mit Hardware erschlagen. WLAN-Repeater mit LAN-Anschluss. Verschiedene WLAN-USB-Sticks (mit verschiedenen Chipsätzen, so dass neue Treiber installiert wurden). Der Versuch, mit einem LTE-Router eine Verbindung ins Internet zu bekommen. Nix ging. Kurz gegoogelt. Aber welche Problemlösungen bekommt man mit einem derart generischen Problem? Router resetten, Treiber und Firmware aktualisieren, BIOS-Update, und natürlich das klassische „Windows neu installieren“.

Was tun? Mal die Windows-eigene Netzwerk-Analyse laufen lassen. Und tatsächlich gab es ein Analyse-Ergebnis: „Es fehlen die für die Netzwerkkonnektivität erforderlichen Windows Sockets-Registrierungseinträge“. Unnötig zu erwähnen, dass die angebotene automatische Lösung gar nichts geändert hat. Aber: endlich hatte ich einen Text, den man in Google füttern kann. Wenige Sekunden später war klar: immerhin bin ich nicht allein. Das Windows-Update KB3120677 war schuld. Mögliche Lösungen beinhalteten z.B. das Löschen aller Netzwerkgeräte (inklusive der ausgeblendeten) im Geräte-Manager, gefolgt von einem Neustart, gefolgt von „netsh winsock reset“, gefolgt von einem Neustart. Half leider auch nicht. Es war auch nicht möglich, das fragliche Update einzeln zu deinstallieren. Also: Systemwiederherstellung auf den Zustand vor diesem Update. Danach die Geräte-Manager-Prozedur, und endlich war wieder Netzwerk im Haus.

Auch andere Windows-Versionen hatten in der Vergangenheit ja so ihre Probleme mit einzelnen Updates. Komischerweise wurde ich bisher von derartigem Unbill verschont. War wohl Pech diesmal. Persönliches Pech macht aus Windows 10 nun kein schlechtes Betriebssystem. Aber das ungute Gefühl bei jedem zukünftigen Update wird bleiben.

„Danke“ an meine Freunde in Redmond für die vielen Stunden verschwendete Lebenszeit. Echter Dank gebührt den fleißigen Bloggern, die diverse Lösungsansätze publiziert haben, besonders Günter Born.

Frohes Fest

 Uncategorized  Kommentare deaktiviert für Frohes Fest
Dez 242015
 

Ich wünsche allen meinen Lesern – die sich allein deshalb glücklich schätzen können, weil sie zu einem ganz kleinen elitären Kreis gehören – ein Frohes Fest und einen guten Rutsch ins neue Jahr. Wir dürfen gespannt sein, was 2016 so bringt. Am Ende vielleicht sogar mehr Blog-Einträge?

$5. Wow.

 Hardware  Kommentare deaktiviert für $5. Wow.
Nov 262015
 

Die Raspberry Pi Foundation hat wieder zugeschlagen. Weder ein Gerücht noch ein einziger Mucks war vorher zu vernehmen. Und jetzt ist er da: der Raspberry Pi Zero. Spektakulär der Preis: 5 US$ soll das gute Stück kosten. Unsere Freunde auf der Insel dürfen sogar auf ein kostenloses Exemplar hoffen, sofern sie sich zum Kauf der aktuellen Ausgabe der Zeitschrift „The MagPi“ durchringen können.

Prozessortechnisch basiert der Pi Zero auf dem BCM2835, also heißt es wieder: zurück zum ARM11-Core. Diesmal allerdings in der 1 GHz-Ausprägung.

Aber irgendwas muss bei diesem Preis natürlich geopfert werden. In diesem Falle: Schnittstellen. Insbesondere bestückte Schnittstellen. Kein Ethernet, nur ein Micro-USB, Micro-HDMI statt HDMI, die GPIO-Stiftleiste nicht bestückt, der Composite Video Out nicht bestückt.

Die kleineren Abmessungen kann man dagegen wohl leicht verschmerzen.

In Summe also ähnlich dem Raspberry Pi A-Modell, noch weiter reduziert, aber endlich mal alle Schnittstellen auf einer Seite der Platine gebündelt.

RISC OS scheint übrigens auch „out of the box“ zu laufen. Fehlt nur noch ein geeigneter Anwendungsfall.

Ein wenig Historie

 Uncategorized  Kommentare deaktiviert für Ein wenig Historie
Okt 282015
 

Die Gründerzeit der IT aus meiner Sicht war die Heimcomputerzeit. Zwar gab es zuvor jede Menge EDV, aber doch hauptsächlich im Umfeld größerer Firmen oder bei Universitäten, also nichts für den einfachen Mann von der Straße. Erst die Heimcomputerzeit Anfang der 80er brachte den Computer in den Privatbereich. Jede Menge kleine, innovative Firmen entstanden und brachten allerlei Computer auf den Markt. Viele verschwanden genauso schnell wieder in der Versenkung. An die, die länger blieben, haben wir die besten Erinnerungen: Acorn und Sinclair, Commodore und Atari, Amstrad und Apple.

Paul Fellows, ein Software-Entwickler genau aus dieser Gründerzeit, hat auf der RISC OS Show London 2015 einen launigen, kurzweiligen Vortrag gehalten über die Geschichte des Acorn BBC Model B und die frühe Zeit des Acorn Archimedes, als man in größter Not ARTHUR aus dem Boden stampfte. Anschauen! Ab 4:30min geht es los. Eine frühere, ausführlichere Variante kann man hier nachlesen.

Artikelserie vom MiST-Meister in der c’t

 Hardware, Software  Kommentare deaktiviert für Artikelserie vom MiST-Meister in der c’t
Sep 202015
 

Das MiST-Mastermind Till Harbaum hat in der aktuellen, morgen am Kiosk erscheinenden c’t (Ausgabe 21/2015) den ersten Teil einer bisher auf (mindestens?) drei Teile geplanten Artikelserie publiziert. Darin geht es um die Basics rund um die FPGA-Programmierung, und natürlich dient das MiST-Board als Basis für diese Experimente.

Wer schon immer wissen wollte, wie das mit der „Magic“ der MiST-Cores so funktioniert, könnte dümmeres tun, als sich die neueste c’t zu holen. Auch wenn das einzige Ergebnis des ersten Teils ist, die gelbe LED des MiST-Boards blinken zu lassen.

Für den zweiten Teil der Serie ist ein Pong-Klon angekündigt, sprich man erfährt wie die Videoausgabe funktioniert und wie man auf Eingaben des Benutzers reagiert. Im dritten Teil geht es dann ans Eingemachte: eine Z80-Implementierung nebst Speicher und Videocontroller kommen zum Einsatz – als alter Z80-Hase freue ich mich darauf besonders.

Neben der bloßen Verwendung vorgefertigter Cores wird dem MiST-Projekt also eine weitere, interessante Facette hinzugefügt.

Erste Gehversuche mit dem MiST-Board

 Hardware  Kommentare deaktiviert für Erste Gehversuche mit dem MiST-Board
Aug 162015
 

Im April hatte ich nebenan im RISC OS-Blog kurz über das MiST-Board berichtet, und zwar anlässlich des ersten Archimedes-Cores.

Wer nach „Core“, „MiST“ und „Archimedes“ nur Bahnhof versteht, hier die Schnellbleiche. Das MiST-Board ist im Prinzip ein kleiner Computer. Kernstück ist aber nicht eine gewöhnliche CPU, sondern ein FPGA. Also ein frei reprogrammierbarer Logikbaustein. Hier kommt dann die Begrifflichkeit des „Cores“ ins Spiel. Ein solcher „Core“ konfiguriert den FPGA. Und im Falle des MiST emuliert (oder besser simuliert) der FPGA dann einen kompletten Rechner der 80er oder frühen 90er.

Das Mastermind hinter dem MiST, Till Harbaum, kommt aus der Atari ST-Szene und hatte ursprünglich das Ziel, auf dem MiST einen Commodore Amiga („Mi“, als Ablösung für das Minimig) und einen Atari ST („ST“) nachzubilden. Wer die Historie nachlesen will, fange bei diesem Thread im Atari-Forum an. Dieses Ziel ist inzwischen weit übererfüllt. Der ST-Core kann inzwischen auch einen deutlich schnelleren STE nachbilden, der Amiga-Core hat inzwischen auch die Geschmacksrichtung AGA drauf. Und es sind zig Cores dazugekommen: Arcade-Automaten wie Pacman, Space Invaders und Moon Patrol, 8bit-Heimcomputer wie Schneider/Amstrad CPC, Commodore 64, Atari XL, MSX und Sinclair ZX Spectrum, frühe Spielkonsolen wie Atari VCS 2600 und CBS ColecoVision ebenso wie ihre etwas moderneren Nachfahren Nintendo Entertainment System, Sega Master System und NEC PC-Engine (auch als TurboGrafx bekannt).

Nun können heutige PCs mit Leichtigkeit ebenso diese kompletten Rechner und Spielkonsolen emulieren. VICE, Hatari, UAE, ArcEm, WinAPE, MAME, DosBox – die Liste ist endlos. Warum also nicht auf diese zurückgreifen? Ich würde nicht empfehlen, diese Frage im falschen Forum aufzuwerfen – die Fronten stehen sich unversöhnlich gegenüber. Die FPGA-Front reklamiert für sich, das echte Retro-Feeling bereitzustellen – ohne künstlich konvertierte Framerates, ohne Lags bei Tastatur und Joystick, ohne ewig Windows oder Linux booten zu müssen, und das alles in einer kleinen Box, die man auch mal zum Kumpel mitnehmen kann.

200€ sind aufgerufen für ein MiST-Board, käuflich zu erwerben z.B. bei Lotharek in Polen oder beim DragonBox Shop in Deutschland. Konkurrenz gibt es momentan eigentlich immer noch keine – FPGAArcade ist in den Startlöchern, aber das auch schon seit Jahren. Andere Projekte sind sehr speziell, wie z.B. das Suska-Board, das sich ganz der Atari ST-Welt verschrieben hat.

Nun habe ich – untypisch für mich, aber der Titel verrät es schon – das MiST-Board nicht nur gekauft, sondern tatsächlich auch in Betrieb genommen. Man sollte sich nix vormachen: das MiST-Board ist zwar durchaus professionell gefertigt und steckt in einem stabilen Metallgehäuse, aber der Feinschliff einer kommerziellen Ready-to-run-Lösung wird logischerweise nicht erreicht. Ein paar Hürden will ich nennen.

Zunächst sollte man die Firmware aktualisieren auf die neueste Version – oft sind neue Versionen von Cores zwingend auf Features neuer Firmware angewiesen, und wenn man nicht aufpasst, bekommt man merkwürdige bis verwirrende Fehlersituationen. Gott sei Dank ist der Upgrade einfach – SD-Karte (muss FAT-formatiert sein!) mit der neuesten firmware.upg-Datei bestücken und übers OSD updaten. Woher man die Firmware bekommt? Das MiST-Projekt wird auf Google Code gehostet, Firmware liegt frisch im SVN.

Klingt einfach? Nicht ganz, denn das OSD (erreichbar über den mittleren Taster) gibt es nur, wenn ein Core erfolgreich geladen wird. Man braucht also immer ein gültiges core.rbf auf der SD-Karte. Ich empfehle einen Atari-ST-Core. Mein MiST wurde mit einer Firmware-Version von April ausgeliefert, passend sind also ST-Cores ab Revision 1017.

Ein Stolperstein kann auch die verwendete SD-Karte sein. Eine SanDisk Ultra 2 GB aus meinem Bestand zeitigte merkwürdige Effekte, eine Transcend microSD 32 GB funktioniert völlig problemlos.

Kompliziert ist das Zusammenspiel mit moderner Hardware, namentlich dem Bildschirm. Das MiST-Board ist mit einem VGA-Ausgang ausgestattet. Also eher old-school. Aber lange nicht so old-school wie der simulierte Hardware. Und hier beginnen die Probleme. Seit die Welt moderne LCDs nutzt, wird dem analogen Videoeingang wenig Aufmerksamkeit gewidmet. Und so kommt es, dass die unterstützten Bildschirmmodi immer enger definiert werden. Oft werden von modernen Monitoren und Fernsehern nur noch die VESA-Modi unterstützt, und das stürzt uns Europäer in Sachen MiST in die Krise: ein europäischer Heimcomputer muss selbstverständlich 50Hz Bildwiederholfrequenz ausgeben, egal ob C64, Schneider CPC oder Amiga. Immerhin hat das MiST-Board einen Scandoubler mit an Bord, so dass nicht noch zusätzlich die 15kHz-Zeilenfrequenz-Krise über uns hereinbricht. Für echte Old-Schooler mit NEC MultiSync 3D oder ähnlich altgedienter Hardware kann man den Scandoubler per ini-Datei auch deaktivieren.

Erstes Ergebnis: mein Monitor (der eigentlich ein Fernseher ist – ein LG 22″er) mag nur mit den Arcade-Cores und dem Atari ST-Core zusammenspielen. Meine guten alten CRTs (der angesprochene NEC MultiSync 3D und ein Nokia 19″er) hingegen konnten auch mit dem 50Hz-Signal des CPC-Cores, des Amiga-Cores und des C64-Cores etwas anfangen. Der LG hat auch einen RGB-fähigen Scart-Eingang, d.h. dort könnte ich noch einen Versuch mit deaktiviertem Scandoubler starten. Versuche mit meinem Fernseher (älterer Toshiba-LCD) und meinem Projektor (Sanyo PLV-Z3) stehen noch aus, ebenso mit meinen zwei älteren LCD-Monitoren. Einige Cores kann man auf 60Hz-Betrieb umkonfigurieren, ob das im Einzelfall hilft muss ich noch testen.

Leider habe ich nirgendwo eine gescheite Lösung für dieses Problem gefunden. Es gibt VGA-HDMI-Konverter, aber die sind eher zickig. Es gibt Scart-HDMI-Konverter, für die gilt dasselbe. Es gibt professionelle Scaler-Lösungen, die sind eher teuer. Es gibt nirgendwo eine Liste von „guten“ Monitoren, die mit den entsprechenden Analog-Signalen klarkommen. Am Vielversprechendsten erscheint mir noch ein kleines Stück Hardware, das in diesem Forum vorgestellt wird.

Soviel zu den Hardware-Hürden. Aber auch die Software-Hürden sind nicht zu unterschätzen, insbesondere wenn man die Original-Rechner niemals besessen hat. Eine kurze Sammlung: für den Betrieb des Amiga-Cores braucht man selbstverständlich ein Kickstart-ROM. Woher nehmen? Zwei legale Möglichkeiten: aus einem alten Amiga auslesen, oder die kommerzielle Emulationslösung „Amiga Forever“ käuflich erwerben. Letzteres habe ich getan. Die Überraschung: jetzt habe ich zwar Lizenzen für alle möglichen Kickstart-Versionen der Welt, aber leider liegen sie nur in verschlüsselter Form vor. Gott sei Dank wusste das Internet Abhilfe. Beim Atari ST-Core ist die Sache etwas einfacher, da gibt es mit emuTOS eine Betriebssystemvariante, die als Open Source vorliegt. Wer Original-TOS-Versionen betreiben will, muss sich leider aus zweifelhaften Internet-Quellen bedienen.

Und wer wie ich den Archimedes-Core betreiben will, braucht natürlich ein lizenziertes RISC OS. Also wieder: aus einem alten Rechner rippen, oder bei RISC OS Ltd. kaufen – dort ist recht preiswert eine Sammlung alter Betriebssystemversionen von Arthur 0.30 bis RISC OS 3.71 mit allem dazwischen für 10 englische Pfund erhältlich. Ironischerweise – vielleicht würde dieser Artikel sonst im RISC OS-Blog erscheinen und nicht im IT-Blog – ist es mir nicht gelungen, den Archimedes-Core in Betrieb zu nehmen, der Bildschirm blieb schwarz – aber ich bleibe dran. Möglicherweise nur ein Problem mit dem MonitorType.

Meine MiST-Ziele für die absehbare Zukunft:

  • CPC-Core: Bomb Jack, Ikari Warriors und Black Land spielen
  • Amiga-Core: Katakis und Turrican spielen
  • C64-Core: Armalyte und IO spielen
  • Atari VCS 2600-Core: Jungle Hunt und Enduro spielen
  • Arcade: Pacman und Space Invaders spielen
  • Acorn Archimedes: Zarch und Elite spielen, lauffähig mit RISC OS 2 und RISC OS 3.1 mit Minimal-Floppy-Boot

Ich denke, das MiST-Projekt könnte durchaus davon profitieren, wenn „fertige“ SD-Card-Images (soweit es die rechtliche Lage erlaubt) verfügbar wären und etwas benutzerfreundlichere Dokumentation, wo man nicht so viel zwischen den Zeilen lesen und sich viele Informationen von mehreren Stellen zusammenholen muss. Könnte was für mich sein.

Beknackte Oberflächen – heute: Outlook 2010 EMail-Export

 Software, UI  Kommentare deaktiviert für Beknackte Oberflächen – heute: Outlook 2010 EMail-Export
Jul 112015
 

Ich fürchte, die heute begonnene Serie „Beknackte Oberflächen“ könnte ein Dauerbrenner werden. Es gibt weniges, was mich so nervt wie beknackte, unintuitive Benutzungsoberflächen. Es nervt deutlich mehr als hässliche, aber wenigstens funktionale Oberflächen.

Microsoft musste ja viel Kritik einstecken für die Einführung des „Ribbon“-Konzepts. Und das völlig zu Recht. Heute noch frage ich mich, was denn der große Vorteil dieses Konzepts sein soll, und warum es nicht wenigstens möglich war, beide Konzepte parallel zu integrieren – denn letztlich wird ja auch jede Ribbon-Aktion entweder direkt ausgeführt (so wie bei der guten alten Toolbar) oder öffnet irgendwann denselben schäbigen Dialog wie früher.

Es geht ja das Gerücht, dass Microsoft Legionen an UI-Experten beschäftigt und ständig Versuchspersonen befragt zur Benutzbarkeit ihrer Oberflächen. Keine Ahnung, wo diese Experten waren, als ein Programmierer die Aufgabe bekam, in Outlook 2010 die Funktionalität „EMail exportieren“ einzubauen.

Die Ausgangssituation: ich hatte diverse zu exportierende EMails in einer Folder-Struktur gesammelt und wollte nun diesen Folder exportieren und war schon gespannt, welche Formate mir wohl Outlook anbieten würde – Microsoft ist ja auch bekannt dafür, Industriestandards – wenn sie nicht von Microsoft selbst erfunden wurden – entweder nicht oder unvollständig oder fehlerhaft zu unterstützen.

Es stellte sich aber heraus, dass das Export-Format gar nicht das Problem ist, denn die Frage war zunächst: wie funktioniert der Export denn überhaupt? Intuitiv wäre gewesen, den Export über das Kontextmenü erreichbar zu machen – aber da geht nur, über „Eigenschaften“ über den Reiter „AutoArchivierung“ zu archivieren – aber ich wollte ja jetzt exportieren und nicht irgendwann archivieren. Vielleicht direktes Drag&Drop des Folders ins Dateisystem? Nein, da empfängt mich das Verbotsschild. Also mal im „Datei“-Ribbon nachgeschaut, ob es da „Export“ oder „Speichern“ oder sowas gibt. Gibt es nicht. Jetzt war ich doch einigermaßen ratlos und bin die anderen Ribbons durchgegangen. Nix zu sehen. Die Symbolleiste für den Schnellzugriff inspiziert. Geschaut, ob es dort in den „Weiteren Befehlen“ vielleicht irgendeine Export-Aktion gibt. Wieder nix.

OK, dann mal in den „Optionen“ nachschauen, ob man dort irgendwo was aktivieren kann. Dann die Überraschung: Unter „Erweitert“ gibt es tatsächlich einen Bereich „Exportieren“ nebst zugehörigem Button. Drückt man diesen, gibt es noch eine Überraschung: ein Dialog öffnet sich, der eine Auswahl von 9 Aktionen anbietet. 9 Export-Aktionen? Nein, natürlich nicht. 7 davon sind Import-Aktionen. Ah ja. Immerhin: die anderen Dinge unter „Optionen -> Erweitert“ scheinen wirklich Optionen zu sein und keine gut versteckte Funktionalität. Es ist also noch nicht alles verloren.

Die Abstraktionskaskade

 Uncategorized  Kommentare deaktiviert für Die Abstraktionskaskade
Apr 162015
 

Jeder Informatiker kennt das: wenn man heutzutage Software entwickelt, kämpfen zig Frameworks und andere Technologien um die Gunst der Nutzung bei der Implementierung. Dabei versprechen letztlich alle, die Komplexität der Welt zu verstecken hinter einem mächtigen Schutzschild der Abstraktion. Mit Java ist es uns egal, auf welchem Betriebssystem wir laufen. Mit Hibernate ist es uns egal, welches DB-System wir nutzen. Mit JEE ist es uns egal, auf welchem Application Server wir laufen und mit welcher Middleware wir kommunizieren. Mit GWT ist es uns egal, in welchem Browser unsere Oberfläche dargestellt wird. Und mit Spring ist uns alles egal.

Das Problem ist nur: keine Abstraktion ist perfekt. Und damit meine ich nicht das Phänomen, das Joel Spolsky mit „leaky abstraction“ benannt hat. Manche Abstraktion verhindert, dass wirklich gute Software entstehen kann. „Gut“ im Sinne von performant, ins System integriert, ressourcenschonend. Allgemein könnte man sagen: Abstraktion verhindert eine spezifische Problemlösung.

Nehmen wir Java als Beispiel. Das „WORA“-Prinzip – „Write Once Run Anywhere“ – ist das große Versprechen. Bei der graphischen Oberfläche war der erste Versuch „AWT“, ein Toolkit, das das Prinzip der Abstraktion schon im Namen trägt. Um „WORA“ zu garantieren, implementierte AWT schlicht den kleinsten gemeinsamen Nenner bei den graphischen Oberflächen dieser Zeit. Es war erschreckend, wie klein dieser Nenner wirklich war. Der zweite Versuch – Swing – basierte auf dem Ansatz, dass es wenigstens möglich sein müsste, anständige graphische Oberflächen so zu bauen, dass sie wenigstens überall gleich aussehen, wenn auch nicht wirklich „nativ“. Mit der „pluggable Look&Feel“-Technik gab es immerhin die Möglichkeit, sich den einzelnen Plattformen aussehensmäßig anzunähern. Im Detail gab es trotzdem immer Unterschiede, weil Swing bis heute z.B. nicht das plattform-native Font-Rendering verwendet hat. Und auch Swing litt durchaus unter dem Ansatz des kleinsten gemeinsamen Nenners, der erst partiell durch das JDIC-Projekt entschärft wurde.

Wenn man es kritisch formuliert, könnte man sagen: wenn man ein Cross-Plattform-UI-Toolkit verwendet, hat man zwar auf vielen Plattformen ein UI, aber eben auch überall ein suboptimales UI. Erinnert ein wenig an die Situation im Bereich der mobilen Plattformen, wo die „im-Browser-aber-dafür-überall“-Lösungen gegen die „native-und-dafür-nicht-überall-oder-überall-anders“-Lösungen kämpfen.

Wenn man ganz weit zurückgeht, könnte man die CISC-CPUs als erste Abstraktionsschicht begreifen. Beim Z80 zum Beispiel gab es den schönen Speicherblockkopierbefehl „LDIR“ (echte Nerds mit Vertiefung in Z80-Assembler wissen durch jahrelanges Studium von Hexdumps sofort den Op-Code auswendig: ED B0). Man hat drei Register geladen, LDIR aufgerufen und 21 Zyklen pro kopiertem Byte verbraten. Hat man das Kopieren „von Hand“ übernommen, konnte man allerdings zwei Bytes in nur 16 Zyklen (über clevere Manipulation des Stack-Pointers und Verwendung von Push und Pop) kopieren. Also damals schon ein Fall von Performance vs. Bequemlichkeit, und auch ein wenig „einfacher zu verstehen aufgrund der Abstraktion“ – eine Eigenschaft, die nicht alle Abstraktionen haben, denn oftmals abstrahieren sie so weit vom Problem, dass es eher komplizierter wird.

Ich persönlich fühle mich hinter zuviel Abstraktionen unwohl. Zu oft sind die Implementierungen fehlerhaft, so dass man beim Finden von Workarounds von der abstrakten Ebene hinabsteigen muss in den Maschinenraum. Oft wird dann die Problemlösung deutlich komplizierter – eben weil sie irgendwie wieder in die Abstraktion passen muss. Trotzdem habe ich mich über die Jahre mit Java angefreundet, begrenzt auch mit Swing und Vaadin. Trotzdem genieße ich die Abstecher zu C und ARM Assembler unter RISC OS, wo man per SWI-Aufruf mit dem Betriebssystem spricht und die Register dazu direkt befüllt – es ist instruktiv sowohl in Hinsicht auf damit erreichbare Performance und Kompaktheit als auch als Erinnerung an die eigene Fehlbarkeit.

Letztlich gibt es keinen Königsweg. Wer alles selbst machen will, wird niemals in akzeptabler Zeit fertig werden. Wer alles aus Fremdkomponenten zusammenstöpselt, wird bei der Qualität der Lösung immer Abstriche machen müssen. Time to market, Quality and Performance, Price. Choose any two. Und die Kunden nicht aus den Augen verlieren – nicht immer werden Argumente vom Schlage „kann man nix machen, das Framework macht das halt so“ akzeptiert. Auf der anderen Seite kann es böse ins Auge gehen, dem Fehlschluss „wenn die Abstraktion eh nix taugt, kann ich es gleich selbst machen“ zu erliegen.