Neue Server in Paris, Straßburg, Sydney und Singapur

Die Cortex Media GmbH hat mehrere Server, welche bereits zweieinhalb Monate im Testbetrieb liefen, vergangene Woche „produktiv geschaltet“. Das Monitoring der Infrastrukturen in Nürnberg und Ulm wird ab sofort nicht mehr nur aus Frankfurt und den genannten Standorten betrieben, sondern zusätzlich aus Paris und Straßburg. Dadurch werden sowohl Beeinträchtigungen und Ausfälle über unterschiedliche Transportstrecken noch schneller und zielsicherer erkannt, sowie die gehosteten Applikationen auf Geschwindigkeit und Performance kontinuierlich dezentral überwacht und analysiert. Alle sensiblen Geschäftsdaten unserer Kunden bleiben selbstverständlich weiterhin ausschließlich auf unseren Servern in Deutschland.

Außerdem ging zur Erweiterung unseres CDNs (Content Delivery Networks) unser erster Server in Sydney und Singapur ans Netz. Unsere Kunden mit weltweiten Vertriebs- und Marketingaktivitäten profitieren von schnellen Zugriffszeiten auf deren Portalen selbst aus entfernten Ländern wie Australien oder China, indem wir Inhalte „vor Ort“ vorhalten. Ein umfangreicher Webseitenaufruf z.B. aus Brisbane, der bislang aufgrund der enormen Distanz ca. 14 Sekunden gedauert hat, benötigt jetzt nur noch ca. 1 Sekunde mit allen Inhalten.

Zu guter Letzt freuen wir uns, dass wir für das Ulmer Theater einen Uplink mit garantierten 1.000 MBits/s zur Verfügung stellen. Wir reagieren damit auf steigende Besucherzahlen und dem damit verbundenen steigenden Bandbreitenbedarf für das Livestreaming aus dem Ulmer Theater.

In Unsere Projekte veröffentlicht

Bundestagsabgeordnete Hilde Mattheis besucht Cortex Media

„Sie sind ja eine richtige Erfolgsgeschichte“, so die Bundestagsabgeordnete Hilde Mattheis beim Besuch der Ulmer Cortex Media zu Geschäftsführer Andreas Buchenscheit. Dieser hat mit Anfang 30 bereits sein drittes IT-Unternehmen gegründet und sich mit seinem Engagement für Datensicherheit weltweit einen Namen gemacht.

„Trotz der Skandale der letzten Zeit ist die Bevölkerung nicht sensibilisiert für das Thema Datensicherheit“, findet Buchenscheit und verweist auf Sicherheitslücken bei WhatsApp oder beim Onlinebanking. Deshalb lege Cortex Media Wert darauf, seinen Kunden aus dem Mittelstand durch eigene Server mit stark beschränktem Zugriff und komplexen Verschlüsselungen einen hohen Sicherheitsstandard zu bieten. „Darauf werden wir auch beim Thema EHealth achten müssen“, griff die Gesundheitspolitikerin Mattheis diesen Ansatz auf. Sie setze sich für eine elektronische Patientenakte für z.B. Teamdiagnosen ein, allerdings habe die Datensicherheit bei den sensiblen Patienteninformationen höchste Priorität.

Wirtschaft 4.0 – unter diesem Stichwort laufen die Veränderungen durch die zunehmende Digitalisierung. Eine konkrete Auswirkungen schilderte Buchenscheit: Zwei Millisekunden statt zwei Wochen dauert es nun, bis ein Kunde aus einer Checkliste bei der Gebäudeübergabe aus den Untersuchungen der Trinkwasserqualität einen Bericht erstellt habe. Mit einem Smartphone könnten die QR-Codes der Wasserproben beim Gebäuderundgang eingescannt und die Laborergebnisse zugeordnet werden. Wichtig sei die Rückkoppelung mit der Wissenschaft, betonte Buchenscheit. Er habe einerseits einen Lehrauftrag an der Hochschule Ulm, andererseits untersuchten Werkstudenten in seiner Firma die Wirksamkeit seiner Entwicklungen.

