(Ab)gebrüht

Offener Brief an Apple

Lieber Apple,

vor gut 3 Jahren bin ich deinem Bann verfallen. Ich kaufte ein 3GS und war begeistert dass vieles, was ich Jahre zuvor in einer Nokia Befragung zum N93 angegeben hatte, in einem so stylischen Produkt wiederfand. Man konnte Apps selbst installieren und die Bedienung war über alle Masse Innovativ für jemanden wie mich, der von Nokia kam.
Du hast das Zeitalter der Smartphones angebrochen.
Ich war so angetan von deiner Innovation, dass ich direkt am Erscheinungstag das iPhone 4 gekauft habe. Ich war jetzt einer deiner Fan Boys.

Ich verkaufte mein 3GS nach nur ein paar Monaten Nutzung ohne Mängel weiter. Ich wollte das iPhone 4 in Weiß, aber das ging zuerst nicht, denn du hattest Probleme mit der Farbe und so schien das Licht hindurch. Du warst nicht zufrieden mit der Qualität und hast das Produkt deswegen erst Monate später auf den Markt gebracht. Es war schmerzlich aber verkraftbar. Schließlich wollte man für sein Geld ein hochwertiges Statusobjekt. So hatte ich also ein Schwarzes iPhone, und „Antenna Gate“. Du erinnerst dich, je nach Handhaltung war der Empfang miserabel bis ganz weg. Nun war das für mich als Deutscher Besitzer weniger Problematisch, da wir hier bessere Netze als in deiner Heimat USA haben. Als dann das weiße iPhone 4 auf den Markt kam habe auch ich wieder am ersten Tag im Store gestanden und voller Stolz eins erworben. Es war perfekt. Man hätte denken können du hast aus deinem Fehler gelernt und „Antenna Gate“ behoben und das Design angepasst. Aber nein, es ist beim fehlerhaften Design geblieben. Jeder halbwegs normaldenkende Mensch fragt sich an dieser Stelle nun nach dem „Warum“, nicht aber ein Apple Fan Boy.

Es dauerte wieder ein paar Monate bis du das iPhone 4s vorgestellt hast. Eine neue Innovation? Einem Apple Fan Boy genügen Worte wie „über 200 Innovative Neuerungen“. Ich kaufte mir also ein iPhone 4s, natürlich am Erscheinungstag. Aber warte mal, warum eigentlich? Es sieht aus wie ein iPhone 4, es fühlt sich so an wie ein iPhone 4. Ach, Antenna Gate ist behoben. Und es hat ein Retina Display. Ok. Kleinigkeiten also. Nun ja, es sind ja bekanntlich die kleinen dinge im Leben, die das Leben Lebenswert machen. Wir sind Fan Boys, also sind wir damit zufrieden.

Doch was passiert nun? Dein Schöpfer der Innovation, dein Gott, mein Gott, unser Gott Steve ist von uns gegangen. Mich erreicht die Nachricht per Push an einem Morgen im Hotel. Mir läuft es Eiskalt den Rücken herunter. Das kann, nein, das darf nicht sein.
Aber es ist passiert. Die Welt ist schockiert, selbst Google trägt für einen Tag Trauer.

Einige Wochen später ist die Trauer vergangen und man kann beruhigt Lesen dass Steve für einige Jahre Innovationen im voraus geliefert hat. Die Fan Boys sind beruhigt.

Mir passieren einige Missgeschicke. Sprich, die kratzfeste! Oberfläche meines iPhone 4s hat Kratzer bekommen. Unter anderem weil mir ein iPad darüber gerutscht ist. Kratzfest bedeutet bei dir wohl nicht: „bei Berührung mit Aluminium kratzfest“. Nun gut, man muss damit Leben und schweigen, das ist man Steve schuldig.

Doch nun ändern sich die Zeiten: auf einmal werden Macbook Pro’s vorgestellt mit HDMI und USB3. Ich kann mir nicht vorstellen das Steve das gewollt hätte, eben sowenig wie er ein 4“ iPhone wollte. Doch Steve ist Tod. Seine Meinung war das Letzte Wort. Jetzt liegt es in der Hand seiner Mitarbeiter. Auf einmal gibt es Wochen vor dem Erscheinen des iPhone 5 Bilder wie es aussehen wird. Unvorstellbar! Viel schlimmer ist, dass es ein 4“ Display haben wird. Steve würde sich im Grabe umdrehen.

