Die Windows 10-Netzwerk-Misere

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

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.

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

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

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

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

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

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.

Java 8u40: JavaFX jetzt mit Accessibility

Das seit kurzem verfügbare Java 8 Update 40 schließt endlich eine der letzten Lücken, die einen seriösen Einsatz von JavaFX in Businessanwendungen verhindert hat: Accessibility, wie es neudeutsch heißt. Gemeint ist damit, dass die Komponenten der grafischen Oberfläche nun in der Lage sind, Anwendungen wie Screenreadern und Hardware wie Braille-Zeilen mit den notwendigen Daten zu versorgen. Swing konnte das seit Ewigkeiten (Java 1.2?), auch wenn die “Java Access Bridge” erst seit Java 7 mit jeder JRE unter Windows direkt in die Accessibility-Funktionalität des Betriebssystems integriert wurde.

Danke an Oracle, die jetzt ihrem Ziel, JavaFX als “Swing, next generation” zu positionieren, einen guten Schritt näher gekommen sind.

Jetzt noch eine offiziell unterstützte Implementierung von JavaFX für Android, iOS und Windows Phone, und wir kommen dem alten “WORA”-Versprechen wieder sehr nahe. One toolkit to rule them all. Auch wenn ich natürlich erst vollends zufrieden bin, wenn auch RISC OS unterstützt wird 🙂

RPi – TNG

Recht überraschend hat die Raspberry Pi Foundation die nächste Generation des Raspberry Pi Model B vorgestellt, konsequenterweise benannt “Raspberry Pi 2 Model B”. Offenbar wollte man die Äquivalenz zu den alten 8-Bittern der Acorn BBC-Reihe nicht weiter fortsetzen, sonst hätte das Dingens vermutlich Raspberry Pi Master heißen müssen.

Gegenüber dem letzten “kleinen” Update, dem +-Modell, das bekanntlich nur eine leichte Modellpflege war (microSD statt SD, 4x USB statt 2x USB, etwas sparsamer im Stromverbrauch), handelt es sich jetzt um einen echten Nachfolger – das Herz hört jetzt auf den Namen BCM2836 und beinhaltet einen Quad-Core-Cortex-A7, der mit 900 MHz getaktet ist. Gegenüber dem Vorgänger BCM2835 mit dem 700 MHz Single-Core-ARM11 ein dramatischer Fortschritt bezüglich der CPU-Power. Man beachte, dass der Cortex-A7 ein teilweise superskalares Design ist und daher auch bei der Single-Core-Performance dem ARM11 deutlich voraus ist. Über den Daumen gepeilt würde ich etwa die doppelte Performance vermuten nach den Erfahrungen mit dem Cortex-A8, dem er am nächsten kommt in der wichtigen DMIPS/MHz-Kategorie. Der Cortex-A7 profitiert dabei auch von seiner relativ kurzen Pipeline.

Definitive Aussagen zur Performance sind im Moment schwer zu treffen, weil es kaum Informationen zum BCM2836 – klar ist derzeit nur, dass sich an der GPU namens VideoCore IV nichts geändert hat. Cachegrößen sind unklar, aber nach ersten Infos ist VFP4 und NEON mit am Start, was je nach Auslegung und Software gigantische Fortschritte gegenüber dem Vorgänger erlaubt. Ob der BCM2836 ähnlich gutmütig beim Übertakten ist wie sein Vorgänger, bleibt abzuwarten.

Was speicherhungrigen Systemen (also alle Betriebssysteme außer RISC OS…) definitiv helfen wird, ist die Aufdoppelung des RAMs auf 1 GB. Ob das RAM nicht nur größer sondern auch schneller geworden ist, dazu habe ich keine Informationen gefunden.

Ansonsten ändert sich nichts – die Platine ist für das ungeschulte Auge vom Raspberry Pi B+ nicht zu unterscheiden, demzufolge passen die Gehäuse auch für beide Modelle. Auch der Stromverbrauch sollte im bisherigen Rahmen bleiben – bei Vollauslastung aller Cores tendenziell etwas mehr. Auch schön: der Preis bleibt praktisch unverändert und liegt in Deutschland irgendwo zwischen 38 und 39€.

Für die Linuxer ist interessant, dass der Cortex-A7 nun natürlich ARMv7 implementiert – vor allem Ubuntu hatte sich im ARM-Bereich früh auf ARMv7 konzentriert, das dürfte die Sache nun erleichtern.

Interessanterweise wurde auch angekündigt, dass Windows 10 auf dem Pi kostenlos zur Verfügung gestellt wird. Was Microsoft damit bezweckt, ist mir noch etwas unklar – spannend wird sein, welche Variante es sein wird, wie man hört soll es Windows 10 in den verschiedensten Geschmacksrichtungen von CLI-only bis Full-Blown geben.

Gegenüber der Konkurrenz wie Banana Pi, Cubieboard, Cubietruck, BeagleBone Black oder auch MarS-Board, Cubox und HummingBoard hat der neue Raspberry Pi 2 nun den Wettbewerb stark verschärft – bisher hatte der Pi den Preis auf seiner Seite, die Konkurrenz die CPU-Leistung. Hier wird das Feld nun kräftig durcheinandergewirbelt. Nur im I/O-Bereich lässt der Pi weiterhin der Konkurrenz reichlich Luft zum Atmen, da weiterhin ohne Gigabit Ethernet oder SATA.

Zum Launch am Montag waren 100.000 Geräte verfügbar, offenbar hat man viel aus dem Verfügbarkeitsdesaster aus der Anfangszeit des RPi gelernt. Stand jetzt sind bei den üblichen Verdächtigen wie Reichelt oder Watterott immer noch Lagerbestände verfügbar. Nein, ich muss mich korrigieren: Reichelt meldet “ausverkauft”.

Die RISC OS-Seite der Geschichte habe ich hier schon beleuchtet, aktuell kann man hinzufügen, dass das Nightly-Build-ROM inzwischen auf dem Raspberry Pi 2 läuft.

Nachtrag (2015-02-05)

Auch Watterott ist inzwischen ausverkauft.