In Unsere Projekte veröffentlicht

Eine neue App für das Ulmer Museum

Wir haben im Auftrag des Ulmer Museums eine innovative App entwickelt, die dem Besucher eine neuartige und interaktive Form der Führung durch das Museum ermöglicht. Die App ist ab Januar 2015 für Besucher verfügbar. Sie bietet eine informative Tour durch die verschiedenen Ausstellungsräume: Zu 16 Werken aus Archäologie, Mittelalter und Moderne wird der Besucher geleitet. Ausgangspunkt ist ein Gemälde des Ulmer Münsters von 1845; insgesamt reicht die Palette vom Löwenmenschen bis hin zu einem Flugobjekt des belgischen Künstlers Panamarenko.

Inhaltlich und didaktisch stellt diese App einen enormen Mehrwert dar:  Durch die intelligente Navigation, die in Hinblick auf die historischen Räumlichkeiten besonders berücksichtigt werden musste, wird der Besucher vom Eingang bis zum Schluss der Führung an die Hand genommen. Die gesprochenen Texte können auf dem Gerät mitgelesen werden. Bilder und Videos ergänzen multimedial und ansprechend die textuellen Inhalte.

„Mit einer solch interaktiven Lösung machen wir einen riesen Schritt in Richtung Modernisierung“, freut sich Dr. Gabriele Holthuis, Direktorin des Ulmer Museums. „Wir wollten für das Ulmer Museum keine Standardlösung, sondern etwas Innovatives, das auch auf die Bedürfnisse des Hauses und seiner Besucher abgestimmt ist.“

Neben kostenlosen Leihgeräten an der Museumskasse können die Besitzer von iPhones die App auch aus dem AppStore laden:

„Ein positiver Nebeneffekt der Möglichkeit zum Download ist, dass wir das multimediale Erlebnis mit dem eigenen Gerät ermöglichen“, betont Andreas Buchenscheit, Gründer und Geschäftsführer der Cortex Media GmbH.

Die technische Besonderheit und Herausforderung für unser Team war der Einsatz der modernen Beacon-Technologie. Mithilfe dieser kleinen Sender erkennt die App automatisch die Position des Besuchers, um passende Inhalte zur Verfügung zu stellen. Die von uns eingesetzten Beacons sind erst seit Oktober 2014 auf dem Markt erhältlich und bringen das Ulmer Museum somit in eine absolute Vorreiterstellung.

Unser interdisziplinäres Team hat sich den Herausforderungen gestellt und hat die Erwartungen der Sponsoren des Museums sogar übertroffen. „Wir haben erwartet, dass es gut wird, aber mit sowas Tollem haben wir nicht gerechnet“, begeistert sich Volker Jescheck, ehemaliger Präsident des Rotary Clubs Ulm-Donaubrücke, einem der Sponsoren der App .

Weitere Informationen unter mu-app.de

 

Was sagt die Presse?

In Unsere Projekte veröffentlicht

Cortex Media in Melbourne: Auswirkungen des Online-Status bei WhatsApp&Co

In der letzten Woche gingen Meldungen über einen italienischen Studenten durch die Presse, der mit Hilfe von Screenshots aus WhatsApp und OCR Erkennung in der Lage war, automatisiert den Online-Status von einzelnen WhatsApp-Nutzern zu protokollieren. Eine Forschergruppe aus Ulm, welche sich schon seit Herbst 2013 mit diesem Thema beschäftigt, hat nun ein Paper veröffentlicht, welches ein noch viel bedrohlicheres Gefahrenszenario aufzeigt und dessen Inhalt die bisherigen Erkenntnisse deutlich übersteigt:

Andreas Buchenscheit und seine Kollegen haben gezeigt, dass der Online-Status für eine beliebige Rufnummer direkt am WhatsApp Server abgegriffen werden kann. Dieser Zugriff ist selbst dann möglich, wenn das sogenannte „zuletzt online“ Feature durch den Benutzer explizit deaktiviert wurde. Die Gruppe entwickelte ein Tool, mit dem es möglich ist, auf diese Weise eine beliebige Anzahl von Personen ohne deren Wissen oder Zustimmung gleichzeitig zu überwachen und lückenlos zu protokollieren, zu welchen Zeiten und wie lange WhatsApp aktiv genutzt wird. Ziel der Forschungsarbeit war jedoch nicht nur, die generelle Möglichkeit dieses Abhörens zu demonstrieren, sondern auch zu zeigen, was für Auswirkungen dies auf die Privatsphäre eines Nutzers haben kann. Diese Auswirkungen sind deutlich weitreichender als bislang angenommen.

Durch eine Studie, bei der der WhatsApp Online-Status von zwei unabhängigen Gruppen mit jeweils 10 Probanden über einen Zeitraum von vier Wochen aufgezeichnet und analysiert wurde, konnten die Ulmer Forscher zeigen, dass sich anhand des Online-Status komplette Nutzungsprofile erstellen lassen. Es wurden Metriken entwickelt, um aus den Daten weitreichende Informationen über den Tagesablauf und die Gewohnheiten einer Person abzuleiten. Zum Beispiel kann festgestellt werden, wann eine Person morgens aufsteht und abends ins Bett geht. Es kann lückenlos protokolliert werden, ob WhatsApp zu unangebrachten oder sogar verbotenen Zeiten genutzt wird (z.B. während der Arbeits- oder Schulzeit). Arbeitgeber könnten Mitarbeiter überwachen und überprüfen, wie lange ihre Mitarbeiter nachts wach sind und somit ob sie fit genug zur Arbeit kommen oder bis 4:30 Uhr eine Party gefeiert haben. Bei einer Testgruppe konnte sogar die Teilnahme der kompletten Gruppe an einer Studentenparty anhand der aufgezeichneten Daten nachgewiesen werden.

Besonders kritisch ist die im Paper vorgestellte Möglichkeit, aus den generierten Nutzungsprofilen ein Kommunikationsmuster abzuleiten. Den Forschern gelang es, mehrere Konversationen zwischen den Probanden zu identifizieren. Diese Technik lässt sich sowohl im privaten Umfeld („Chattet meine Frau mit Person X?“) oder geschäftlichen Umfeld („Ist Mitarbeiter X mit Person Y in Kontakt“) einsetzen, aber auch von Staaten und Regierungen, welche die Kommunikationsaktivitäten und -partner ihrer Bürger aus politischen Gründen überwachen wollen.

Dies zeigt ein grundsätzliches Problem auf, dass sich keineswegs nur auf WhatsApp beschränkt, sondern im Prinzip alle modernen Messenger und Kommunikationssysteme betrifft. Vermeintlich harmlose Metadaten, die sorglos geteilt oder erfasst werden, verraten oft viel mehr über Nutzer, als diese sich vorstellen können. Darum sollten Mechanismen zum Schutz dieser Daten ein grundlegender Bestandteil jedes Systemdesigns sein.

Das am Dienstag veröffentlichte Paper wird im November auf einer internationalen Konferenz im australischen Melbourne vorgestellt (MUM 2014: The International Conference on Mobile and Ubiquitous Multimedia). Die Forschergruppe, die aus Experten für Internet Security der Firma Cortex Media GmbH aus Ulm, sowie aus Wissenschaftlern der Universität Ulm und der Carnegie Mellon University, Pittsburgh, USA besteht, hofft durch die Veröffentlichung der Ergebnisse auf potentielle Auswirkungen der Nutzung von mobilen Chat-Apps aufmerksam machen zu können.

Das Paper zur Studie ist zu finden unter: www.uulm.de/?WhatsAppPrivacy

 

Was sagt die Presse?

In Unsere Projekte veröffentlicht

jQuery Listener und AJAX