Es ist jetzt nicht so, dass ich es nicht gut finden würde, wäre da nicht der äußerst fade Beigeschmack des „Scuff Gate“. Ich habe ein Handy was ab Werk Macken auf der Geräterückseite hat. Ich habe ein Gerät was ich erstmals in einer Socke! umhertrage aus Angst dass selbst eine Schutzhülle die Empfindlich anzusehende Rückseite verkratzen könnte. Ich bin enttäuscht, zu tiefst entsetzt dass ein solches Produkt deine Hallen verlassen hat. Ich erinnere mich an das weiße iPhone 4.

Und dann gehst du auch noch hin und nimmst den Fan Boys das zweitheiligste: Google Maps. Das geht nicht. Abgesehen von der schlechten Qualität deiner Karten haben sich Google Maps in den letzten Jahren als das Maß aller Dinge in den Köpfen der Leute etabliert. Das kann man nicht ersetzen. Schon gar nicht mit so etwas schlampigem! Das ist in etwa so, also würde man von heute auf morgen Google selbst abschalten und den Leuten eine selbstgeschriebene Suchmaschine hinsetzen. Das wäre Krieg! Du hast es als selbst bestimmt uns Google Maps zu geben, aber ich sehe es nun als Selbstbestimmung an, mich mit dem Entfernen nicht zufrieden zu geben

Doch warum überhaupt der Wechsel? Ach ja, du bekriegt dich mit Google wegen Patenten. Dinge die den Fan Boy nicht interessieren. Ich will Innovation und keinen Patentkrieg. Mir ist es egal wem „Slide to Unlock“ gehört. Ich kaufe deine Produkte weil Apple draufsteht und es Innovation bedeutet, nicht weil du gegen Google und Co vorgehst. Aber am Ende des Tages sind wir, deine Fan Boys die Leidtragenden des Patentkrieges. Da gibt es auf einmal kein Push mehr weil du einen dieser Kriege verloren hast. Dann werden die Karten genommen usw. Was kommt als nächstes?

Du kämpfst gegen die, die dich Füttern, Samsung z.B. liefert eine Menge Teile für das iPhone. Das macht man nicht, das ist nicht Ehrenwert.

Du hast dir in letzter Zeit immer mehr Fehler geleistet, mal kleine, mal größere. Jeder Fehler für sich genommen ist kein Weltuntergang, aber in der Summe aller Fehler muss ich dir hier und Heute sagen: das war es für uns. Das iPhone 5 wird mein letztes gewesen sein. Ich muss mich schweren Herzens von dir Trennen. Für immer. Du hast dir meine Gunst verspielt. Es ist zu viel passiert.

Ich weiß, dass deine Hardcore Fan Boys mich hassen werden weil ich die Wahrheit gesagt habe, aber das ist mir egal.
Ich weiß, dass dir das egal ist dass ich weg bin, aber das ist mir auch egal.

Ich werde jetzt nicht losrennen und alle deine Produkte verkaufen, aber ich werde einfach keine neuen mehr kaufen.

Lebe Wohl!

Zu guter Letzt ein kleiner Tipp von mir an dich: Ein Handy ist ein Gebrauchsobjekt, kein “Ding” was man sich nur in eine beleuchtete Glasvitrine stellt. Eine Innovation für die Zukunft wäre vielleicht ein Handy was Kratz und Stoßfest ist und trotzdem stylisch aussieht! Vielleicht auch ein selbstbestimmungs-Recht bei ALLEN Apps.

DAViCal nativ auf einer Synology DiskStation hosten

Vor kurzem stand ich vor dem Problem den durchaus beliebten DAViCal Kalenderserver auf einer Synology DiskStation ans laufen zu kriegen.

Die wenigen existierenden Anleitungen im Internet basieren meist auf der Lösung, Debian im chroot laufen zu lassen, was nicht wirklich eine Lösung ist.

Ich habe daher nach einer relativ “Systemnahen” Lösung gesucht und, wie ich denke, auch gefunden.

Anleitung:

  • In der Sytemsteuerung sofern noch nicht geschehen den SSH Zugang aktivieren.
  • Per SSH auf die DS connecten und folgendes ausführen:

wget http://storage.quadrat4.de/davical.sh
chmod 755 davical.sh
./davical.sh

Getestet ist das ganze mit einer DS412+ auf DSM4.1.
Fragen und Hinweise nehme ich gerne entgegen!

PHP basierte TOR-Netzwerk erkennung

Als Betreiber eines Online Shops oder z.B. eines Reiseportales ergibt sich zwangsläufig immer ein Problem: der vorsätzliche Betrug des Kunden beim Kauf. Man bleibt also also Betreiber auf der Kohle sitzen und hat im schlechtesten Fall nicht einmal eine IP die man zur Strafverfolgung nutzen kann weil der User einen Proxy / VPN oder sonstigen Anonymisierungsdienst genutzt hat.

