Dirk Ollmetzer | Wednesday, 26 December 2012 | Development, Misc
Irgendwas ist in den letzten Tagen an mir vorbeigerauscht. Muss wohl Weihnachten gewesen sein, oder so. Jedenfalls konnte ich das konsequent ignorieren. Ich habe die Tage ganz entspannt verbracht:
Ich habe Rinderrouladen gemacht. Mann, waren die lecker!
Wir haben Osterspaziergänge gemacht – jedenfalls den Temperaturen nach zu urteilen
Meine Fahrt zum 29C3 (Jahreskongress des Chaos Computer Clubs), der ab morgen in Hamburg stattfindet, musste vorbereitet werden.
Letzteres ist vielleicht am merkwürdigsten. Ich programmiere seit 30 Jahren. Bisher in Basic, Pascal, Assembler, Java, PERL, Python, PHP und Javascript, aber noch nie in C oder C++.
C habe ich mir zu Beginn der 90er mal angesehen, fand es aber mit seinen anstrengenden und fehlerträchtigen Details wie Pointern, Memory Allocation, Stringverarbeitung usw. einfach nur ätzend. C++ habe ich daher niemals näher betrachtet.
Vor kurzem hatte ich mir die Frage gestellt, welche Sprache für eine Anwendung sinnvoll ist, die auf Windows, Mac und Linux direkt lauffähig ist. Für Java, Python u.ä. benötigt man immer noch eine Laufzeitumgebung, die Otto Normalverbraucher nicht installiert hat (ein Klick mehr = 30% User weniger). Es muss also ein richtiger Compiler her.
Ich hatte mir mehrere nicht uninteressante Basic Dialekte angesehen, die aber meist nur von wenigen Programmierern weiterentwickelt werden. Mein Eindruck: Zukunftsfähigkeit eher zweifelhaft.
Ein ernstzunehmender Kandidat scheint mir dagegen FreePascal zu sein. Sowohl der Compiler, als auch die IDE Lazarus ist für alle wichtigen Betriebssysteme (sogar für Nintendo Gameby Advanced!) erhältlich und es gibt aufgrund der Ähnlichkeit zu Delphi eine aktive Community.
Und dann habe ich mir gedacht “guck doch noch mal nach C++”. Mit der Sprache kann man so ungefähr alles programmieren, was sich programmieren lässt. Ich fange dann mal mit einem kleinen Spiel auf der Textkonsole an. Bis jetzt tut es auch noch nicht weh… ;-)
Free Pascal werde ich mir zum Vergleich aber auch noch einmal näher ansehen.
Letzte Woche gab es einen Sturm im Wasserglas: Instagram verkauft DEINE Bilder.
Zunächst mal stimmte das so nicht ganz. Deutscher “Qualitätsjournalismus” eben. Instagramm hat sich bestimmte Nutzungsrechte eingeräumt – was auch schon nicht nett ist und sicherlich auch nicht gerichtsfest. Aber Leute – hey – der Laden gehört zu Facebook. ’nuff said.
Zudem: Ich habe nie kapiert, was an dem Ding toll sein soll. Ein Service, der schlechte Schnappschüsse vergilbt aussehen lässt. Toll! Nicht.
Ansonsten gilt wie immer bei Diensten im Internet:
Wenn Du für einen Dienst nicht zahlst, bist Du nicht der Kunde, sondern die Ware.
In diesem Sinne möchte ich mal wieder auf den hervorragenden Webcomic von XKCD verweisen, der das Thema mal wieder voll auf den Punkt bringt:
Im Dezember hatte ich die Muße, mir über einige grundlegende Dinge jenseits des Tagesgeschäfts Gedanken zu machen. Ein Punkt betrifft dabei, welche Anforderungen aktuell an die Nutzeroberfläche eines Onlineshops zu stellen wären. Das letzte Mal habe ich solche Requirements im Herbst 2010 geschrieben. Seitdem hat sich einiges getan.
Internet “macht” man nicht mehr ausschliesslich am Computer. Heutzutage ist auch der Durchschnittskunde sowohl stationär per PC, semistationär per Notebook, auf dem Sofa per Tablet und auch unterwegs per Smartphone im Internet. Einige nutzen sogar Browser in Smart TVs und Spielekonsolen. Was bedeutet das für eCommerce?
One Size doesn’t fit all!
Anhand des Zoos möglicher Endgeräte bleibt die Erkenntnis: Ein Layout für alle funktioniert nicht mehr, wenn man dem Kunden ein möglichst gelungenes Einkaufserlebnis bieten möchte.
Am augenfälligsten (im wahrsten Sinne des Wortes) ist, dass sich die Bildschirmauflösungen und Pixeldichte extrem unterscheiden. An dieser Stelle kommt man langsam nicht mehr um responsive Design herum. Aber das ist längst nicht alles.
Dazu kommt, dass sich die Bedienung von ‘normalen Webseiten’ per Maus und Tastatur deutlich von der Touchscreenbedienung auf Tablets oder Smartphones unterscheidet. Als Stichworte seien hier nur “Mousover” oder “Pinch to Zoom” genannt.
Immer wieder unterschätzt werden auch die vollkommen unterschiedlichen Nutzungsanforderungen zwischen konzentrierter Bedienung, wenn man längere Zeit ruhig vor einem Gerät sitzt, im Gegensatz zu einer lauten, ablenkenden Umgebung, wenn man ‘mal kurz zwischendurch’ sein Smartphone hervorholt.
Ein Layout per Gerätegattung
Beim aktuellen Stand der Gerätenutzung sollte man drei unterschiedliche Nutzeroberflächen auf seinem Onlineshop haben:
Eine “Full Feature” Oberfläche für herkömmliche Computer. Ausgelegt auf die Bedienung per Maus und Tastatur und Bildschirmauflösungen zwischen 1024 (Netbook) und 1920 Pixel bei 26″ Monitoren. Die Nutzungsmotivation der potentiellen Kunden ist sowohl gezieltes Suchen, als auch gemütliches Herumstöbern.
Für Tablets sollte die Oberfläche aufgrund der kleinen Displaygrössen zwischen 7″ und 10″ wesentlich, strenger und reduzierter sein; die Bedienelemente wegen der Gestenbedinung mit Fingern gleichzeitig erheblich grösser. Die Nutzungsmotivation gleicht derjenigen, der ersten Variante.
Für Smartphones ergeben sich aufgrund der nochmals kleineren Displaygrösse zwischen 3,5″ und 4,7″ erheblich eingeschränkte Darstellungsmöglichkeiten. Gleichzeitig unterscheidet sich hier die Nutzungsmotivation des Kunden. Wer unterwegs “schnell mal eben” einen Onlineshop aufruft tut das meist, weil er Preise vergleichen will oder nach einen bestimmten Artikel sucht, den er im Laden gerade nicht finden kann. Hieraus sollte die Nutzeroberfläche optimiert sein.
Ein recht gelungenes Beispiel für diese Strategie bietet die Otto-Tochter Bonprix.
Umsetzungsmöglichkeiten am Beispiel Oxid 5.0
Wer die drei Gerätegattungen Computer, Tablet und Smartphone jeweils optimal unterstützen will, muss seinen Onlineshop also mit drei eigenständigen Templates ausstatten, sowie eine Geräteweiche bauen.
Das ging bisher elegant auf dem Server.
In den letzten acht Jahren habe ich diese Anforderungen bei verschiedenen Onlinediensten so gelöst, dass beim ersten Aufruf einer Seite auf dem Server die jeweilige Gerätegattung erkannt wird und das dazugehörige Templateset in der Session gespeichert wird. Dazu gab es jeweils einen Link, mit dem der Nutzer zu einer anderen Oberfläche wechseln konnte. Der Vorteil der Lösung ist, dass Deeplinks für alle Geräte gleich sind.
Jetzt bitte schneller und anders…
In den letzten beiden Jahren hat ein Wettrüsten stattgefunden, um Publikationen und Onlineshops schneller zu machen. Die nun erwartete Ladezeit von ein- bis zwei Zehntel Sekunden für die HTML-Seite lässt sich nur noch durch den Einsatz eines Full Page Cache erreichen.
So bringt zum Beispiel auch die vor kurzem erschienene Shopsoftware Oxid 5.0 einen Varnish Full Page Cache mit. Damit ist das o.g. Verfahren nicht mehr möglich, weil fertig gerenderte Seiten ausgeliefert werden, ohne dass eine Geräteerkennung auf dem Server angesprochen werden würde.
Die Auswahl des Templatesets kann nun nicht mehr dynamisch in der Session geschehen, sondern wird über unterschiedliche Subdomains gehandelt. Bei der Eingabe von http://www.meinshop.de oder http://meinshop.de wird die normale Website aufgerufen, bei http://t.meinshop.de die Tabletversion und bei http://m.meinshop.de die Seite für Smartphones. Dieses Verhalten kann man in der Datei cust_config.inc.php durch den folgenden Code herbeiführen.
Die Geräteerkennung wandert dafür vom Server in den Client. Hierzu dient ein kleines Javascript, dass den Useragent prüft, das Ergebnis in einem Cookie speichert. Entspricht der ermittelte Gerätetyp nicht der aufgerufenen Subdomain, so wird der Nutzer per Popup gefragt, ob er lieber auf die optimierte Seite umgeleitet werden möchte.
Vorteil dieser Lösung ist die sehr einfache Umsetzbarkeit und die hohe Performance.
Nachteil ist, dass die Deeplinks nicht mehr geräteunabhängig sind. Zum Ausgleich empfiehlt es sich, Landingpages für Kampagnen als nicht-cachebare Verteilerseiten anzulegen. Aber das ist ein anderer Blogartikel…
Ich wollte nichts drüber schreiben. Was soll man auch schon sagen angesichts des Horrors.
Es ist ja leider nicht so, dass derartiges nicht auch in Europa passieren würde (Oslo, Winnenden, Erfurt,..). Aber ich habe den Eindruck, dass es in den USA mindestens einmal pro Jahr einen Amoklauf geben würde. Und ziemlich sicher wird die NRA auch diesmal zu verhindern wissen, das irgendwie das Waffenproblem entschärft wird.
Was aber wirklich auffällig ist – egal ob in USA oder Europa – ist das vollkommen homogene Täterprofil:
männlich, jung
weiss, Mittelschicht, gebildet
stilles zurückgezogenes Wesen
Kaum soziale Kontakte
Vielleicht sollte man hier mal ansetzen.
Und natürlich endlich diese ganzen scheiss Waffen unschädlich machen.
Extrem reduziert Grafik, aber tolles Gameplay. Wie fühlt es sich an? Wie eine Mischung aus Pac-Man, einem Shooter in 2D und Adventure. Ach, probiert es doch einfach aus…
Habe gerade den Artikel “Kleine Anmerkung zum Weihnachtsmann” im Blog Herzdamengeschichten gelesen. Eine wunderschöne Parabel. Vordergründig geht es um Kinder und den Weihnachtsmann – tatsächlich ist der Text ziemlich politisch. Toll. Der Kernsatz für mich ist dieser:
“… die Kinder sind kleine Denker, sie denken wie wir, mit den gleichen Mechanismen, ganz ähnlichen Schlussfolgerungen und verdammt ähnlichen Trugschlüssen. Sie sind keinesfalls dümmer als wir. Sie denken nur auf einer viel kleineren Informationsmenge herum.”
Bin gerade über zwei lustige Dinge aus der Rubrik “Das passiert, wenn Leute zuviel Zeit haben” gestolpert. Oder auch: “Wenn die Spielidee klasse ist, ist es egal, wie die Grafik ausieht”.
Portal auf TI Taschenrechner
Erinnert sich noch jemand an Taschenrechner? War mal ein heisses Ding in den 70ern und 80ern. Ich habe hier auch noch so ein Gerät rumliegen: Einen Texas Instruments TI-84, programmierbar und mit Klötzchengrafik. Irgendjemand hat sich nun den Spass gemacht, das Spiel Portal auf dem Gerät umzetzen. Sieht gut aus. Seht selbst:
Rollenspiel mit Textgrafik – im Browser!
Und wenn wir schon mal in den 70er/80er Jahren sind: Star Wars und Rogue. Ersteres kennt jeder, das zweite vielleicht nicht. Roguelikes sind Rollenspiele in denen man durch Dungeon rennt, Monster besiegt und Schätze einsammelt. Der Witz ist, dass das alles ohne Grafik, nur mit Text symbolisiert wird. Ondřej Žára hat nun ein solches Spiel programmiert – mit Star Wars Thema und im Broser lauffähig. Genial!
Dirk Ollmetzer | Saturday, 24 November 2012 | Uncategorized
In meinem letzten Artikel hatte ich ja bereits mit einigen extrem simplen Computerchen geliebäugelt. Da ich momentan endlich mal ein wenig Zeit für mich selbst habe, habe ich spontan zugeschlagen und mir den vermutlich billigsten, zur Zeit erhältlichen Computer bestellt: Den auf Geoff Grahams Maximite basierenden Duinomite, der von Olimex hergestellt wird. In der einfachsten Version ist er für knapp über €20,- erhältlich. Ich habe mit die grössere und etwas teurere “Mega”-Version bestellt, die einige zusätzliche Schnittstellen hat – der kleine hätte es allerdings eigentlich auch getan.
Frisch ausgepackt: Duinomite
Nach zwei Tagen hielt ich dann die kleine Platine in den Händen. Der eigentliche Computer ist der winzige Chip (1cm x 1cm) in der Mitte; Ein PIC32 Microcontroller auf dem neben dem eigentlichen Prozessorkern auch gleich noch der Arbeitsspeicher, der Basicinterpreter und die Grafikerzeugung untergebracht sind. Den meisten Platz nehmen die verschiedenen Anschlüsse ein. Aber genug der Vorrede und frisch ans Werk.
Ausser dem Rechner wird benötigt:
Die Stromzufuhr: ein normales Steckernetzteil mit 9V Ausgang und einem 2,1mm Stecker, bei dem der Pluspol in der Mitte liegt.
Eine Tastatur: Eine normale PC Tastatur mit PS2 Anschluss – vorzugsweise mit englischer Beschriftung, weil man sonst laufend auf der Suche nach den verschiedenen Sonderzeichen ist und z und y vertauscht.
Ein Bildschirm: Standard ist der Anschluss an einen irgendeinen normalen VGA Monitor.
Wer mag, kann auch noch Lautsprecher per 3,5mm Klinkenstecker anschliessen.
Daten werden übrigens auf micro-SD-Cards gespeichert.
Alles ist Ratz-Fatz verkabelt und sieht dann so aus:
Duinomite Setup
Nach dem Einschalten sieht man einen schwarzen Bildschirm auf dem in den oberen zwei Zeilen Angaben zum eingebauten Basic Interpreter stehen:
DMBasic Build Date: Jul 23 2012 Time:13:59:28
www.olimex.com, Based On MMBasic By Geoff Graham
Darunter blinkt ein Cursor und wartet auf Eingaben. Genau wie in den alten Zeiten gibt es kein eigentliches Betriebssystem, sondern man kann (muss) quasi sofort mit Basic anfangen. Ich hatte mir im Vorfeld bereits zwei kleine Spiele von Github heruntergeladen und auf die microSD Karte gespeichert. Der Befehl FILES listet den Inhalt der Speicherkarte auf, mittels CHDIR “maxman” kommt man in das Unterverzeichnis mit dem Spiel und startes es mit RUN “maxman.bas”. Daraufhin erstmal eine kleine Runde gezockt…
MaxMan auf Duinomite
Hatte ich eigentlich schon erwähnt, dass der Rechner nur Schwarzweisss Darstellung beherrscht? Dem Full-HD Monitor kommt die Auflösung von 480 x 432 Pixel auch ein wenig seltsam vor und er versucht mich davon zu überzeugen, den “PC” auf eine normale Auflösung einzustellen… ;-)
Heute habe ich mich dann selber daran probiert, das Computerchen zu programmieren und ein mini-Spielchen geschrieben. Der Basic Interpreter ist sehr stark an das alte Microsoft Basic angelehnt – also alles supereinfach. Man kommt in Nullkommanix rein.
Allerdings ist man heutzutage durch Integrierte Entwicklungsumgebungen, objektorientierte Programmierung und riesige Bildschirmauflösungen natürlich ganz schön verwöhnt. Da sind ein einfacher Zeileneditor, nummerierte Programmzeilen ohne Einrückungen u.ä. natürlich am Anfang etwas herb.
Macht trotzdem Spass. Der Duinomite ist eigentlich kein Computer, sondern eine Zeitmaschine, die mich mal eben in meine Jugend zurückkatapultiert hat. ;-)
Aber im Ernst: Man könnte ihn tatsächlich auch für nützliche Basteleien einsetzen. Er ist einfach zu programmieren, verhältnismässig flink und hat einige interessante Schnittstellen, wie RS232C, UEXT, CAN an Bord und Steckerleiten, die Arduino-kompatibel sind.
Dirk Ollmetzer | Monday, 19 November 2012 | Gizmos
Ich gebe zu: Ich vermisse die Zeiten der alten Homecomputer. Irgendwie wünsche ich mir so etwas zurück. Klar – ich bin mittlerweile ein alter Sack, der sich an seine Jugend erinnert und sentimental wird.
Sentimental – ist das alles?
Es gibt aber auch einige sachliche Gründe. Damals musste man sich einfach keinen Kopf um Totalüberwachung, Trojaner, laufende Sicherheitsupdates, Urheberrechtsterror und den ganzen Scheiss machen. Weil man damals ein Spielzeug hatte, dass kein normaler Mensch verstanden hat – sein eigenes Reich. Weil man die recht simple Technik damals noch selber im Griff haben konnte.
Was der Rechner, vor dem ich momentan gerade sitze wirklich alles tut – keine Ahnung. Hoffentlich nur das, was ich will; Vielleicht läuft aber auch still und leise jede Menge Mistsoftware im Hintergrund, die mich ausspioniert.
Werbeindustrie, Softwarehersteller, Medienunternehmen, Sicherheitsbehörden, Kriminelle – irgendwer wird mir (und jedem anderen) irgendwann irgendwas aus irgendwelchen Gründen unerkannt unterschieben. Und es ist dabei gleichgültig, ob man Windows, Mac, Linux nutzt, oder per iPad oder Android ins Netz geht.
Mal ehrlich – wer von Euch, hatte noch keinen Virus auf dem Rechner?
Dabei kam ein Tastaturcomputer heraus, der nur Anschlüsse für Monitor/Fernseher, Audio in/out und zwei bis vier USB-Schnittstellen hat. Technische Basis wäre irgendein billiges SoC (System-on-a-Chip). Das Betriebssystem ist auf einer tauschbaren, aber nicht beschreibbare Speicherkarte abgelegt.
Skizze Homecomputer 2.0
Dann habe ich Stift und Block aus der Hand gelegt, geseufzt und mir gesagt, dass so etwas ausser mir ja wohl niemanden interessieren würde.
Do-It-Yourself-Computer Revival?
Und dann kam der Raspberry Pi. Ein Minicomputer für weniger als €35,-. Eine einfache Platine im Scheckkarteformat. Kein Designergehäuse. Man muss sich selbst kümmern, die Platine selber irgendwo einbauen, selber das Linux-basierte Betriebssystem auf eine SD-Karte kopieren und einsetzen. Und genau das war beabsichtigt um Kindern Computer näherzubringen. Nicht einfach bedienen, sondern verstehen. Sich selber Wissen aneignen. Das ganze ist ein Non-Profit Projekt und man hatte Sorge, ob man überhaupt die 10.000 Rechner würde verkaufen können, die man mindestens herstellen musste um auf den angezielten Preis zu kommen.
Die Idee schlug ein, wie eine Bombe. Mittlerweile sind deutlich über 100.000 Stück verkauft. Die Projekte, was man mit dem Mini-Rechner so alles machen kann, werden immer mehr.
How low can you go?
So seltsam der Raspberry Pi dem normalen Betrachter auch anmuten mag – es ist immer noch ein vergleichsweise konventioneller Rechner auf Unix-Basis. Doch es geht noch seltsamer und reduzierter.
Geoff Graham hatte offensichtlich ähnliche Gedanken wie ich – und das nötige Fachwissen, so einen Computer selber zu entwickeln. Was er dann auch tat.
Herausgekommen ist der Maximite – ein in Basic programmierbarer Minicomputer mit PIC 32 Bit Prozessor, 128KB Ram dessen Teile zusammen weniger als $20,- kosten.
Der Maximite (Quelle: http://geoffg.net, Lizenz: CC BY-NC-SA 3.0) )
Faszinierend! Leider bin ich nicht gerade ein Meister des Lötkolbens. Aber dann habe ich entdeckt, dass es diverse (legale) Nachbauten gibt, wie zum Beispiel den Duinomite von Olimex. Sieht spannend aus und brennt finanziell nicht gerade ein Loch in die Tasche. Hmm…