Ein klassisches Problem, wenn man HTML Elemente dynamisch durch die HTML-Response eines AJAX Calls ersetzt, ist, dass danach die auf diesen Elementen gebundenen Listener nicht mehr gebunden sind. Das liegt natürlich in der Natur der Sache und führt sehr häufig zu komplexem und schwer zu wartbaren Code, der die Listener im Success-Callback neu bindet.

Für dieses Problem gibt es eine einfache und elegante Lösung, die aber recht oft übersehen wird. Mit einem dritten Argument in der .on()-Function und dem initialen Selektor auf ‚document‘, wird der Listener auch weiterhin gebunden sein, wenn der entsprechende HTML darunter durch ein .html(‚…‘) ersetzt wird.

$(document).on('click', '.your-css-selector', function(event){
 // ... your code here.
}); 

Sehr einfach und auch sehr praktisch.

In Unsere Projekte veröffentlicht

Ulm in 30 Sekunden

Für besondere Internetseiten und Portallösungen experimentieren wir immer wieder mit den unterschiedlichsten und manchmal aus sehr außergewöhnlichen Dingen. Dieses Mal mit einer vorprogrammierten Drohne, die handgesteuert „Ulm in 30 Sekunden“ zeigen soll. Die Geschwindigkeit des Videos wurde nicht bearbeitet, wir haben lediglich einige Farben angepasst. Als Kamera kam eine GoPro Hero 3 zum Einsatz, welche mit einem elektronischen Bildstabilisator und einer kardanischen Aufhängung direkt an der Drohne befestigt wurde. Das Video hat sich innerhalb kurzester Zeit über die Solzialen Netzwerke verbreitet und nach 2 Tagen bereits über 10.000 Views. Aber seht selbst:

In Unsere Projekte veröffentlicht

OKHttp für Android

Ein Klassiker der Android Entwicklung, mit dem man immer wieder konfrontiert wird, sind elegante und gut gemachte HTTP Requests, vor allem seit diese ab Android 4 in der synchronen Variante mit Exceptions um sich werfen.

Lange haben wir intern eine selbst entwickelte, asynchrone HTTP Bibliothek verwaltet, die zuerst auf die Apache HttpGet/Post etc. Methoden gesetzt und später mit HTTPUrlConnection gearbeitet hat. Aber richtig zufrieden waren wir damit nie, vor allem da sich die Anforderungen an diese oft von Projekt zu Projekt geändert haben.

Für die letzten Projekte nutzen wir verstärkt OKHttp, eine HTTP Library von Square, die uns in fast allen Belangen überzeugt hat.

Ein Beispiel für einen asynchronen Requests ist schnell zusammengebaut:

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
    .url("http://api.cortex-media.de/data/foo/1337")
    .build();

client.newCall(request).enqueue(new Callback() {
  @Override
  public void onFailure(Request request, Throwable throwable) {
    throwable.printStackTrace();
  }

  @Override
  public void onResponse(Response response) throws IOException {
    if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);

    String body = response.body().string();
    // do something with the body.
  }
});

Einfach den Client initialisieren, Request bauen und Call via enqueue() asynchron ausführen. Die Antwort wird dann im Callback behandelt, je nachdem ob der Request erfolgreich war (onResponse) oder nicht (onFailure).

Ein synchroner Request ist noch einfacher, man ersetze einfach die newCall()-Zeile durch folgende und verzichte auf den Callback:

Response response = client.newCall(request).execute();

Der Response ist dann direkt im entsprechenden Objekt gespeichert. Aufpassen muss man hier nur, dass man das nicht im UI Thread macht, sonst fängt man sich eine Exception ein.

Authentication

Will oder muss man seine HTTP Requests mit HTTP Authentication versehen, was wir gerne bei HTTPS-basierten APIs der schlichten Einfachheit wegen tun, setzt man einfach die entsprechenden Header mit den Ergebnis der Credentials-Klasse:

String credential = Credentials.basic("matthias", "extremely-secr3t");
Request request = new Request.Builder()
    .url("http://api.cortex-media.de/data/foo/1337")
    .header("Authorization", credential)
    .build();
 ...