Einer dieser Anonymisierungsdienste von dem meiner Meinung nach auch die größte Gefahr ausgeht, ist das TOR-Netzwerk.

Wer einem Betrüger aufgesessen ist der dieses Netzwerk nutzt, hat sogut wie keine Aussicht auf Erfolg was die Aufklärung angeht. Als ich mich selbst kurz damit befasst habe, habe ich eine Python Lösung zur Erkennung solcher User auf PHP adaptiert.

Somit ist bei Einsatz der PHP Klasse sichergestellt, dass Kunden zumindest nicht diesen Anonymisierungsdienst benutzen.

Das ganze ist als fertige PHP Klasse auf PHPClasses zu finden.

Über ein Voting würde ich mich freuen:

Facebooks geheuchelter Datenschutz

Als ich mich vor knapp 3,5 Jahren für ein Projekt bei Facebook registriert habe, war es in Deutschland noch derart unbekannt, dass ich sogar mit einer Mail an den Support meinen Nachnamen genehmigen lassen musste!
Als Entwickler musste man noch keine Kreditkartendaten eingeben und FBML wurde gerade erst geboren - mittlerweile ist es schon wieder Tod.

Mittlerweile ist Facebook für viele Deutschen Internetuser der Dreh und Angelpunkt Ihres Lebens geworden. Für so viele User, das den anderen Netzwerke wie MySpace, WKW und den VZ Netzwerken die User reihenweise davonlaufen. Selbst ich überlege mich bei den “anderen” abzumelden weil einfach mittlerweile alle bei Facebook sind (Gruppenzwang :)).

Seit neustem bietet Facebook an, die komplette Seite per HTTPS, also einer sicheren Verbindung, unter dem Vorwand besseren Datenschutzes zu benutzen.
Ich persönlich halte diese Funktion für so überflüssig wie Fußpilz, zumindest bei Facebook, wo Datenschutz maximal bedeutet, dass es mindestens 2 Backups davon gibt.

Warum?

Willkommen in der Welt der APPs. Diese kleinen nutzlosen Spiele, Fragebögen und nicht zu vergessen “Uberprufen Sie Ihre Profilaufrufe” Dinger.
Seit ein paar Tagen befasse ich mich wieder aktiv mit der Facebook APP Entwicklung und den Möglichkeiten die man damit als Entwickler mittlerweile hat.
Jeder von euch kennt diese „Anfrage für Genehmigung“ Dialoge solcher APPs, inklusive der Möglichkeit, sich auf X-beliebigen Webseiten mittels Facebook einzuloggen und Kommentare zu hinterlassen.

Genau hier dreht sich mein Magen um, wenn ich sehe was für Bullshit an Berechtigungen da benötigt wird, um noch mehr Bullshit auf Facebook zu verbreiten.
Jede APP kann verschiedene Stufen der Freigabe erfragen und nutzen, vergleichbar mit einer Wohnungsbesichtigung von Interessierten Nachmietern die evtl. nicht alle Zimmer sehen dürfen bis hin zum Einbrecher der sogar in der Unterwäsche wühlt.

Auch wenn ich jetzt einige Enttäuschte Gesichter erzeuge: Nicht mal mit der Maximalen Freigabestufe kann es ein APP geben die mir anzeigen kann wie viele Profilbesucher ich hatte, denn das ist schlichtweg in Facebook nicht möglich, da KEINE App das eigene Profil derart abändern könnte, dass Besucher getrackt werden können.

Wozu dient das ganze dann?

Gerade heute ging mir eine APP gewaltig auf den Zeiger:

Die APP erwartet als Freigabe unter anderem die Möglichkeit, die eigenen Bilder sehen zu können. Der Entwickler der APP sitzt also wahrscheinlich in diesen Minuten wixxend vor dem Rechner und schaut sich die Freizügigen Fotos einiger Mädels an deren Hirn beim Login in Facebook ausgeloggt wird. Dazu hat er direkt deren Namen sowie die Namen und Profilbilder aller Freunde der Person. Ihr hingegen bekommt irgendwelche Zufallszahlen als angebliche Profilbesucher präsentiert!

Ich persönlich vermute mal, mit dem „Zulassen“ Button verhält es sich genau wie mit der größten Lüge im Internet: „Ich habe die AGBs gelesen“. Niemand liest wirklich was er da „Genehmigt“ und ob das überhaupt Sinn macht (Bei den meisten Apps dürfte die Basisfreigabe mehr als ausreichend sein, denn selbst da kriege ich als Betreiber schon die Freundesliste inkl. Namen und Profilbild mit.)
Datensammler verdienen sich mit solchen Apps und naiven Usern eine goldene Nase.

