Archiv:

Latest photoblog

photoblog

Blog » HTML5/CSS3

Linkdump #4

4

18 mistakes that kill startups
http://www.paulgraham.com/startupmistakes.html

7 lovely things about HTML5
http://www.elated.com/articles/7-lovely-things-about-html5-markup/

Lists are cool. So here is another one: 15 HTML5 Canvas Applications Developers Should Know About
http://smashinghub.com/15-html5-canvas-applications-developers-should-know-about.htm

CSS3 @font-face design guide
http://webdesignerwall.com/tutorials/css3-font-face-design-guide

Published more than a year ago but still worth reading: Signs of a poorly written jQuery plugin:
http://remysharp.com/2010/06/03/signs-of-a-poorly-written-jquery-plugin/

Geolocation jQuery-Plugin

I created a small jQuery plugin which acts as a simplification of the Geolocation API.

Instead of using navigator.geolocation.getCurrentPosition you can now just use the jQuery methods $.geolocation.get() or $.geolocation.watch().

Contrary to the standard API the only parameter the functions expect is a JSON object with three properties in no particular order: success, error, options. For success and error you can also use their alias properties „win“ and „fail“:
$.geolocation.get({win: function() {}, fail: function() {}, options);

You can also use $.geolocation.getCurrentPosition(success, error, options) to get native API feeling if this makes you happier. In conjunction with my Geolocation API polyfill script this also works with some non-standard Geolocation APIs like Google Gears or Blackberry Location.

Usage

$.geolocation.clearWatch(watchID)
Stops tracking of the user for the according watchID.
watchID (Integer)
$.geolocation.get(options)
Get the current position of the user
options (Object)

  • error
    Function to call if geolocation request failed
  • fail
    Alias for error
  • options
    Options for the geolocation request

    • enableHighAccuracy
    • maximumAge
    • timeout
  • success
    Function to call if geolocation request was successful
  • win
    Alias for success
$.geolocation.getCurrentPosition(success, error, options)
Get the current position of the user (API standard behavior)
success Function to call if geolocation request was successful
error Function to call if geolocation request failed
options Options for the geolocation request

  • enableHighAccuracy
  • maximumAge
  • timeout
$.geolocation.stop(watchID)
Stops tracking of the user for the according watchID.
watchID (Integer)
$.geolocation.stopAll()
Stops all watchPosition callbacks.
$.geolocation.watch(options)
Track the movement of the user
Returns: watchID (Integer)
options (Object)

  • error
    Function to call if geolocation request failed
  • fail
    Alias for error
  • options
    Options for the geolocation request

    • enableHighAccuracy
    • maximumAge
    • timeout
  • success
    Function to call if geolocation request was successful
  • win
    Alias for success
$.geolocation.watchPosition(success, error, options)
Track the movement of the user (API standard behavior)
Returns: watchID (Integer)
success Function to call if geolocation request was successful
error Function to call if geolocation request failed
options Options for the geolocation request

  • enableHighAccuracy
  • maximumAge
  • timeout

Examples

function alertMyPosition(position) {
	alert("Your position is " + position.coords.latitude + ", " + position.coords.longitude);
}
 
function noLocation(error) {
	alert("No location info available. Error code: " + error.code);
}
 
$('#getPositionButton').bind('click', function() {
	$.geolocation.get({win: alertMyPosition, fail: noLocation});
});
 
$('#watchPositionButton').bind('click', function() {
	// alertMyPosition is called each time the user's position changes
	myPosition = $.geolocation.watch({win: alertMyPosition}); 
});
 
$('#stopButton').bind('click', function() {
	$.geolocation.stop(myPosition);
});

Demo

http://manuel-bieh.de/publikationen/scripts/jquery/geolocation/

Download

https://github.com/manuelbieh/jQuery-Geolocation

Geolocation: und dein Browser weiß, wo du bist

Viele Web-Entwickler haben lange darauf gewartet, mit aktuellen Smartphones und auch neueren Browsern am Desktop ist es nun endlich möglich: die zielgenaue Ortung des Besuchers einer Website. Die W3C Geolocation API hilft dabei.

Damit wird es einem Seitenbetreiber nun ermöglicht – vorheriges Einverständnis des Besuchers vorausgesetzt – dessen aktuelle Position (Längengrad, Breitengrad, Höhenlage), die Reisegeschwindigkeit, sowie die Himmelsrichtung zu ermitteln und daran angelehnt entsprechend geolokalisierte Inhalte auszuliefern. Für einen Tankstellenbetreiber wäre es damit z.B. möglich, einen Tankstellenfinder zu realisieren, der dem Besucher die umliegenden Tankstellen inklusive Entfernung oder sogar eine genaue Wegbeschreibung auf dem Handy präsentiert. Auch eine Tracking-Anwendung, die bspw. die zurückgelegte Wegstrecke beim Joggen für die spätere Analyse am PC aufzeichnet, könnte so – ohne eine App zu installieren – mit dem Browser realisiert werden.

Anders als bei bisherigen Methoden wird dabei nicht ausschließlich auf die IP des anfragenden Clients geachtet, sondern es werden darüber hinaus Parameter wie umliegende öffentliche W-LAN SSIDs (inkl. Stärke des Empfangs) oder ein möglicherweise vorhandenes GPS-Modul abgefragt. Um datenschutzrechtliche Bedenken aus der Welt zu schaffen, wird der Benutzer beim Versuch einer Ortung jedoch vorab um Erlaubnis gefragt. Sollte dieser die Anfrage verneinen, ist der Zugriff auf den Standort über die API nicht möglich.

Wie bei den meisten Technologien, die sich gerade in den Kinderschuhen befinden, gibt es aber auch bei der Implementierung der Geolocation API leider noch einige Tücken. So unterstützen nicht alle Browser mit grundsätzlicher Unterstützung der Geolocation API auch alle Funktionen, die in der Spezifikation vorgesehen sind, und auch die Methoden, mit der die Daten abgefragt werden können, unterscheiden sich teilweise erheblich. Darüber hinaus nagt häufiges Orten bei mobilen Geräten, also Geräten ohne permanenten Strom-Anschluss, stark am jeweiligen Akku. Die Lokalisierung sollte also nicht unnötig oft oder mit einem übertrieben kurzen Intervall durchgeführt werden.

Zumindest um das Problem mit dem nicht einheitlichen Interface zu umgehen, gibt es einige frei nutzbare Open Source JavaScript Libraries, die ein vereinheitlichtes Interface zur Verfügung stellen, wie beispielsweise Geo-location-javascript oder Better Geolocation API.

Eine generelle Unterstützung des Standards, ob vollständig oder nicht, gibt es im Wesentlichen bisher in den folgenden Browsern bzw. Geräten:

  • Android Webkit und Dolphin HD
  • Apple iPhone/iPod Safari iOS 3.0+
  • Blackberry OS 4.1+
  • Firefox 3.5+ (< 3.5 mit installiertem Geode Addon)
  • Google Chrome
  • Opera 10.6+
  • Alle Browser mit installiertem Google Gears

Um eine Ortung in einem Browser durchzuführen, der den Standard korrekt implementiert, kann der folgende exemplarische Code verwendet werden:

var successCallback = function(position) {
    alert('Ihre Position: ' + position.coords.latitude + ', ' + position.coords.longitude);
}
 
var errorCallback = function(error) {
alert('Es konnte keine Ortung durchgeführt werden. Fehlercode: ' + error.code);
}
 
if(typeof (navigator.geolocation) != 'undefined') {
    navigator.geolocation.getCurrentPosition(
        successCallback,
        errorCallback,
        {
            enableHighAccuracy: true,
            maximumAge: 10000
        }
    );
}


Zur Erklärung: Mittels typeof(navigator.geolocation) != 'undefined' wird abgefragt, ob der Browser des Benutzers die Geolokalisierung unterstützt. Daraufhin wird die Methode getCurrentPosition() aufgerufen, welche versucht, die aktuelle Position des Benutzers zu ermitteln. Gelingt dies, wird die als successCallback angegebene Funktion aufgerufen und ein Objekt position übergeben. Dieses erhält dann in position.coords.longitude bspw. den ermittelten Längengrad in Dezimalform (z.B. 7.45333164).

Schlägt eine Ortung hingegen fehl, wird die als errorCallback angegebene Callback-Funktion aufgerufen. Als Übergabe gibt es hier das PositionError-Objekt, das gemäß Spezifikation die Zahlenwerte 0 (Unbekannter Fehler), 1 (Ortung nicht erlaubt), 2 (Position konnte nicht ermittelt werden) oder 3 (Timeout) enthalten kann.

Als dritter, zusätzlicher und zugleich optionaler Parameter kann noch ein Objekt in JSON-Notation angegeben werden, um die Eigenschaften der Abfrage genauer zu spezifizieren. Gültige Eigenschaften des Objekts sind:

  • enableHighAccuracy
  • maximumAge
  • timeout

Die Eigenschaft enableHighAccuracy soll sicherstellen, dass ein besonders genaues Ortungsergebnis erzielt wird. Dies geht allerdings, wie eingangs angesprochen, einerseits auf Kosten des Akkus, andererseits verzögert es die Ortung unter Umständen massiv. Im Gegenzug wird dafür die Fehleranfälligkeit sowie die Möglichkeit der Fehlortun verringert.

Über die Eigenschaft maximumAge kann festgelegt werden, wie alt das Ergebnis der letzten Ortung maximal sein darf (in Millisekunden), bevor eine erneute Ortung durchgeführt wird. Setzt man den Wert sehr hoch, ist das Ergebnis, sollte man sich in der Zeit seit der letzten Ortung bereits weit vom Ursprungsort weg bewegt haben, sehr ungenau. Setzt man es hingegen sehr niedrig an, geht das auch hier zu Lasten des Akkus. Einen empfehlenswerten Erfahrungswert gibt es hier nicht, da kommt es sehr auf den jeweiligen Anwendungsfall und etwas Fingerspitzengefühl an.
Mittels der dritten Eigenschaft, timeout, kann angegeben werden wie lange das Gerät bzw. der Browser probiert, die Position herauszufinden, bevor die errorCallback-Funktion mit dem Vermerk Timeout aufgerufen wird.

Neben der getCurrentPosition()-Methode, gibt es auch noch eine zweite Methode watchPosition(). Mit dieser Methode, die die gleichen Parameter erwartet wie auch getCurrentPosition(), ist es möglich, die Bewegung eines Benutzers zu verfolgen und die als successCallback definierte Funktion bei jeder Positionsänderung erneut aufzurufen. Um dieses Verhalten zu stoppen, muss die dritte und letzte Methode der API, clearWatch(), mit der Rückgabe-ID des watchPosition() Aufrufs aufgerufen werden.

Am konkreten Beispiel:

if(typeof (navigator.geolocation) != 'undefined') {
    var watchExample = navigator.geolocation.watchPosition(
        successCallback,
        errorCallback,
        {
            enableHighAccuracy: true, maximumAge: 10000
        }
    );
 
    // watchPosition wieder anhalten:
    navigator.geolocation.clearWatch(watchExample);
 
}

Die Geolocation API bietet eine sehr interessante Möglichkeit für Seitenbetreiber, die ihre Seite mit standortspezifischen Daten anreichern möchten. Man kann davon ausgehen, dass in Zukunft mehr mobile Geräte und mehr Browser den Standard korrekt unterstützen werden. Wenn die Hürden der Vereinheitlichung des Interfaces erst einmal genommen sind oder man sich mit den genannten Möglichkeiten weiterhilft, entstehen so viele neue Möglichkeiten, um das Web mit sinnvollen zusätzlichen Funktionen anreichern zu können. Der Kreativität des Web-Entwicklers sind dabei (fast) keine Grenzen gesetzt.

Dieser Artikel entstand im Rahmen des Webkrauts Adventskalenders und wurde dort am 3. Dezember 2010 erstveröffentlicht.

Was war, was wird? Prognosen für 2011


Bild: CJLUC

Das Jahr neigt sich dem Ende zu und so liest man, wie jedes Jahr aufs Neue, zahlreiche Expertenmeinungen was 2011 im Web angesagt sein wird. Da ich letztes Jahr eine solche Vorschau für 2010 bereits angefangen, dann aber leider nie fertiggestellt hatte, ich mit meinen Gedanken aber sogar ziemlich richtig lag, wage ich für 2011 einen neuen Versuch.

Was wird uns 2011 nicht bieten?

Eins vorab, da ich da schon 2010 drüber schmunzeln musste: auch 2011 wird nicht das Jahr des Mega-Durchbruchs von Augmented Reality, so cool die Technologie auch letztendlich ist. Noch immer ist die Anwendung Nerds und Early Adopters vorbehalten. Wer glaubt, mit einer Augmented Reality App die breite Masse erreichen und den großen Reibach machen zu können, der muss schon extrem harte Geschütze auffahren und ein Konzept umsetzen, das alles bisher da gewesene in den Schatten stellt. Glaubt ihr dran? Ich nicht.

… und was wird 2011 uns bieten?

HTML5 wird definitiv kommen und wir werden eine ganze Menge Demos erleben was in der neuen Version an Interaktivität alles denkbar und möglich ist, so wie wir es auch schon 2009 und vor allem 2010 erlebt haben. 2011 wird das noch mal etwas weiter treiben und ich bin mir sicher wir sehen auch in diesem Jahr eine ganze Menge coole Showcases die uns die Kinnlade zu Boden fallen lassen. Hinzu kommt, dass die Browser-Unterstützung bei den neuen Technologien immer besser wird, so dass wir auch immer mehr und mehr Praxisbeispiele finden werden. Und wenn ich von HTML5 rede, dann sollte ich im gleichen Atemzug natürlich auch CSS3 nicht vergessen. Mit dem Internet Explorer 9 gibt es nun erstmals einen Browser aus dem Hause Microsoft, der alle CSS3 Selektoren und auch viele coole Eigenschaften unterstützt. Längst nicht alle, so müssen wir auf border-radius im IE auch weiterhin noch warten, eine erhebliche Steigerung zum Betriebsunfall IE8 ist es alle mal.

Die logische Konsequenz aus der Entwicklung im Bereich HTML5/CSS3 sind mobile Anwendungen im Browser. Für gefühlte 90% aller Apps (Spiele mal außen vor) in den Appstores der großen Handset-Hersteller würde dank Webkit-Implementierung in den aktuellen Geräten im Grunde genommen schon heute der Browser reichen. Ich denke, dass viele Unternehmen das erkennen und neue Wege gehen werden. Vielleicht auch noch nicht 2011, dazu ist es einfach zu lukrativ und verlockend den Appstore-Hype noch mitzunehmen, der selbst gute 3 Jahre nach der Veröffentlichung des ersten iPhones noch nicht ganz abgeflacht ist. Um jedoch schon mal ein Beispiel zu nennen wie man es machen kann, „Die Zeit“ erweist ihrem Namen alle Ehre und geht mit selbiger: nach der Umstellung auf HTML5 gibt es nun auch eine iPad-Version die bei gleichem Markup eine massiv verbesserte User-Experience an den Tag legt. Ich denke auch andere werden diesem Beispiel folgen.

Big in 2011

Mobile Marketing und mobile Advertising (und irgendwie auch mobile Commerce). Irgendwelchen Super-Experten zufolge sollen in den kommenden Jahren Milliarden über Milliarden von Euros über das Handy umgesetzt werden. Ich gebe für gewöhnlich nicht allzu viel auf solche Prognosen, unbestritten dürfte aber eins sein: im mobilen Markt ist Geld zu machen und zwar eine ganze Menge. Sei es mit mobiler Bannervermarktung, mobilen Points of Sale oder auf Agenturseite durch mobile Kampagnen oder die Mobilisierung der bisherigen Websites großer bis mittelgroßer Unternehmen. Klar, was gibt es auch großartigeres für ein Unternehmen als ständig für den Kunden erreichbar zu sein. Am simpelsten ist das wohl über eine mobil optimierte Version der eigenen Unternehmenswebsite möglich.

Mobile, mobile, mobile und es nimmt kein Ende: Location Based Services. Bereits seit Jahren wünsche ich mir auch hier im Blog die Möglichkeit auf die Standortdaten eines Benutzers am Mobiltelefon zugreifen zu können. Dank inzwischen weitläufiger Browser-Implementierung der W3C Geolocation API (die übrigens entgegen der weit verbreiteter Meinung NICHT zu HTML5 gehört sondern ein vollständig eigenständiger Standard ist) ist das nun ohne größere Probleme möglich. Checkin-Dienste wie Foursquare, GoWalla, Latitude, Loca.li oder Places sind nur ein ganz kleiner Teil von dem, was möglich ist. In mittelfristiger Zukunft werden Location Based Services das Web maßgeblich beeinflussen. Ob es regionale eBay-Kleinanzeigen sind, Wohnungssuche mit Standortbezug oder Navigations-Szenarien wie Google Maps. „Location is everywhere!“ – und das einzige was noch im Weg steht ist die Akku-Laufzeit. Wenn ich von „Mobile“ rede, zähle ich Tablets übrigens dazu.

Facebook und das Wachstum

Gerade sprach ich kurz Places an: Facebook wird weiter wachsen und weiter wachsen. Mitte des Jahres gab es 500 Mio Nutzer bei der Plattform, die man mittlerweile als größten Google Konkurrenten sehen kann. Ich denke die 600 Mio Marke werden wir 2011 noch locker erleben, doch irgendwann nimmt auch das Wachstum beim populärsten Service ein Ende. Je mehr Nutzer angemeldet sind, desto weniger gibt es schließlich die sich noch anmelden könnten, Wachstum ist endlich, logisch. Vermutlich werden wir trotzdem noch die 650 Mio Marke knacken. Dann ist aber mal langsam irgendwann gut. Geplant hat Facebook den Gerüchten zufolge einen eigenen Zahlungsdienst. Das könnte der Killer werden aber ebenso auch floppen. Wenn man sich anschaut mit welch rasantem Tempo sich die Leute die Like-Buttons auf ihre Website gepackt haben, kann man wohl eher von ersterem ausgehen. Da liegt es ganz einfach an Facebook und der Komplexität der Lösung. Das ganze muss noch einfacher sein als Paypal und sollte auch für Micropayments lukrativ sein. Dann steht dem nächsten großen Coup von Facebook nichts mehr im Wege. Als heimlicher Fan des Dienstes vertraue ich den Jungs einfach mal dass sie wissen was sie da tun.

What about Google?

Um Google erschien es in den letzten Wochen und Monaten, abgesehen von einigen angeblichen Datenschutzskandalen durch Streetview (Hey, meine Hausfassade ist schließlich meine intimer Lebensbereich) im Prinzip ziemlich ruhig. Nun gibt es Streetview schon eine ganze Weile in anderen Ländern und sprengt daher nicht wirklich die Innovationsskala. Das gehypte Google Wave, auf das wir nach den ersten Previews alle gespannt gewartet haben, wurde eingestellt noch bevor es aus der Beta-Phase herauskam. Das Projekt lebt weiter unter dem Dach von Apache, wo es nun als Apache Wave weiterentwickelt wird. Das mobile Betriebssystem Android gewinnt mehr und mehr Marktanteile, der (wirklich coole!) Chrome-Browser gewinnt langsam Marktanteile und 2011 wird das Chrome OS auf den Markt kommen. Der Gedanke eines webbasierten Betriebssystems ist in der Tat cool und in meinen Augen auch zukunftstauglich und auch die ersten Eindrücke sind durchaus positiv, da wir aber immer noch lange nicht über ein voll ausgebautes 4G/LTE-Netz mit erschwinglichen Tarifen verfügen wird auch das in 2011 nicht durchstarten. Bin dennoch gespannt womit Google uns 2011 vom Hocker hauen wird. An der Zeit für einen Hammer wie seinerzeit Maps, Streetview oder Googlemail wäre es nach dem Flop von Wave eigentlich mal wieder.

Die Startup-Szene

Seit Jahren verfolge ich gebannt die Entwicklung in der deutschen Startup-Szene – zwischen 2008 und 2010 versuchte ich mich vergeblich selbst daran ein Imperium im mobilen Internet zu errichten – und ich denke wir konnten auch in 2010 wieder eine ganze Menge interessanter Neugründungen verfolgen. Rein Subjektiv scheint aber sowohl die Menge als auch die Qualität der erfolgversprechenden Startups abgenommen zu haben. So nehme ich es jedenfalls wahr, denn außer dem Groupon Ableger Citydeal, der mittlerweile von seinem großen Bruder Groupon aus den USA übernommen wurde, gab es kaum spektakuläre Gründungen in der deutschen Internet-Szene. Kein zweites Xing, kein zweites Spreadshirt, kein weiterer ernstzunehmender Konkurrent für die VZ-Netzwerke und auch kein großer deutscher Twitter-Klon. Am interessantesten ist es wohl, hier einmal zu beobachten wo sich im neuen Jahr Team Europe, European Founders und vor allem Hackfwd so alles beteiligen werden und auf diese Beteiligungen mal ein Auge zu werfen. Persönlich klingt loved.by so, als könnte das am ehesten überzeugen. Man wird sehen.

2011 – das Jahr der Browsergames?

Schon Ewig gibt es Browsergames, schon ewig ist da auch die ein oder andere echte Perle dabei. Irgendwie habe ich aber das Gefühl dass Browsergames, gerade wenn ich mir Farm-, Frontier- und Cityville, Brainbuddies oder sonst was bei Facebook anschaue in 2011 richtig durchstarten werden. Sehr gespannt bin ich auf Fliplife und auch im Hackfwd-Portfolio sind Browser-Games vertreten. Wenn man sich überlegt, dass auch der Browsergame-Hersteller Zynga nach eigenen Angaben eine halbe Milliarde Dollar Umsatz machen wird ist der Social Gaming-Markt wohl neben dem Mobile-Markt einer der Wachstumsmärkte mit dem meisten Potential.

Fazit

Wir werden in 2011 wieder einige interessante Startups erleben. Ob eins davon vom Kaliber Twitter oder Facebook sein wird würde ich noch bezweifeln. Vielleicht werden wir ja überrascht. Bekannte Stars im Web-Business werden interessante Projekte rausbringen und es wird viel im mobilen Internet passieren, Geräte-Fortschritt sei Dank. Ich wage keine Prognose welches Projekt definitiv rocken wird aber ich rechne Fliplife, loved.by und auch Foursquare, welches nach Deutschland expandieren will gute Chancen ein. Wir werden Technologiesprünge erleben und Showcases die uns begeistern werden. Interessant wird sein, ob und wann Apple ein neues iPhone herausbringt und ob dieses vielleicht sogar einen NFC-Chip integriert hat. In dem Fall könnte die Entwicklung auf dem Gebiet ungewöhnlich schnell voran gehen. Trotzdem sind das alles nur Spekulationen und Mutmaßungen. Man wird sehen was es am Ende wird, dürfen gespannt sein und uns auf interessante Services und Projekte in 2011 freuen – ich tu es auf jeden Fall und freue mich über jede echte Überraschung und Innovation!