Bisher sind wir wirklich sehr gut mit dieser Library gefahren. Solider Code, alle wichtigen Features dabei, SNI kompatibel (was gerade für uns sehr wichtig war) sowie aktive (Weiter-)Entwicklung war genau dass, was wir gesucht haben. Danke, Square!

In Technischer Hintergrund veröffentlicht | Getaggt: ,

Cortex Media Push-Server und die Frag-Mutti Apps

1402518737_bubbles

Für unsere Smartphone-Apps für Android und iOS benötigten wir schon relativ früh einen eigenen Push-Server, um diverse Nachrichten und Statusmessages direkt in die Apps pushen zu können. Die damals vorhandenen kommerziellen und Open-Source Angebote haben uns nicht überzeugt, so dass wir einen eigenen Push-Server entwickelt haben.

Der Push-Server

Wir haben uns für ein Konzept entschieden, das beide für uns wichtigen Push-Dienste vereint: Den Apple Push Notification Service (APNs) sowie sowohl das Google Cloud to Device Messaging Framework (C2DM) und als auch später den Google Cloud Messaging (GCM) Dienst. Der Push-Server empfängt über die entsprechenden APIs unserer Apps die Nachrichten und pusht, je nach Quelle, die Nachrichten weiter an die von Google und Apple angebotenen Schnittstellen. Hierbei kümmert sich der Server um ein logisches Buffering der Push-Messages, um beispielsweise bei einem Newsletter die Schnittstellen übermäßig zu beanspruchen. Um auch später für andere Pushes-Services bereit zu sein (vielleicht doch nochmal Windows Phone?), lässt sich der Server auch um Plugins erweitern, die andere Schnittstellen ansprechen können.

Anbindung der APIs

Für die Kommunikation mit dem Push-Server haben wir uns bewusst für eine direkte Socketverbindung zum Server entschieden. Dadurch erreichen wir vor allem bei sehr hohem Traffic oder der massenhaften Versendung von Pushes (kein Spam, dazu unten mehr) einen höheren Durchsatz als über eine HTTP-API oder ähnliches. Und da unsere APIs in der Regeln direkt mit dem Server sprechen können, und der Server auch nicht von externen Usern oder Diensten angesprochen wird, war dies die beste Alternative.

Der Server selbst verarbeitet die ankommenden Pushes über einen internen Buffer, der diesen nach und nach und je nach Schnittstelle abarbeitet. So kann die Anlieferung der Pushes von den APIs ohne Verzögerung geschehen und der Server kümmert sich asynchron um den Versand. Die Erfahrung zeigt, dass die Pushes oft schneller am Server ankommen wie die Service von Apple und Google diese entgegen nehmen, auch wenn diese Schnittstellen in der Regel sehr schnell reagieren. Falls ein Push nicht zugestellt werden kann, kann dieser auch wieder, je nach Response vom APNs oder GCM, zurück in den Buffer gelegt werden.

Die Frag-Mutti App

Die iOS und Android App für Frag-Mutti, die wir 2012 für Frag-Mutti.de entwickelt haben, nutzt unseren Push-Server zur Versendung diverser Nachrichten direkt an die Apps. Darunter z.B. praktische Tipps zu Pfingsten oder den Tipp der Woche.

Die Apps sind aktuell auf knapp 200.000 Geräten installiert (Stand Mitte 2014) und in etwa die Hälfte aller User haben die Push-Nachrichten aktiviert. Wenn Frag-Mutti Pushes verschickt, geschieht dies in der Regel gesammelt innerhalb eines kurzen Zeitfensters. Genau hier hat der oben beschrieben Buffer seine Stärken. Wenn Frag-Mutti mehrere 10.000 Pushes auf einmal anliefert, legt der Push-Server diese in den internen Buffer und arbeitet einen nach dem anderen ab. So kann der Client seine Daten in kurzer Zeit versenden, ohne weiter auf den Server und die dahinter liegenden Apple- und Google APIs zu achten.

In Technischer Hintergrund, Unsere Projekte veröffentlicht