Wusstet Ihr dass man in Facebook nach E-Mailaddressen suchen kann? Nein? Gebt mal eine euch bekannte E-Mailadresse in der suche ein. Über die Facebook API kann ich somit als Entwickler jede E-Maildatenbank gemütlich gegen Facebook abgleichen, auch wenn der User seine E-Mailadresse nicht freigegeben hat, noch schlimmer, ich muss nicht mal der Freund des Users sein.

Hier also 3 Gutgemeinte Tipps von mir für die Zukunft:

- Für Facebook eine eigene E-Mailadresse benutzen sie sonst niemand kennt.
- Vor dem Genehmigen einer APP Hirn einschalten und überlegen ob die Freigabe Sinn macht und ob die APP ansich überhaupt sinn macht.
- APPS die Zugriff auf die eigenen Bilder wollen sind mit Vorsicht zu genießen wenn Ihr nicht Angst haben wollt, dass eure Bilder irgendwann woanders im Internet auftauchen.

Und jetz alle schön auf „Gefällt mir“ klicken! ☺

Smarty Caching mit Xcache

Wer schon einmal mit der Template Engine “Smarty” gearbeitet hat, wird sich spätestens, wenn es um den Einsatz dieser Lösung in High Traffic Umgebungen geht, darüber ärgern dass Smarty den Cache der Templates auf der Festplatte realisiert. Aus diesem Grunde habe ich bereits vor 2 Jahren eine Lösung entworfen, welche sich nun nach langem “Test” als durchaus brauchbar erwiesen hat und ich sie somit hier mal vorstellen möchte. Grundlage ist die Tatsache, dass sich Smarty recht einfach mittels Plugins erweitern lässt, und sich somit auch ein anderer Cache Handler unterjubeln lässt. Ich benutze bevorzugt für “Single Server Lösungen” Xcache mit lokal aktiviertem variablen Cache
<?php
/**
 * Smarty Xcache Caching Handler
 *
 * @author Alexander Over 
 * @copyright 2008
 */
function xcache_cache_handler($action, &$smarty_obj, &$cache_content, $tpl_file = null, $cache_id = null, $compile_id = null)
{
  if (function_exists('xcache_isset'))
  {
    $cacheid = 'smarty.'.$tpl_file.'@'.$cache_id.'@'.$compile_id;
    switch ($action)
    {
      case 'read':
        if (xcache_isset($cacheid))
        {
          return xcache_get($cacheid);
        }
        else
        {
          return false;
        }
      case 'write':
        return xcache_set($cacheid, $cache_content, $smarty_obj->cache_lifetime);
      case 'clear':
        if (empty($cache_id) and empty($compile_id) and empty($tpl_file))
        {
      	 return xcache_clear_cache(1, 0);
        }
        else
        {
          if (xcache_isset($cacheid))
          {
            return xcache_unset($cacheid);
          }
          else
          {
            return false;
          }
        }
      default:
      	$smarty_obj->trigger_error('cache_handler: unknown action "'.$action.'"' );
        return false;
    }
  }
  else
  {
    $smarty_obj->trigger_error('cache_handler: Xcache not found!');
    return false;
  }
}
geladen wird das ganze am einfachsten folgendermaßen:

<?php
require_once 'Smarty.class.php';
require_once 'xcache_cache_handler.php';

$smarty = new Smarty();
if (function_exists('xcache_isset'))
{
  $smarty->cache_handler_func = 'xcache_cache_handler';
}

Download der Datei: xcache_cache_handler.php

Detect Opcode Cache in PHP

Vor einer Woche etwa habe ich meine erste PHP Klasse auf phpclasses.org veröffentlicht, um mal zu schauen, wie die “Gemeinde” darauf reagiert.
Ich bin überrascht, wie ich es mit dieser “Notable” Class binnen 7 Tagen in Google auf Platz 1 zum Suchbegriff “detect opcode cache” geschafft habe.

Diese Singleton Klasse ermöglicht es z.B. in einem PHP Setup auf einfache Art und Weise herauszufinden, ob auf dem gewählten Server ein Opcode-Cacher läuft oder nicht und ggf. entsprechend zu reagieren.

Wer die Klasse einsetzen möchte findet sie hier: http://www.phpclasses.org/browse/package/5930.html

In einer Woche etwa dürfte die zweite Klasse von mir folgen, welche dann einen sehr gerne gemachten Fehler - insbesondere von PHP-Anfängern gerne gemacht - auf einfache und sichere Weise unterbindet.