<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Manuel Bieh – Web Development &#38; Consulting</title>
	<atom:link href="https://2004.manuel-bieh.de/blog/feed" rel="self" type="application/rss+xml" />
	<link>https://2004.manuel-bieh.de/blog</link>
	<description>Manuel Bieh – Web Development &#38; Consulting</description>
	<lastBuildDate>Mon, 05 Feb 2024 15:37:24 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.39</generator>
	<item>
		<title>Mobile Möglichkeiten</title>
		<link>https://2004.manuel-bieh.de/blog/mobile-moeglichkeiten</link>
		<comments>https://2004.manuel-bieh.de/blog/mobile-moeglichkeiten#comments</comments>
		<pubDate>Wed, 07 Dec 2011 12:40:52 +0000</pubDate>
		<dc:creator><![CDATA[Manuel]]></dc:creator>
				<category><![CDATA[Allerlei]]></category>

		<guid isPermaLink="false">http://www.manuel-bieh.de/blog/?p=838</guid>
		<description><![CDATA[Wer heute eine mobile Webseite erstellen möchte, wird vor eine Vielzahl von Entscheidungen gestellt: Kostenlos oder kostenpflichtig? Entwicklung auf Code-Ebene oder per WYSIWYG? Serverseitige oder clientseitige Lösungen? Mittlerweile gibt es eine Menge unterschiedlicher Lösungsansätze, von denen jeder seine eigenen Vor- und Nachteile mit sich bringt. Die optimale Lösung hängt in der Praxis davon ab, welche [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Wer heute eine mobile Webseite erstellen möchte, wird vor eine Vielzahl von Entscheidungen gestellt: Kostenlos oder kostenpflichtig? Entwicklung auf Code-Ebene oder per WYSIWYG? Serverseitige oder clientseitige Lösungen? Mittlerweile gibt es eine Menge unterschiedlicher Lösungsansätze, von denen jeder seine eigenen Vor- und Nachteile mit sich bringt.</p>
<p>Die optimale Lösung hängt in der Praxis davon ab, welche Anforderungen Sie an Ihre mobile Webseite stellen &#8211; und wie viel Zeit und Budget für das Projekt zur Verfügung stehen. Wie so oft gilt auch hier: je mehr Aufwand, desto größer (in der Regel) der Nutzen. So existieren Lösungen, um ohne große Vorkenntnisse und teilweise sogar kostenlos innerhalb von fünf Minuten mit einer simplen mobilen Website online gehen zu können. Andere Lösungen erfordern grundlegende Erfahrungen im Bereich der Web-Programmierung und können Wochen oder sogar Monate an Entwicklungszeit dauern, um sich angemessen zu präsentieren.</p>
<p>Vier grundsätzliche Möglichkeiten stellt Ihnen dieser Artikels vor: die Nutzung von WYSIWYG-ähnlichen Editoren; clientseitige Lösungen, die auf JavaScript basieren; serverseitige Lösungen, die eine Gerätedatenbank als Basis nutzen; sowie der Mix aus den beiden letztgenannten. Teilweise können Sie dabei Inhalte aus bereits bestehenden Seiten übernehmen, in einigen Fällen müssen Sie die mobile Webseite von Grund auf neu aufbauen.</p>
<h2>Wie von Zauberhand</h2>
<p>Wenn Sie weder viel Zeit noch Geld in eine mobile Seite investieren möchten, eignen sich die zahlreichen „Wizard“-Anbieter, mit deren Service Sie ganz im Stile von WYSIWYG eine simple mobile Webseite „zusammenklicken“ können. In der Regel läuft es dabei so, dass Sie einen Link zu einem RSS-Feed, einer Facebook-Fanpage, einem Twitter-Profil oder ähnliche Dienste in einer Eingabemaske eintragen. Der Wizard holt sich die entsprechenden Informationen von der angegebenen Datenquelle, bietet anschließend die Möglichkeit, z.B. den Seitentitel, Beschriftung von Menüpunkten oder die Farben zu ändern, und speichert anschließend die gewählten Einstellungen in der Datenbank des Anbieters. Einige Wizards erlauben Ihnen auch, eigene Seiten und Inhalte anzulegen, meist ist diese Möglichkeit allerdings auf wenige Seiten und Inhalte beschränkt. Wer eine komplexe Lösung erstellen möchte, sucht hier also vergeblich.</p>
<h3>Geringer Aufwand, geringer Nutzen</h3>
<p>Die Einfachheit solcher Dienste ist auch gleichzeitig ihre Schwäche: sollen erweiterte Funktionen wie ein Kontaktformular eingebunden werden, stoßen viele dieser Dienste bereits an ihre Grenzen. Auch was die Kompatibilität mit verschiedenen Endgeräten angeht, sind die Möglichkeiten eher beschränkt. Oft wird nur eine iPhone- oder eine Webkit-Version aus den Daten erzeugt. Einfachere Geräte, die etwa keine Unterstützung für JavaScript bieten, bleiben dabei schnell außen vor. Auf der Kostenseite bieten alle Anbieter eine kostenlose Basisversion ihres Dienstes an. Wenn Sie etwa die Zahl der Unterseiten erweitern oder die möglichen Zugriffe pro Monat steigern möchten, sind Sie mit einer günstigen Monatspauschale ab ca. 5 Euro dabei.</p>
<h3>Wirenode</h3>
<p>	<a href="http://www.wirenode.com/">http://www.wirenode.com/</a></p>
<p><img src="/blog/wp-content/uploads/2011/12/wirenode-300x202.png" alt="" title="wirenode" width="300" height="202" class="alignleft size-medium wp-image-850" />„The mobile website creator“ heißt es, loggt sich ein Benutzer in seinen Wirenode-Account ein. Wirenode bietet ein simples Interface, mit dem Sie sich eine mobile Seite zurechtklicken können. Sie wählen aus verschiedenen Seitentemplates aus und erstellen anschließend über einen Richtext-Editor Seiteninhalte. Auch verschiedene Widgets wie z.B. die Einbindung der eigenen Twitter-Timeline werden angeboten. In der Basisversion ist Wirenode kostenlos und erlaubt es Ihnen, eine Site zu erstellen. Diese ist unter http://benutzername.wirenode.mobi erreichbar. Bei den vier kostenpflichtigen Versionen (zwischen 4,90 Euro und 190 Euro) können Sie mehrere Sites pro Account angelegen und eine eigene Domain verwenden. </p>
<h3>Google Sites</h3>
<p>	<a href="http://www.google.com/sites/help/intl/en/mobile-landing-pages/mlpb.html">http://www.google.com/sites/help/intl/en/mobile-landing-pages/mlpb.html</a></p>
<p><img src="/blog/wp-content/uploads/2011/12/googlesites-300x171.png" alt="" title="googlesites" width="300" height="171" class="alignright size-medium wp-image-846" />Auch Google bietet mit Google Sites seit kurzem die Möglichkeit, mobil optimierte Websites zu erstellen. „Mobilize your business“ heißt es auf der entsprechenden Produktseite. Entwickler können dabei aus einer Reihe von mobilen Templates für verschiedene Anlässe wählen (etwa „Restaurant“ oder „Local Businesses“) und über ein intuitives WYSIWYG-Interface Seiten erstellen, Inhalte anlegen und über einen Richtext-Editor formatieren. Über sogenannte „Gadgets“ bietet auch Google Sites die Möglichkeit, einen Twitter-Stream, das aktuelle Wetter oder eine Google Map in die Seite zu integrieren. Dabei ist jedoch Vorsicht geboten, denn auf Grund fehlender Geräteadaption bekommen auch alte Geräte ohne JavaScript-Unterstützung die Gadgets ausgeliefert, wodurch es zu Fehlern in der Darstellung kommen kann.</p>
<h3>Onbile</h3>
<p>	<a href="http://www.onbile.com/">http://www.onbile.com/</a></p>
<p><img src="/blog/wp-content/uploads/2011/12/onbile2-300x233.png" alt="" title="onbile2" width="300" height="233" class="alignleft size-medium wp-image-848" />Ein sehr aufgeräumtes Interface, im positiven wie im negativen Sinne, bietet onbile seinen Nutzern. Positiv, da wirklich jeder, der einen Browser bedienen kann, ohne Probleme innerhalb von nur fünf Minuten mit einer mobilen Website an den Start gehen kann. Negativ, da die Möglichkeiten für Benutzer hier am restriktivsten sind. Die Anzahl der Unterseiten (vier inkl. Startseite) ist vorgegeben und kann derzeit weder erweitert werden, noch können Seiten entfernt werden. Als Benutzer dürfen Sie eines der rund 15 vorgegebenen Templates wählen, anschließend noch farbliche Anpassungen vornehmen und ein Logo hochladen. Alles in allem eine nette Spielerei, aber selbst für sehr kleine Unternehmen kaum eine ernsthafte Alternative, auch wenn die optische Gestaltung der Bedienoberfläche bei Onbile wohl für den Testsieg reichen würde. Auch die Tatsache, dass der Dienst vollständig kostenlos ist, ändert nichts mehr daran, dass Onbile höchstens dazu dient, um das Auge mit einem hübschen Interface zu erfreuen, als ernsthaft mobile Websites zu erstellen.</p>
<h2>Clientseitige JavaScript Frameworks</h2>
<p>In der Entwickler-Community stoßen sie auf ein großes Interesse und genießen einen hohen Stellenwert: mobile JavaScript Frameworks wie jQuery Mobile, SenchaTouch oder zepto.js. Spätestens seit dem Release des iPhones, das erstmals verdeutlichte, was auf mobilen Geräten im Browser möglich sein kann, gibt es eine ganze Reihe an Entwicklern, die sich auf die neue Touch-Geräte Generation spezialisiert haben und entsprechende Frameworks bereitstellen. Diesen Frameworks kommt zu Gute, dass sie auf HTML5 aufbauen und damit für die Zukunft gerüstet  sind. </p>
<p>Diese Zukunftsfähigkeit hat wiederum zur Folge, dass deren „Vergangenheitstauglichkeit“ leidet, also dass hier Geräte, denen es an Unterstützung der recht neuen Standards mangelt, nicht ausreichend berücksichtigt werden. Vor allem ältere Geräte ohne JavaScript-Unterstützung, die gerade in so wichtigen Entwicklungsländern wie Indien, Brasilien oder der Türkei noch die überwiegende Mehrheit darstellen, können von den JavaScript-lastigen Frameworks nicht hinreichend bedient werden. Zwar ist es mit jQuery Mobile oder zepto.js noch möglich, durch „progressive Enhancement“, intelligentes Markup und klugen Einsatz von Stylesheets (bspw. durch Media Queries) zumindest eine mobile Seite mit Grundfunktionalitäten abzubilden, das ansonsten sehr ausgereifte SenchaTouch versagt hier jedoch auf ganzer Linie.</p>
<h3>Gut, für gewisse Zielgruppen</h3>
<p>So schön, einfach und crossbrowser-kompatibel derartige Frameworks auch angepriesen werden, so sind sie im Hinblick auf mögliche Zielgruppen durchaus kritisch zu betrachten und sollten nicht zu vorschnell eingesetzt werden. In Indien beträgt der Marktanteil des iPhones bspw. gerade einmal ca. 5% und auch Android-Geräte sind dort mit einem Marktanteil von unter 15% nicht wirklich breit vertreten. Wer also für einen Kunden aus Indien, dem nahen Osten oder Südamerika arbeitet, der sollte sich gut überlegen, ob er mit SenchaTouch nicht vielleicht an der Zielgruppe des Kunden vorbei entwickelt.</p>
<p>Doch genug zu den Nachteilen, selbstverständlich bieten diese Frameworks Entwicklern von mobilen Websites eine ganze Reihe echter Vorteile, die den Einsatz wirklich reizvoll und lohnenswert machen. Ein eben schon erwähnter Vorteil ist die Zukunftstauglichkeit: HTML5 eignet sich auf Grund seiner Eigenschaften als generische Markup-Sprache hervorragend für die Entwicklung mobiler Websites. Hinzu kommt, dass Entwicklern ein ganzes Arsenal an Tools zur Verfügung steht, die bereits auf den allermeisten Geräten der aktuellen und kommenden Generationen funktionieren. Ob Buttons, die in ihrem Verhalten an die Buttons des Geräte-Betriebssystems angelehnt sind, oder stilvolle Slide-Effekte beim Aufruf einer neuen Unterseite. Um all diese visuellen Schmankerl muss sich der Entwickler keine Gedanken mehr machen. Zusammenfassend kann festgehalten werden, dass JavaScript-Frameworks eine einfache und gute Möglichkeit sind, um schnell Ergebnisse zu erzielen. Ohne auf eine serverseitige Sprache zurückzugreifen, ist es dabei jedoch nicht ohne weiteres möglich, die Inhalte einer bereits bestehenden Seite im Nachhinein zu übernehmen.</p>
<h3>jQuery Mobile</h3>
<p>	<a href="http://www.jquerymobile.com/">http://www.jquerymobile.com/</a></p>
<p><img src="/blog/wp-content/uploads/2011/12/jquerymobile-300x275.png" alt="" title="jquerymobile" width="300" height="275" class="alignright size-medium wp-image-847" />jQuery Mobile basiert vollständig auf dem verbreiteten JavaScript-Framework jQuery, nutzt also dessen bewährten Funktionsumfang und gibt Entwicklern somit ein Tool an die Hand, um innerhalb kurzer Zeit ansehnliche, bedienbare mobile Websites zu erstellen. Ausgangspunkt für jQuery Mobile ist sauberes HTML5 Markup, das über vordefinierte data-role-Attribute semantisch erweitert wird. So können Sie einen Seitenbereich über
<div data-role="header" data-position="fixed"></div>
<p> einfach zu einem feststehenden Seitenheader deklarieren. jQuery Mobile bietet eine Reihe solcher Zusatzfunktionen, die über unaufdringliches JavaScript realisiert werden Wie der große Bruder jQuery steht jQuery Mobile unter GPL 2.0 und MIT zur freien Verfügung.</p>
<h3>Sencha Touch</h3>
<p>	<a href="http://www.sencha.com/ ">http://www.sencha.com/ </a></p>
<p><img src="/blog/wp-content/uploads/2011/12/sencha-300x288.png" alt="" title="sencha" width="300" height="288" class="alignleft size-medium wp-image-849" />Der Name impliziert es bereits: die Ausrichtung von Sencha Touch liegt ganz klar auf Geräten mit Touch-Bedienung. Da dies in der Hauptsache neuere Geräte sind, ist es auch nur wenig verwunderlich, dass das komplette Framework auf JavaScript aufbaut und für die Erstellung einer mobilen Website mit Sencha Touch nicht eine einzige Zeile HTML5-Markup benötigt wird. Obgleich Sencha von sich behauptet, das erste „HTML5 Mobile Web App Framework“ zu sein. Die gesamte Entwicklung einer mobilen Website bzw. Web App basiert auf JavaScript, für die visuelle Gestaltung kommt CSS zum Einsatz. Kompatibel ist Sencha zudem nur mit Webkit-Browsern (Safari, Chrome, …), Firefox und Opera Nutzer bleiben außen vor. Trotz des kommerziellen Backgrounds, Sencha Touch wird von der Sencha Inc. entwickelt, steht die Library aktuell noch unter der GPL 3.0 zur freien Verfügung. Dies gilt sogar für kommerzielle Projekte.</p>
<h3>zepto.js</h3>
<p>	<a href="http://www.zeptojs.com/">http://www.zeptojs.com/</a></p>
<p><img src="/blog/wp-content/uploads/2011/12/zepto-300x269.png" alt="" title="zepto" width="300" height="269" class="alignright size-medium wp-image-851" />„The aerogel-weight mobile javascript framework“. Das ausgesprochene Ziel von zepto.js ist es, eine JavaScript Library anzubieten, die nur 2-5 Kilobyte an Größe mitbringt und dem Entwickler dennoch alle Aufgaben abnimmt, für die sonst mühsame Fleißarbeit fällig würde. Die Syntax von Zepto.js ist stark an jQuery angelehnt. Entwickler, die bereits Erfahrungen mit jQuery oder anderen Frameworks gesammelt haben, werden sich schnell damit zurecht finden. Das Ziel, die Größe von 5 KB nicht zu überschreiten, erreicht zepto.js dadurch, dass mobile Randgruppenbrowser wie der Internet Explorer aber auch Opera Mobile derzeit außen vor gelassen werden. So funktioniert zepto.js, was sich zum aktuellen Zeitpunkt, ähnlich wie auch jQuery Mobile, noch in der Beta befindet, am besten auf Webkit-Browsern (iPhone, iPad, Android, …), aber auch im Firefox Mobile.</p>
<h2>Serverseitige Verarbeitung von Anfragen</h2>
<p>Eine weitere Möglichkeit, um Websites für mobile Geräte zu optimieren, ist die serverseitige Erzeugung von mobil optimierten Seiten. Dies passiert in der Regel durch die Ermittlung des aktuellen Client-Geräts durch den vom Browser gesendeten User Agent Header. Um auf ein Endgerät angemessen reagieren und eine tatsächlich optimierte Seite ausgeben zu können, sind bei dieser Methode Kenntnisse über die verwendete Kombination aus Gerät, Betriebssystem und Browser notwendig. Zu diesem Zweck gibt es Datenbanken mit ausführlichen Informationen über diverse am Markt erhältliche Geräte, die Angaben über die Bildschirmgröße, unterstützte HTML-Formate oder den Gerätetyp (z.B. Desktop, Mobile, Tablet, …) enthalten. </p>
<p>Diese Methode hat jedoch zwei Nachteile: zum einen prüft sie nur auf theoretische, nicht auf tatsächliche Geräte-Features. Sie kann also ermitteln, dass ein Gerät JavaScript-Unterstützung bietet, nicht jedoch, ob der Benutzer JavaScript-Unterstützung vielleicht clientseitig deaktiviert hat. Zum anderen ist das Verfahren insofern unzuverlässig, als dass der User Agent in den Browser-Einstellungen verschleiert oder geändert werden kann. Außerdem kann es zu Problemen kommen, wenn der User Agent noch zu neu ist, um von der Datenbank erkannt zu werden. Zumindest das erste Problem können Sie durch cleveres Markup umgehen, indem Sie z.B. gleichzeitig eine JavaScript- und eine Non-JavaScript-Version der Website ausliefern. Beim zweiten Problem können Sie lediglich auf schnelle Updates der Anbieter der entsprechenden Datenbank hoffen.</p>
<p>Der große Vorteil bei der serverseitigen Erzeugung einer Seite ist, dass Sie ein Dokument schon vor der Auslieferung auf das Endgerät auf die möglicherweise beste Darstellung hin optimieren können. Große JavaScripts, die viel Ladezeit benötigen, müssen so bspw. gar nicht erst an den Browser ausgeliefert werden. Bilder können Sie bereits auf dem Server auf die maximale Höhe und Breite des Displays skalieren. Das spart Akkuleistung, Übertragungskosten und lädt zudem die Seite schneller.</p>
<h3>WURFL</h3>
<p>	<a href="http://wurfl.sf.net/">http://wurfl.sf.net/</a></p>
<p>Pionier auf dem Gebiet der Gerätedatenbanken ist das Wireless Universal Resource File, kurz WURFL. Es enthält viele nützliche Geräteinformationen, die von der Open Source Community bis heute intensiv gepflegt werden. Im Kern besteht WURFL aus einem unheimlich großen XML-File mit Angaben über die Geräte. Mittlerweile gibt es aber Implementierungen in sämtlichen relevanten Sprachen wie PHP, Java, .NET, Python oder Perl. Durch die freiwillige Pflege der Open Source Community ist WURFL nicht immer auf dem neusten Stand und enthält zudem zu einigen Geräten fehlerhafte Angaben, die erst spät behoben werden. Ein kleines Manko, dafür erhalten Sie mit WURFL eine ansonsten solide Datenbasis, die für kommerzielle Projekte einmalig mit 1500 Dollar zu Buche schlägt. </p>
<h3>DeviceAtlas</h3>
<p>	<a href="http://www.deviceatlas.com/">http://www.deviceatlas.com/</a></p>
<p>Genau wie auch WURFL besteht der DeviceAtlas aus einer Datenbank mit unzähligen Informationen über diverse Endgeräte. Anders als WURFL wird der DeviceAtlas jedoch kommerziell vertrieben. Eine Lizenz mit 1 Mio Datenbankabfragen ist für 399 Dollar im Jahr erhältlich. Für diesen stolzen Preis erfährt der DeviceAtlas jedoch Unterstützung von großen Unternehmen aus dem mobilen Geschäft: Nokia, Sony Ericsson oder auch Vodafone werden als Partner aufgeführt. Entwickler, die in ihren Projekten gern kommerzielle Unterstützung erhalten möchten, dürften sich beim DeviceAtlas gut aufgehoben fühlen. </p>
<h2>Das Beste aus beiden Welten</h2>
<p>Für eine gute User Experience im Bereich der mobilen Webseitenerstellung hat sich in vielen Fällen ein Mittelweg aus den beiden letztgenannten Technologien bewährt. Eine serverseitige Erkennung des Zielgeräts und anschließend eine clientseitige progressive Erweiterung der ausgelieferten Seite, je nachdem, welche Features ein Gerät tatsächlich unterstützt. Ältere Geräte erhalten dabei eine uneingeschränkt bedienbare mobile Seite, mit allen Inhalten, serverseitig skalierten Bildern und ohne JavaScript. Neue Geräte mit JavaScript-Unterstützung und hoch aufgelöstem Touch-Display erhalten eine aufgehübschte Nutzerführung mit Bildern in hoher Auflösung, Effekten wie CSS3 Transformationen und jQuery-Mobile-Erweiterungen.</p>
<h3>fitml.com</h3>
<p>	<a href="http://www.fitml.com/">http://www.fitml.com/</a></p>
<p><img src="/blog/wp-content/uploads/2011/12/fitml-300x242.png" alt="" title="fitml" width="300" height="242" class="alignleft size-medium wp-image-845" />Diesen Weg verfolgt Sevenval mit seinem Cloud-Service fitml.com. Mit einer eigenen, FITML genannten Markup-Sprache können Entwickler XML-Dokumente erstellen, die je nach Gerät zum Teil völlig unterschiedlich dargestellt werden. So bekommen technisch ausgereifte Geräte ansprechende und hochwertige HTML5-Seiten ausgeliefert, die mit JavaScript und CSS3 angereichert werden, ohne dabei jedoch alte Geräte ohne HTML5 Support auszuschließen. Der Vorteil dieser Lösung ist die Markup-Abstraktion, so dass Sie nur FITML verwenden müssen, die Cloud-Plattform kümmert sich anschließend um die optimale Ausgabe auf allen Geräten. Dabei werden sowohl serverseitige Parameter als Ausgangsbasis, als auch zusätzliche clientseitige Abfragen zur weiteren Fein-Optimierung verwendet. Kleinere Seiten können dort kostenlos entwickelt werden. Für größere Auftritte bietet die Plattform abhängig von der Anzahl der monatlichen Page Impressions unterschiedliche Preismodelle.</p>
<div class="articleMeta">
<p><img src="/blog/wp-content/uploads/2011/12/wem-titel-1111-small.jpg" alt="" title="wem-titel-1111-small" width="120" height="168" class="alignleft size-full wp-image-857" /><em>Dieser Artikel erschien am 16.09.2011 in Ausgabe 11 des <a href="http://webstandards-magazin.de/">Webstandards Magazins.</a></em></p>
<ul style="list-style: none;">
<li><strong>Auflage:</strong> 10.000 Stück</li>
<li><strong>Erscheinungsweise:</strong> vierteljährlich</li>
<li><strong>Einzel-Verkaufspreis:</strong> 7,80 Euro</li>
</ul>
<p><br style="clear: both; height: 1px;" />
</div>
]]></content:encoded>
			<wfw:commentRss>https://2004.manuel-bieh.de/blog/mobile-moeglichkeiten/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating Mobile Websites</title>
		<link>https://2004.manuel-bieh.de/blog/creating-mobile-websites</link>
		<comments>https://2004.manuel-bieh.de/blog/creating-mobile-websites#comments</comments>
		<pubDate>Wed, 07 Dec 2011 06:40:55 +0000</pubDate>
		<dc:creator><![CDATA[Manuel]]></dc:creator>
				<category><![CDATA[Mobile Web]]></category>
		<category><![CDATA[Webdev]]></category>

		<guid isPermaLink="false">http://www.manuel-bieh.de/blog/?p=819</guid>
		<description><![CDATA[Why create a mobile website instead of an application? Using the web has a number of advantages, websites can be browsed on most devices, the technology is flexible, and it is easy to update sites so all users get the latest version. You only need to modify a single codebase if you want to add [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-826" title="devguide9-header" alt="" src="/blog/wp-content/uploads/2011/12/devguide9-header.jpg" width="680" height="236" /></p>
<p>Why create a mobile website instead of an application? Using the web has a number of advantages, websites can be browsed on most devices, the technology is flexible, and it is easy to update sites so all users get the latest version. You only need to modify a single codebase if you want to add or change content or even features, rather than updating each application.</p>
<h2>Context Is King</h2>
<p>When you create a website for desktop browsers you typically design and develop for a context in which a user has a large display, enough time, power and also a fast persistent internet connection. None of these are guaranteed when using the internet on mobile devices.</p>
<p>Although most new devices have much larger screens than devices a few years before, they are mostly still small compared to desktop devices. Beyond that users often access a mobile website when they are on the go and they may be focusing on other things in addition to the web site they are using because they have to look at the traffic for example.</p>
<p>Other problems to consider are the effects of a weak signal and a slow mobile internet connection. Since the average internet user is impatient, you can easily lose a user who has to wait too long for pages to load – they may obtain the information elsewhere. Therefore you should try to keep content such as external scripts and images as small as practical.</p>
<p>You should consider these factors when you are about to design a website for mobile devices. Focus your mobile web strategy on what content a user is probably looking for when they visit your website. They are unlikely to be interested in your awesome company intro page animation made in Flash. Beyond you should also think about the contexts in which your mobile site will be used before you begin to design a mobile website.</p>
<p>It could be in a train with a weak signal, in a village with poor connection speed, outside in a sunny environment on a top-notch smartphone with touchscreen display as well as on an older feature phone with an even older browser and keypad operation. You cannot influence the context a user is in but you can design your site to be useable under all these circumstances.</p>
<h2>Usability Aspects</h2>
<p>After thinking about content and context it is equally important to consider usability. It is not only a matter of what content is interesting for a user and the contexts in it will be consumed but also a matter of how your target audience will use your site. Navigating your site is less fun when doing it using the device’s keyboard instead of just using your finger on a large screen but it can be easier if the links within your page are so damn small that it is almost impossible to hit them without causing unwanted behavior (like tapping other links as you actually wanted to). There are some basic hints to make sure your content is adapted in the best possible and usable way for mobile users:</p>
<ol>
<li><strong>Make it “mobile” not only “small”:</strong> Create a concept that utilizes the possibilities of the technology. You won’t satisfy many people by simply offering a smaller version of your classic website. Mobilize, don’t miniaturize!</li>
<li><strong>Keep all paths open:</strong> Leave it up to the user to access either the mobile or desktop version of your website.</li>
<li><strong>Keep it simple:</strong> Avoid complex navigation structures, users will not dig that deep anyway while they are on the go.</li>
<li><strong>Avoid text input wherever possible:</strong> Text input on mobiles sucks. If you really need the users to enter text, use wide input boxes so that they see what they are typing. Buttons to clear an input field on click/touch are also helpful very often.</li>
<li><strong>Adapt the media:</strong> Adapt all pictures, videos and alike to be displayed properly on the handset (check the corresponding chapter in this guide: “Implementing Rich Media” for more information). Try to avoid formats such as .doc and pdf if possible.</li>
<li><strong>The user is a creature of habit:</strong> respect that: Adapt usage patterns from classic websites such as linking logos to the homepage or offering corrections to mistyped search requests.</li>
<li><strong>Think of stubby fingers:</strong> When optimizing your content for touch screen phones do not use clickable areas smaller than ~50x50px.</li>
<li><strong>Use sharp contrasts:</strong> Fonts and background colors that guarantee legibility in any surrounding, including bright sunlight.</li>
<li><strong>Reflect continuously:</strong> Ask yourself if you would use the implemented features yourself. Ask your friends and colleagues as well before realizing your ideas.</li>
<li><strong>Do not require the user to think.</strong> Try to implement intuitive navigation, do not force users to make decisions more often than necessary.</li>
</ol>
<h2>Technical Limits of Web Technologies</h2>
<p>When it comes to the decision whether to create an app or a mobile website for a specific project many mobile developers tend to say “app” first because you seem to have more possibilities and better performance. This answer is seldom wrong but it is only half the truth. Let’s have a detailed view on the advantages and disadvantages of mobile websites or web apps compared with native mobile apps.</p>
<p>If you are coming from the “desktop world” and you have never created a website for mobile devices before (or if the last time you did is already a long time ago) you will be surprised about the capabilities of modern mobile phone’s web browsers. Assuming that you intend to optimize your mobile website mainly for modern platforms you would also create apps for (iOS, Android, BlackBerry OS, WebOS, bada, Windows Phone) we will primarily focus on modern browsers running on the mentioned platforms in this chapter.</p>
<p>The current generation browsers on major platforms support a variety of modern HTML5, CSS and JavaScript features like Geolocation, WebGL (interesting for mobile game development), hardware acceleration, offline storage and many more. You can easily find out if a user is online or offline, you can synchronize online data on a device for later offline use (e.g. if the signal is lost) and you can make whole web applications available even when a user has no active internet connection.</p>
<p>You can ask for permission to query the current position of a user just like you can do in a native app and you can also access the gyroscope of an iPhone using pure JavaScript directly in the browser. In addition mobile browser vendors are also working on making it possible to access the phone’s camera, network status or address book data.</p>
<p>Sounds pretty app like, doesn’t it? JavaScript is still often underestimated but if you know how you can rapidly create high class web apps which make extensive use of a device’s capabilities (almost) without the need to create proprietary versions for each platform.</p>
<p>And that’s not all: almost all recent mobile browsers support a lot of the current CSS3 standard and so you can create nice and shiny things like transitions, custom web fonts, drop shadows or rounded corners with only little effort which makes it very easy to let your web applications look and feel like native apps.</p>
<p>Pitfalls? Issues? Of course there are some. Although modern browsers already have a wide range of device API support there are still things you cannot yet do inside a browser. Accessing the camera as already mentioned is one thing. You cannot prevent the device from going to standby mode on a website which can sometimes be a problem. And sure: you will need to implement your own user interface in HTML, CSS and JavaScript instead of just using the native GUI functionality which is a bit faster in most cases. But if your code is clean and effects are used wisely the performance difference to native apps is so small that a user probably will not even realise he is just using a web app instead of a native app.</p>
<table>
<tbody>
<tr>
<th>Feature</th>
<th>Mobile Website</th>
<th>Native App</th>
</tr>
<tr>
<td>Detect online status</td>
<td class="good">Yes</td>
<td class="good">Yes</td>
</tr>
<tr>
<td>Offline data storage</td>
<td class="good">Yes (very limited)</td>
<td class="good">Yes</td>
</tr>
<tr>
<td>Access GPS sensor/geolocation</td>
<td class="good">Yes</td>
<td class="good">Yes</td>
</tr>
<tr>
<td>Access gyroscope</td>
<td class="good">Yes</td>
<td class="good">Yes</td>
</tr>
<tr>
<td>Access camera</td>
<td class="notsogood">Not yet (planned)</td>
<td class="good">Yes</td>
</tr>
<tr>
<td>Access address book</td>
<td class="notsogood">Not yet (planned)</td>
<td class="good">Yes</td>
</tr>
<tr>
<td>Notifications (i.e. vibration, push, messages)</td>
<td class="notsogood">Not yet (planned)</td>
<td class="good">Yes</td>
</tr>
<tr>
<td>Cross-platform compatible</td>
<td class="good">Yes</td>
<td class="bad">No</td>
</tr>
<tr>
<td>Check battery status</td>
<td class="notsogood">Not yet (planned)</td>
<td class="good">Yes</td>
</tr>
<tr>
<td>Different touch keyboard layouts on input fields</td>
<td class="notsogood">Yes (incomplete)</td>
<td class="good">Yes</td>
</tr>
<tr>
<td>Appstore approval needed?</td>
<td class="good">No</td>
<td class="bad">Yes</td>
</tr>
</tbody>
</table>
<h2>Fragmentation</h2>
<p><em>“In mobile, fragmentation is forever”.</em> Unfortunately it is not always as easy to create a cross-device cross-platform crossbrowser cross-markup “cross-blahblah” mobile website as you might think. Dealing with many different devices also results in an annoying fragmentation jungle. Some devices use their own implementation of device APIs (i.e. Geolocation on Blackberry OS 4.6) or even have absolutely no support for certain features (i.e. filesystem access on iOS).</p>
<p>This means you have to write workarounds of your code for different platforms and even for the same browser running on different platform versions. But the web wouldn’t be the web if there wasn’t already a solution for almost all of these problems. And so there are sites, libraries and services like <a href="http://caniuse.com">caniuse.com</a>, <a href="http://modernizr.com">Modernizr</a> or <a href="http://fitml.com">fitml.com</a> where you can build quick and clean workarounds to handle fragmentation issues with only a minimum of effort. You still only need to write most parts of your web app once.</p>
<h2>Server-Side vs. Client-Side Adaption</h2>
<p>Basically there are two different approaches to professional mobile web development if you aim to deliver a great user experience. Either way you will have to determine which (type of) device is sending a request to your website and then you need to “guess” (server-side) or test (client-side) what features are supported by the according device.</p>
<h3>Server-Side Detection and User Agent Sniffing</h3>
<p>The first possible way is to do so using the so called “user agent sniffing” on the server-side and then let your server create and deliver an optimized version of your site to the client. Serverside detection is usually based on large databases containing the user agents of thousands of devices and their capabilities. The most common use of server side adaption is image scaling on the server to save some bytes when delivering a big image to a mobile device. In most cases it is not necessary to deliver a 800×600 JPG with a file size of 120K to a device whose display resolution is only 320×480. So you typically resize the image to the display size of the mobile device and then serve a much smaller version to the client.</p>
<p>Service-side detection can be a good choice for other reasons. You can also decide which markup to deliver based on the user agent of the accessing device. If you have a visitor with an iPhone or an Android phone you can serve a nice HTML5 document while users with old Nokia devices will receive an old fashioned XHTML 1.1 document.</p>
<p>The advantage of server-side adaption is that you optimize all the content to serve only what a client probably really needs. And “probably” is also the problem here. New devices are released so often it is hard to keep a device database entirely upto- date. There are some commercial providers for device databases (<a href="http://wurfl.sf.net">WURFL</a>, <a href="http://deviceatlas.com">DeviceAtlas</a>, <a href="http://www.fitml.com/">fitml.com</a> for example) if you want to realize mobile web projects with server-side user agent detection I strongly recommend you consider one of these as they have full time employees actively maintaining their databases and do a lot of work that would be impractical for you to do yourself.</p>
<p>Pitfall here: user agents can be “wrong”, manipulated or unknown. You should therefore always provide a fallback in case your user agent detection fails. Such a fallback could be a document in a format (i.e. HTML4) that almost every mobile browser released in the past 5 years can understand.</p>
<h3>Client-Side Adaption and Feature Detection</h3>
<p>Client-side feature detection is the second approach to create a great user experience on mobile websites. Feature detection in general means that you use JavaScript to look if a certain capability is supported on the accessing device. To give you a first impression: you can use <code>if(navigator.geolocation)</code> to check if a device supports acquiring of the user’s current position.</p>
<p>Feature detection also means that you will have to deliver the complete document with all possible features of the website in it and then gracefully degrade it by removing features which are not supported on the device. That means you are sending a lot of content to all devices regardless of whether a certain feature is supported on a device or not.</p>
<p>One big advantage compared to server-side adaption: when a feature test passes you can (under normal conditions) be sure that your desired feature or behavior will work as expected even if a user agent was modified and therefore was not recognized properly by a device capability database.</p>
<p>The Modernizr JavaScript library is probably the first place to go when it comes to client-side feature detection. Modernizr covers a lot of possible browser capabilities and provides a simple API to check for support of a certain feature. If you need to know whether a browser supports Drag and Drop or not, just use the Modernizr library this way:</p>
<pre><code>if(Modernizr.draganddrop) {
	// browser supports native drag and drop
} else {
	// fallback
}</code></pre>
<p>Another part that belongs to the client-side is the adaption of layout. On modern mobile browsers you can use media queries which let you apply CSS rules only if a client or browser matches certain conditions. You can easily show a two column layout when a device exceeds a display width of 800px (on tablets for example) and fall back to a linear one column layout when a device’s display has a resolution of less than 800px.</p>
<p>Issues concerning client-side approach: first there are some things, especially browser bugs, which may be hard to detect on client side. Another big problem is that you always have to serve the whole document with large scaled images and a bunch of JavaScript to the client since you do not know if your visitor is using a bleeding-edge hipster browser from Cupertino or an oldschool “I don’t know what JavaScript is” browser from 2003.</p>
<h3>Why not just use the best of both worlds?</h3>
<p>Excellent idea! There is of course no rule that forbids to combine both server-side and client-side technology to create an even better user experience. So you can try to determine the basics (“which markup should be used?”, “what is the correct size for images?”, “JavaScript support, yes or no?”) on the server and let the client handle the rest. You can provide server-side fallbacks for JavaScript enhancement to make a site accessible and so you can create mobile websites which even work fine on old devices.</p>
<p>A commercial platform working according to this principle is fitml.com where you describe your content in an abstract XML markup called FITML, the platform then converts your markup to the best suitable output format and optimizes both on serverside and on client-side.</p>
<h2>Hybrid Apps</h2>
<p>If you necessarily want (or need) to publish your mobile app on Android Market, Apple Appstore, etc. you can also create a “hybrid app”. Create your app completely by using common web technologies (HTML, CSS, JavaScript) and then compile it as app. Sounds easy? It is. There are several hybrid app frameworks which let you create native apps with only a single HTML5 web app as shared base. There is PhoneGap2, Appcelerator3 or Apparat. io4 and probably many more you can use to achieve this.</p>
<p>How does it work exactly? Write your complete application in HTML5 just as you were about to publish it to the web. Then you use one of the frameworks to compile your web app as native app. The framework creates some sort of “wrapper app” which embeds your web app in a “web view” and it can then be installed as regular application on several different platforms. The big plus of doing it this way is that you only have one web app as the base and thus you can reduce your costs for development and maintaining but the result is still a “real” native app.</p>
<p>Small downer: although frameworks let you use features in your web app which you usually cannot use in a browser hybrid apps are not a complete substitute for native apps. They offer some nice advanced functions like vibration, access to camera or address book but in its core it still is a web app. That means you will have to create your own user interface which might be slower and you also cannot use really everything as you can when creating an app using the native SDK.</p>
<h2>Lessons learned</h2>
<p>The gap between native apps and web apps is rapidly decreasing. Browser vendors did a lot of good work in the past few years and implemented many features which were only available in native apps. There are different approaches to create great mobile websites which can look and even feel a lot like a native app and new devices will be released that have even better support for HTML5 and its device specific enhancements.</p>
<p>Creating mobile websites or mobile web apps makes your content accessible over the web on almost every platform with only little work compared to native development for several platforms. It can thus save you a lot of costs for development and maintenance. Due to the existence of hybrid app frameworks you can even publish your apps in app stores.</p>
<p>If you have never developed a mobile website or web app before or if you were not convinced because of the poor browsers in the early days of the mobile web you should give it another try. Consistent support of the many different features is still far from perfect but it has been improved by at least 1000% since the rise and success of Android and iOS.</p>
<p>When you became curious and want to create a mobile website always have one thing in mind: <strong>make your mobile website mobile, not just smaller!</strong></p>
<p><em>This article was published in the <a href="http://www.enough.de/1/products/mobile-developers-guide/">Mobile Developer&#8217;s Guide To The Galaxy #9</a> in October 2011. You can download it for free.</em></p>
<div class="articleMeta">
<p><img class="alignleft size-full wp-image-876" title="devguide9-small" alt="" src="/blog/wp-content/uploads/2011/12/devguide9-small.jpg" width="120" height="169" /><em>This article was published in the <a href="http://www.enough.de/1/products/mobile-developers-guide/">Mobile Developer&#8217;s Guide To The Galaxy #9</a> in October 2011. You can download it for free.</em></p>
<p>&nbsp;</p>
</div>
]]></content:encoded>
			<wfw:commentRss>https://2004.manuel-bieh.de/blog/creating-mobile-websites/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Linkdump #5</title>
		<link>https://2004.manuel-bieh.de/blog/linkdump-5</link>
		<comments>https://2004.manuel-bieh.de/blog/linkdump-5#comments</comments>
		<pubDate>Mon, 29 Aug 2011 06:39:28 +0000</pubDate>
		<dc:creator><![CDATA[Manuel]]></dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[Webdev]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.manuel-bieh.de/blog/?p=777</guid>
		<description><![CDATA[5 A short test on performance when using IDs in CSS selectors: – http://oli.jp/2011/ids/ Nice trick: Fixing the JavaScript typeof operator – http://javascriptweblog.wordpress.com/2011/08/08/fixing-the-javascript-typeof-operator/ Understanding prototypes in JavaScript – http://yehudakatz.com/2011/08/12/understanding-prototypes-in-javascript/ How LinkedIn used Node.js and HTML5 to build a better, faster app – http://venturebeat.com/2011/08/16/linkedin-node/ Advantages of Most Perpetual Web Development Technologies &#8211; PHP, ASP.NET, Java, Ruby [&#8230;]]]></description>
				<content:encoded><![CDATA[<div class="linkdump"><span>5</span></div>
<p>A short test on performance when using IDs in CSS selectors:<br />
– <a href="http://oli.jp/2011/ids/">http://oli.jp/2011/ids/</a></p>
<p>Nice trick: Fixing the JavaScript typeof operator<br />
– <a href="http://javascriptweblog.wordpress.com/2011/08/08/fixing-the-javascript-typeof-operator/">http://javascriptweblog.wordpress.com/2011/08/08/fixing-the-javascript-typeof-operator/</a></p>
<p>Understanding prototypes in JavaScript<br />
– <a href="http://yehudakatz.com/2011/08/12/understanding-prototypes-in-javascript/">http://yehudakatz.com/2011/08/12/understanding-prototypes-in-javascript/<br />
</a></p>
<p>How LinkedIn used Node.js and HTML5 to build a better, faster app<br />
– <a href="http://venturebeat.com/2011/08/16/linkedin-node/">http://venturebeat.com/2011/08/16/linkedin-node/</a></p>
<p>Advantages of Most Perpetual Web Development Technologies &#8211; PHP, ASP.NET, Java, Ruby on Rails<br />
– <a href="http://phpwebdevelopmentservices.blogspot.com/2011/05/advantages-of-most-perpetual-web.html">http://phpwebdevelopmentservices.blogspot.com/2011/05/advantages-of-most-perpetual-web.html</a></p>
<p>10 Excellent HTML5 coding Tools Many Users Don’t Know About<br />
– <a href="http://smashinghub.com/excellent-html5-coding-tools.htm">http://smashinghub.com/excellent-html5-coding-tools.htm</a></p>
]]></content:encoded>
			<wfw:commentRss>https://2004.manuel-bieh.de/blog/linkdump-5/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Geolib.js</title>
		<link>https://2004.manuel-bieh.de/blog/geolib-js</link>
		<comments>https://2004.manuel-bieh.de/blog/geolib-js#comments</comments>
		<pubDate>Sat, 06 Aug 2011 10:45:38 +0000</pubDate>
		<dc:creator><![CDATA[Manuel]]></dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Webdev]]></category>
		<category><![CDATA[Geo]]></category>
		<category><![CDATA[Geolocation]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.manuel-bieh.de/blog/?p=782</guid>
		<description><![CDATA[I created a small JavaScript library to provide some basic geo functions like distance calculation, conversion of decimal coordinates to sexagesimal and vice versa, etc. Usage: To calculate distance between two geo coordinates geolib.getDistance({"latitude": 51.511928, "longitude": 7.463536}, {"latitude": 51.510318, "longitude": 7.524133}, 10); // -> 4200 (Accuracy 10m) Takes 2 or 3. First 2 arguments must [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img src="/blog/wp-content/uploads/2011/08/header-geolib.png" alt="" title="header-geolib" width="680" height="170" class="alignnone size-full wp-image-786" /></p>
<p>I created a small JavaScript library to provide some basic geo functions like distance calculation, conversion of decimal coordinates to sexagesimal and vice versa, etc.</p>
<p><strong>Usage:</strong></p>
<p>To calculate distance between two geo coordinates<br />
<code>geolib.getDistance({"latitude": 51.511928, "longitude": 7.463536}, {"latitude": 51.510318, "longitude": 7.524133}, 10); // -> 4200 (Accuracy 10m)</code></p>
<p>Takes 2 or 3. First 2 arguments must be an object with a latitude and a longitude property (e.g. {latitude: 52.518611, longitude: 13.408056}). Coordinates can be in sexagesimal or decimal format. 3rd argument is accuracy (in meters). So a calculated distance of 1248 meters with an accuracy of 100 is returned as 1200.</p>
<p>Return value is always an integer and represents the distance in meters.</p>
<p>To convert it into miles use:<br />
<code>geolib.convertUnit('mi', value)</code></p>
<p>Convert sexagesimal to decimal<br />
<code>geolib.sexagesimal2decimal("51° 29' 46\" N"); // -> 51.49611111</code></p>
<p>Convert decimal to sexagesimal<br />
<code>geolib.decimal2sexagesimal(51.49611111); // -> 51° 29' 46.00</code></p>
<p><strong>Download:</strong><br />
<a href="https://github.com/manuelbieh/geolib">https://github.com/manuelbieh/geolib</a></p>
<p><strong>Demo:</strong><br />
<a href="http://www.manuel-bieh.de/publikationen/scripts/geolib/demo.html">http://www.manuel-bieh.de/publikationen/scripts/geolib/demo.html</a></p>
]]></content:encoded>
			<wfw:commentRss>https://2004.manuel-bieh.de/blog/geolib-js/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Linkdump #4</title>
		<link>https://2004.manuel-bieh.de/blog/linkdump-4</link>
		<comments>https://2004.manuel-bieh.de/blog/linkdump-4#comments</comments>
		<pubDate>Mon, 25 Jul 2011 09:30:15 +0000</pubDate>
		<dc:creator><![CDATA[Manuel]]></dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[HTML5/CSS3]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.manuel-bieh.de/blog/?p=770</guid>
		<description><![CDATA[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 [&#8230;]]]></description>
				<content:encoded><![CDATA[<div class="linkdump"><span>4</span></div>
<p>18 mistakes that kill startups<br />
– <a href="http://www.paulgraham.com/startupmistakes.html">http://www.paulgraham.com/startupmistakes.html</a></p>
<p>7 lovely things about HTML5<br />
– <a href="http://www.elated.com/articles/7-lovely-things-about-html5-markup/">http://www.elated.com/articles/7-lovely-things-about-html5-markup/</a></p>
<p>Lists are cool. So here is another one: 15 HTML5 Canvas Applications Developers Should Know About<br />
– <a href="http://smashinghub.com/15-html5-canvas-applications-developers-should-know-about.htm">http://smashinghub.com/15-html5-canvas-applications-developers-should-know-about.htm</a></p>
<p>CSS3 @font-face design guide<br />
– <a href="http://webdesignerwall.com/tutorials/css3-font-face-design-guide">http://webdesignerwall.com/tutorials/css3-font-face-design-guide</a></p>
<p>Published more than a year ago but still worth reading: Signs of a poorly written jQuery plugin:<br />
– <a href="http://remysharp.com/2010/06/03/signs-of-a-poorly-written-jquery-plugin/">http://remysharp.com/2010/06/03/signs-of-a-poorly-written-jquery-plugin/</a></p>
]]></content:encoded>
			<wfw:commentRss>https://2004.manuel-bieh.de/blog/linkdump-4/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>famfamfam silk icons css-sprite version</title>
		<link>https://2004.manuel-bieh.de/blog/famfamfam-silk-icons-css-sprite-version</link>
		<comments>https://2004.manuel-bieh.de/blog/famfamfam-silk-icons-css-sprite-version#comments</comments>
		<pubDate>Mon, 11 Jul 2011 09:07:56 +0000</pubDate>
		<dc:creator><![CDATA[Manuel]]></dc:creator>
				<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://www.manuel-bieh.de/blog/?p=752</guid>
		<description><![CDATA[Many of you have probably used or at least heard of the famfamfam silk iconset in the past. 1000 free 16×16px icons for every purpose you can think of. Many websites or software packages are using it. But 1000 icons means (in case you really use all of them) 1000 HTTP requests which is really [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img src="/blog/wp-content/uploads/2011/07/famfamfam-header1.png" alt="" title="famfamfam-header" width="680" height="200" class="alignnone size-full wp-image-768" /></p>
<p>Many of you have probably used or at least heard of the famfamfam silk iconset in the past. 1000 free 16×16px icons for every purpose you can think of. Many websites or software packages are using it.</p>
<p>But 1000 icons means (in case you really use all of them) 1000 HTTP requests which is really a lot. And even if you&#8217;re using only ~100 icons, that&#8217;s still a lot of HTTP requesting.</p>
<p>For this reason I created a small CSS sprite version of the popular iconset including all 1000 icons in one single 299K png file + 1 stylesheet (56 KiB). (Filesize was reduced almost by half! (355K instead of 646K, that&#8217;s a reduction by 46%)).</p>
<h3>Usage</h3>
<p>Very simple. Just add a span to your markup, then add the class &#8222;icon&#8220; and &#8222;<em>iconname</em>&#8222;.</p>
<p>Example:<br />
<code>&lt;span class="icon attach"&gt;&lt;/span&gt;</code></p>
<h3>Download</h3>
<p>Grab the file here:<br />
<a href="http://www.manuel-bieh.de/publications/download/fff-sprites.zip">http://www.manuel-bieh.de/publications/download/fff-sprites.zip</a></p>
<h3>License</h3>
<p>As the original iconset, the sprite is filed under <a href="http://creativecommons.org/licenses/by/2.5/">Creative Commons Attributions 2.5</a></p>
]]></content:encoded>
			<wfw:commentRss>https://2004.manuel-bieh.de/blog/famfamfam-silk-icons-css-sprite-version/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Linkdump #3</title>
		<link>https://2004.manuel-bieh.de/blog/linkdump</link>
		<comments>https://2004.manuel-bieh.de/blog/linkdump#comments</comments>
		<pubDate>Fri, 24 Jun 2011 12:30:27 +0000</pubDate>
		<dc:creator><![CDATA[Manuel]]></dc:creator>
				<category><![CDATA[Allerlei]]></category>

		<guid isPermaLink="false">http://www.manuel-bieh.de/blog/?p=748</guid>
		<description><![CDATA[3 Adobe tries to bring the functionality of print publishing programs like InDesign to CSS. They called it &#8222;CSS regions&#8220; and built a prototype that looks really interesting and promising: – http://www.adobe.com/devnet/html5/articles/css3-regions.html And there&#8217;s already a jQuery plugin as polyfill to play around with all these cool features: – https://github.com/ricardrobin/Regions.js A problem that doesn&#8217;t really [&#8230;]]]></description>
				<content:encoded><![CDATA[<div class="linkdump"><span>3</span></div>
<p>Adobe tries to bring the functionality of print publishing programs like InDesign to CSS. They called it &#8222;CSS regions&#8220; and built a prototype that looks really interesting and promising:<br />
– <a href="http://www.adobe.com/devnet/html5/articles/css3-regions.html">http://www.adobe.com/devnet/html5/articles/css3-regions.html</a><br />
And there&#8217;s already a jQuery plugin as polyfill to play around with all these cool features:<br />
– <a href="https://github.com/ricardrobin/Regions.js">https://github.com/ricardrobin/Regions.js</a></p>
<p>A problem that doesn&#8217;t really bother you a lot when developing for mobile but css-tricks.com published some numbers about the fact that screen resolution is ≠ browser window size:<br />
– <a href="http://css-tricks.com/9778-screen-resolution-notequalto-browser-window/">http://css-tricks.com/9778-screen-resolution-notequalto-browser-window/</a></p>
<p>If you want to enrich your website&#8217;s data with some very useful HTML5 microdata and you&#8217;re looking for the right schema. Maybe we&#8217;ve got the right website for you:<br />
– <a href="http://schema.org/docs/gs.html">http://schema.org/docs/gs.html</a></p>
<p>Input “Type=Image” Considered Harmful (and how to fix)<br />
– <a href="http://blog.vurve.com/2011/06/18/input-typeimage-considered-harmful/">http://blog.vurve.com/2011/06/18/input-typeimage-considered-harmful/</a></p>
<p>This one is so cool: pdf.js is a javascript library to display PDF&#8217;s in your browser using the canvas element:<br />
– <a href="https://github.com/andreasgal/pdf.js">https://github.com/andreasgal/pdf.js</a></p>
<p><em>Let’s Make a Framework</em> is an ongoing series about building a JavaScript framework from the ground up:<br />
– <a href="http://dailyjs.com/2011/06/02/framework-65/">http://dailyjs.com/2011/06/02/framework-65/</a></p>
]]></content:encoded>
			<wfw:commentRss>https://2004.manuel-bieh.de/blog/linkdump/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linkdump #2</title>
		<link>https://2004.manuel-bieh.de/blog/linkdump-2</link>
		<comments>https://2004.manuel-bieh.de/blog/linkdump-2#comments</comments>
		<pubDate>Fri, 17 Jun 2011 12:30:21 +0000</pubDate>
		<dc:creator><![CDATA[Manuel]]></dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[Webdev]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[FITML]]></category>
		<category><![CDATA[responsive]]></category>

		<guid isPermaLink="false">http://www.manuel-bieh.de/blog/?p=741</guid>
		<description><![CDATA[2 An article about the new CSS calc() function. A feature we all have been waiting for a long time and yes: it already works in Firefox 4 and even in IE9(!): – http://webdesignernotebook.com/css/the-wonderful-calc-function/ Jeremy Keith has created a list of collected design principles, divided into five categories: people, organisations, formats, software, hardware. Definately worth [&#8230;]]]></description>
				<content:encoded><![CDATA[<div class="linkdump"><span>2</span></div>
<p>An article about the new CSS calc() function. A feature we all have been waiting for a long time and yes: it already works in Firefox 4 and even in IE9(!):<br />
– <a href="http://webdesignernotebook.com/css/the-wonderful-calc-function/">http://webdesignernotebook.com/css/the-wonderful-calc-function/</a></p>
<p><a href="http://www.twitter.com/adactio">Jeremy Keith</a> has created a list of collected design principles, divided into five categories: people, organisations, formats, software, hardware. Definately worth reading:<br />
– <a href="http://principles.adactio.com/">http://principles.adactio.com/</a></p>
<p>30 Creative Examples of Responsive Web Design<br />
– <a href="http://webdesignledger.com/inspiration/30-creative-examples-of-responsive-web-design">http://webdesignledger.com/inspiration/30-creative-examples-of-responsive-web-design</a></p>
<p>A web-based DJ prototype plus a really comprehensive post about how it was created:<br />
– <a href="http://wheelsofsteel.net/">http://wheelsofsteel.net/</a><br />
– <a href="http://www.schillmania.com/content/entries/2011/wheels-of-steel/">http://www.schillmania.com/content/entries/2011/wheels-of-steel/</a></p>
<p>If you want to develop websites or web apps for mobile using several different content sources like Twitter API, RSS feeds or your existing desktop website, you should consider to have a look at fitml.com which was released as public beta at the beginning of this week (disclosure: I work for Sevenval, the company behind fitml.com)<br />
– <a href="http://fitml.com">http://fitml.com</a></p>
]]></content:encoded>
			<wfw:commentRss>https://2004.manuel-bieh.de/blog/linkdump-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linkdump #1</title>
		<link>https://2004.manuel-bieh.de/blog/linkdump-1</link>
		<comments>https://2004.manuel-bieh.de/blog/linkdump-1#comments</comments>
		<pubDate>Fri, 10 Jun 2011 11:01:06 +0000</pubDate>
		<dc:creator><![CDATA[Manuel]]></dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[Webdev]]></category>

		<guid isPermaLink="false">http://www.manuel-bieh.de/blog/?p=732</guid>
		<description><![CDATA[1 Nice demonstrations of what you can do with webfonts in combination with CSS3 – http://webfontgallery.com/ An overview of new features coming in iOS 5 – http://davidbcalhoun.com/2011/new-mobile-safari-stuff-in-ios5-position-fixed-overflow-scroll-new-input-type-support-web-workers-ecmascript-5 If you have to re-style large data tables for mobile and you have no idea how, this article on responsive data tables might help: – http://css-tricks.com/responsive-data-tables You have [&#8230;]]]></description>
				<content:encoded><![CDATA[<div class="linkdump"><span>1</span></div>
<p>Nice demonstrations of what you can do with webfonts in combination with CSS3<br />
– <a href="http://webfontgallery.com/">http://webfontgallery.com/</a></p>
<p>An overview of new features coming in iOS 5<br />
– <a href="http://davidbcalhoun.com/2011/new-mobile-safari-stuff-in-ios5-position-fixed-overflow-scroll-new-input-type-support-web-workers-ecmascript-5">http://davidbcalhoun.com/2011/new-mobile-safari-stuff-in-ios5-position-fixed-overflow-scroll-new-input-type-support-web-workers-ecmascript-5</a></p>
<p>If you have to re-style large data tables for mobile and you have no idea how, this article on responsive data tables might help:<br />
– <a href="http://css-tricks.com/responsive-data-tables">http://css-tricks.com/responsive-data-tables</a></p>
<p>You have recently made any award-worthy CSS3 animations and now you wanna win your deserved prize for it? Submit it to the Mozilla DevDerby:<br />
– <a href="https://developer.mozilla.org/en-US/demos/devderby">https://developer.mozilla.org/en-US/demos/devderby</a></p>
<p>A browser tictactoe game including a computer opponent with only HTML and CSS – completely without JavaScript. You think that&#8217;s impossible? No it&#8217;s obviously not:<br />
– <a href="http://jsdo.it/usualoma/qzfr">http://jsdo.it/usualoma/qzfr</a></p>
<p>fitml.com 1.0 beta is now online. The awesome mobile development platform I&#8217;ve been working on in the past 8 months is now online. Sign up and give it a try!<br />
– <a href="http://fitml.com">http://fitml.com</a></p>
<p>Another private showcase I&#8217;ve been working on went online yesterday. It was created during my daily trainride from Dortmund to Cologne and back. Check out my (yet little) HTML5 and CSS3 showcase<br />
– <a href="http://doctypehtml.net">http://doctypehtml.net/</a></p>
]]></content:encoded>
			<wfw:commentRss>https://2004.manuel-bieh.de/blog/linkdump-1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Geolocation jQuery-Plugin</title>
		<link>https://2004.manuel-bieh.de/blog/geolocation-jquery-plugin</link>
		<comments>https://2004.manuel-bieh.de/blog/geolocation-jquery-plugin#comments</comments>
		<pubDate>Sat, 28 May 2011 22:16:15 +0000</pubDate>
		<dc:creator><![CDATA[Manuel]]></dc:creator>
				<category><![CDATA[HTML5/CSS3]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Webdev]]></category>
		<category><![CDATA[Geolocation]]></category>
		<category><![CDATA[Geolocation API]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.manuel-bieh.de/blog/?p=695</guid>
		<description><![CDATA[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. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img src="/blog/wp-content/uploads/2011/05/geolocation-map2.jpg" alt="" title="" width="680" height="200" class="alignnone size-full wp-image-793" /></p>
<p>I created a small jQuery plugin which acts as a simplification of the <strong><a href="http://dev.w3.org/geo/api/spec-source.html">Geolocation API</a></strong>. </p>
<p>Instead of using navigator.geolocation.getCurrentPosition you can now just use the jQuery methods <code>$.geolocation.get()</code> or <code>$.geolocation.watch()</code>.</p>
<p>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 &#8222;win&#8220; and &#8222;fail&#8220;: <br />
<code>$.geolocation.get({win: function() {}, fail: function() {}, options); </code></p>
<p>You can also use <code>$.geolocation.getCurrentPosition(success, error, options)</code> to get native API feeling if this makes you happier. In conjunction with my <a href="http://www.manuel-bieh.de/blog/bessere-geolocation-api-unterstutzung">Geolocation API polyfill</a> script this also works with some non-standard Geolocation APIs like Google Gears or Blackberry Location.</p>
<h3>Usage</h3>
<dl>
<dt>$.geolocation.clearWatch(watchID)</dt>
<dd>Stops tracking of the user for the according watchID. </dd>
<dd><strong>watchID</strong> (Integer)</dd>
<dt>$.geolocation.get(options)</dt>
<dd>Get the current position of the user</dd>
<dd><strong>options</strong> (Object)</p>
<ul>
<li><strong>error</strong><br />
				Function to call if geolocation request failed</li>
<li><strong>fail</strong><br />
				Alias for error</li>
<li><strong>options</strong><br />
				Options for the geolocation request</p>
<ul>
<li>enableHighAccuracy</li>
<li>maximumAge</li>
<li>timeout</li>
</ul>
</li>
<li><strong>success</strong><br />
				Function to call if geolocation request was successful</li>
<li><strong>win</strong><br />
				Alias for success</li>
</ul>
</dd>
<dt>$.geolocation.getCurrentPosition(success, error, options)</dt>
<dd>Get the current position of the user (API standard behavior)</dd>
<dd><strong>success</strong> Function to call if geolocation request was successful</dd>
<dd><strong>error</strong> Function to call if geolocation request failed</dd>
<dd><strong>options</strong> Options for the geolocation request</p>
<ul>
<li>enableHighAccuracy</li>
<li>maximumAge</li>
<li>timeout</li>
</ul>
</dd>
<dt>$.geolocation.stop(watchID)</dt>
<dd>Stops tracking of the user for the according watchID. </dd>
<dd><strong>watchID</strong> (Integer)</dd>
<dt>$.geolocation.stopAll()</dt>
<dd>Stops all watchPosition callbacks. </dd>
<dt>$.geolocation.watch(options)</dt>
<dd>Track the movement of the user</dd>
<dd>Returns: watchID (Integer)</dd>
<dd><strong>options</strong> (Object)</p>
<ul>
<li><strong>error</strong><br />
				Function to call if geolocation request failed</li>
<li><strong>fail</strong><br />
				Alias for error</li>
<li><strong>options</strong><br />
				Options for the geolocation request</p>
<ul>
<li>enableHighAccuracy</li>
<li>maximumAge</li>
<li>timeout</li>
</ul>
</li>
<li><strong>success</strong><br />
				Function to call if geolocation request was successful</li>
<li><strong>win</strong><br />
				Alias for success</li>
</ul>
</dd>
<dt>$.geolocation.watchPosition(success, error, options)</dt>
<dd>Track the movement of the user (API standard behavior)</dd>
<dd>Returns: watchID (Integer)</dd>
<dd><strong>success</strong> Function to call if geolocation request was successful</dd>
<dd><strong>error</strong> Function to call if geolocation request failed</dd>
<dd><strong>options</strong> Options for the geolocation request</p>
<ul>
<li>enableHighAccuracy</li>
<li>maximumAge</li>
<li>timeout</li>
</ul>
</dd>
</dl>
<h3>Examples</h3>
<pre></pre>
<h3>Demo</h3>
<p><a href="http://manuel-bieh.de/publikationen/scripts/jquery/geolocation/">http://manuel-bieh.de/publikationen/scripts/jquery/geolocation/</a></p>
<h3>Download</h3>
<p><a href="https://github.com/manuelbieh/jQuery-Geolocation">https://github.com/manuelbieh/jQuery-Geolocation</a></p>
]]></content:encoded>
			<wfw:commentRss>https://2004.manuel-bieh.de/blog/geolocation-jquery-plugin/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Styleform jQuery-Plugin</title>
		<link>https://2004.manuel-bieh.de/blog/styleform-jquery-plugin</link>
		<comments>https://2004.manuel-bieh.de/blog/styleform-jquery-plugin#comments</comments>
		<pubDate>Sat, 28 May 2011 15:28:01 +0000</pubDate>
		<dc:creator><![CDATA[Manuel]]></dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Webdev]]></category>

		<guid isPermaLink="false">http://www.manuel-bieh.de/blog/?p=691</guid>
		<description><![CDATA[[English version below!] Mit diesem Plugin ist es möglich Checkboxen und Radiobuttons zu stylen. Anwendung: Einfach jedem Form-Element dessen Checkboxen und Radiobuttons gestyled werden sollen die Klasse „styleform“ anhängen. Alternativ kann das Styling auf alle oder nur ausgewählte Formulare angewandt werden: $('form').styleForm(); $('#myForm').styleForm(); Styling: Es kann entweder ein eigenes Stylesheet erstellt werden mit eigenen Eigenschaften [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img src="/blog/wp-content/uploads/2011/05/styleform-teaser11.jpg" alt="" title="" width="680" height="280" class="alignnone size-full wp-image-737" /><br />
<em>[English version below!]</em></p>
<p>Mit diesem Plugin ist es möglich Checkboxen und Radiobuttons zu stylen.</p>
<h3>Anwendung:</h3>
<p>Einfach jedem Form-Element dessen Checkboxen und Radiobuttons gestyled werden sollen die Klasse „styleform“ anhängen. Alternativ kann das Styling auf alle oder nur ausgewählte Formulare angewandt werden:<br />
<code>$('form').styleForm();</code><br />
<code>$('#myForm').styleForm();</code></p>
<h3>Styling:</h3>
<p>Es kann entweder ein eigenes Stylesheet erstellt werden mit eigenen Eigenschaften für die klassen .styleRadio und .styleCheckbox was allerdings recht kompliziert ist, da es kein sauberes Standard-Stylesheet ist das angewandt werden kann. Daher empfiehlt es sich, einfach die mitgelieferten Bilder im images-Ordner so zu bearbeiten wie man es wünscht.</p>
<h3>Bonus!</h3>
<p>Ein iPhone Theme wird in drei größen mitgeliefert.</p>
<h3>Bekannte Probleme:</h3>
<ul>
<li>Opera ignoriert die disabled Eigenschaft komplett</li>
</ul>
<h3>Wünsche:</h3>
<ul>
<li>Styling von select Elementen ermöglichen</li>
</ul>
<h3>Demo</h3>
<p><a href="/publikationen/scripts/jquery/styleform">http://www.manuel-bieh.de/publikationen/scripts/jquery/styleform</a><br />
<a href="/publikationen/scripts/jquery/styleform/iphone.html">http://www.manuel-bieh.de/publikationen/scripts/jquery/styleform/iphone.html</a></p>
<h3>Download</h3>
<p><a href="http://plugins.jquery.com/project/Styleform">http://plugins.jquery.com/project/Styleform</a></p>
<h2>English description</h2>
<p>You can use this plugin if you want to change the default look of checkboxes and radiobuttons.</p>
<h3>Usage:</h3>
<p>Just add the class &#8222;styleform&#8220; (all lowercase) to any form you want to be styled. Or you can alternatively use:<br />
<code>$('form').styleForm();</code><br />
to apply the styling of checkboxes and radiobuttons in all forms inside a document.</p>
<h3>Styling:</h3>
<p>You can either create a new stylesheet with your own properties styling the .styleRadio and .styleCheckbox classes which is however quite complicated since there is no default stylesheet that can be applied yet. Or you can (the easy way) use the provided themes and edit the files inside the images folder the way you want it.</p>
<h3>Bonus:</h3>
<p>iPhone theme included in three different sizes (small, normal, big)!</p>
<h3>Known issues:</h3>
<ul>
<li>Opera ignores the disabled state completely</li>
</ul>
<h3>Wishes:</h3>
<ul>
<li>Add styling of select elements</li>
</ul>
<h3>Demo</h3>
<p><a href="http://www.manuel-bieh.de/publikationen/scripts/jquery/styleform">http://www.manuel-bieh.de/publikationen/scripts/jquery/styleform</a><br />
<a href="http://www.manuel-bieh.de/publikationen/scripts/jquery/styleform/iphone.html">http://www.manuel-bieh.de/publikationen/scripts/jquery/styleform/iphone.html</a></p>
<h3>Download</h3>
<p><a href="http://plugins.jquery.com/project/Styleform">http://plugins.jquery.com/project/Styleform</a></p>
]]></content:encoded>
			<wfw:commentRss>https://2004.manuel-bieh.de/blog/styleform-jquery-plugin/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobiles Webdesign: Konzeption, Gestaltung, Entwicklung</title>
		<link>https://2004.manuel-bieh.de/blog/mobiles-webdesign-konzeption-gestaltung-entwicklung</link>
		<comments>https://2004.manuel-bieh.de/blog/mobiles-webdesign-konzeption-gestaltung-entwicklung#comments</comments>
		<pubDate>Fri, 27 May 2011 14:28:06 +0000</pubDate>
		<dc:creator><![CDATA[Manuel]]></dc:creator>
				<category><![CDATA[Allerlei]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://www.manuel-bieh.de/blog/?p=680</guid>
		<description><![CDATA[Das folgende Interview wurde in der Ausgabe 2/2011 der Internet Intern veröffentlicht. Mobiles Webdesign bedeutet in der Praxis, dass man eine für Desktop-PCs gestaltete Webseite für die kleinen Screens der Smartphones oder Tablets umgestaltet. Oder nicht? Mobiles Webdesign bedeutet in der Praxis im Grunde genommen mehr, als der Begriff Webdesign vermuten lassen würde. Bei einer [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><em>Das folgende Interview wurde in der Ausgabe 2/2011 der Internet Intern veröffentlicht.</em></p>
<p><img src="/blog/wp-content/uploads/2011/05/internet-intern-0211-211x300.jpg" alt="" title="internet-intern-0211" width="211" height="300" class="alignnone size-medium wp-image-681" style="float: left; margin: 0 5px 5px 0;" /></p>
<p><strong>Mobiles Webdesign bedeutet in der Praxis, dass man eine für Desktop-PCs gestaltete Webseite für die kleinen Screens der Smartphones oder Tablets umgestaltet. Oder nicht?<br />
Mobiles Webdesign bedeutet in der Praxis im Grunde genommen mehr, als der Begriff Webdesign vermuten lassen würde. Bei einer mobilen Website stehen neben dem eigentlichen Design an sich bei der Adaption einer bestehenden Website vor allem wohl konzeptionelle Gedanken an erster Stelle.</strong></p>
<p><strong>Mit welchen Konsequenzen?</strong><br />
Wie auch bei einer gewöhnlichen Website für Desktop-PCs werden eine ganze Reihe Vorüberlegungen notwendig. Welche Inhalte werden von der bestehenden Website übernommen? Gibt es mobil spezifische Inhalte, die sich auf dem Handy aufgrund der gegebenen Umstände besonders anbieten? In der Hauptsache dürften das wohl standortbezogene Dienste sein wie z. B. der klassische Tankstellen- oder Restaurantfinder. Grob lässt sich der Prozess des mobilen Webdesigns aber tatsächlich so wie von Ihnen genannt beschreiben: nämlich die Adaption der für Desktop-PCs gestalteten Website für kleinere Screens.</p>
<p><strong>Gilt heute nicht eher Handys und Smartphones zuerst, wenn es um das Design einer Seite geht?</strong><br />
Das kann so sein, muss aber nicht unbedingt. Zwar gibt es diverse Studien und Hochrechnungen von Expertengruppen, die besagen, dass in einigen Jahren bis zu 90 Prozent des Internettraffics über Handys und Smartphones abgewickelt werden wird. Doch davon sind wir immer noch ziemlich weit entfernt. Im Grunde genommen kann man sagen, dass in der heutigen Zeit sowohl die Desktop-Version als auch die mobile Version einer Website allmählich eine ähnlich hohe Priorität genießen sollten.</p>
<p><strong>Für welche mobilen Plattformen (OS) muss das mobile Design angeboten werden?</strong><br />
Die Fragmentierung der Plattformen erstreckt sich hier nicht, wie am Desktop, über 3 bis 4 große Browser, sondern über diverse Geräte mit diversen Betriebssystem-Versionen und entsprechend unterschiedlichen Browsern, die alle ihre Eigenarten haben. Ein aktuelles Must-have in Sachen mobile Plattformabdeckung sind, und das wird sich wohl auch in der nächsten Zeit erst einmal nicht ändern, natürlich die Platzhirsche Apples iOS und Android. Aber auch neue Systeme wie das Palm WebOS oder das neue BlackBerry OS 6 sollte man unbedingt im Auge behalten.</p>
<p><strong>Welche Schriftarten können mobile Geräte darstellen?</strong><br />
Neuere Browsergenerationen auf Smartphones unterstützen die Schrifteinbettung von CSS3 und könnten somit theoretisch jede beliebige Schrift darstellen. Bei älteren Geräten hatte man oft nur die Wahl zwischen serif und non-serif. Bei noch älteren gab es oft sogar nichtproportionale Monospace-Schriften. Die Zeiten haben wir inzwischen längst hinter uns gelassen. Mittlerweile sollte man ganz gut fahren, indem man auf die bekannten Desktop-Fonts setzt und als Fallback im CSS eben „serif“ oder „non-serif“ angibt. Das Thema Schrift ist dank CSS3 ein sehr komplexes.</p>
<p><strong>Mobil sein, heißt auch oft, auf das heimische schnelle WLAN verzichten zu müssen. Was sollte man weglassen an Ballast für mobile Seiten?</strong><br />
Der hier wohl sinnvollste Tipp ist, dass man große Bilder möglichst bereits serverseitig auf die Displaygröße des Geräts kleinskalieren sollte. Dabei helfen Dienste wie die eben bereits angesprochenen oder auch TinySrc (www.tinysrc.net). Wer dann noch auf einen sauberen und validen XHTML- oder HTML5-Quelltext achtet, der sollte mit einer langsamen Verbindung keine Probleme bekommen.</p>
<p><strong>Ist es überhaupt nötig, Websites an die Darstellung auf dem Smartphone anzupassen?</strong><br />
Ja. Auch wenn bspw. Apple damit wirbt, auch herkömmliche Websites komfortabel auf dem iPhone benutzen zu können, ist die Auslegung dieser Website doch immer eine andere. Nicht nur das Display ist kleiner, sondern auch die Bedienung und dadurch die komplette Usability. Das größte Problem beim Betrachten einer herkömmlichen Desktop-Website auf dem Handy ist gar nicht mal die Auflösung der Seite, sondern vielmehr die mangelhafte Bedienung. Es muss umständlich in die verschiedenen Seitenbereiche gezoomt werden, um den Text vernünftig lesen zu können, verlinkte Inhalte sind oft von der Klickfläche her zu klein, als dass man die Seite komfortabel bedienen kann.</p>
<p><strong>Bitte geben Sie unseren Lesern eine Checkliste, was sie unbedingt bei mobilen Seiten<br />
beachten sollten. Gerne auch technische Dinge.</strong><br />
Bei der Konzeption und Erstellung einer Seite für mobile Geräte sollte man sich einige Fragen<br />
stellen die hilfreich für den Erfolg der Seite sind:</p>
<ol>
<li>Wer wird wann, wo und aus welchem Grund meine Seite besuchen?</li>
<li>Welche Inhalte wird sich mein Besucher auf seinem kleinen Handydisplay tatsächlich<br />
anschauen oder durchlesen wollen?</li>
<li>Welchen Mehrwert kann ich meinem mobilen Besucher bieten? (Standortbezogene<br />
Zusatzdienste, automatisch verlinkte Telefonnummern, …).</li>
<li>Welche Geräte nutzt meine Zielgruppe überwiegend? (Im Nachgang hilfreich ist hier z.B.<br />
das Tracking von mobilen Besuchern in den ersten Wochen und Monaten nach dem<br />
Launch).</li>
</ol>
<p>Darüber hinaus sollte man darauf achten, dass man dem mobilen Benutzer immer die<br />
Möglichkeit bietet von einer mobilen Version auf die herkömmliche Desktop-Version navigieren<br />
zu können und von dieser auch immer wieder zurück auf die mobile Seite gelangt.</p>
<p><!-- 
<a href="http://manuelbieh.com/upload/InternetIntern_02_2011.pdf">Interview als PDF herunterladen</a> [674 KB]
--></p>
]]></content:encoded>
			<wfw:commentRss>https://2004.manuel-bieh.de/blog/mobiles-webdesign-konzeption-gestaltung-entwicklung/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xify jQuery-Plugin</title>
		<link>https://2004.manuel-bieh.de/blog/xify-jquery-plugin</link>
		<comments>https://2004.manuel-bieh.de/blog/xify-jquery-plugin#comments</comments>
		<pubDate>Tue, 15 Mar 2011 11:55:02 +0000</pubDate>
		<dc:creator><![CDATA[Manuel]]></dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mobile Web]]></category>
		<category><![CDATA[Webdev]]></category>

		<guid isPermaLink="false">http://www.manuel-bieh.de/blog/?p=658</guid>
		<description><![CDATA[[English version below!] Da ich die Funktion aus der iPhone-Safari Adressleiste schon immer sehr praktisch fand, und mir diese schon oft für Eingabefelder auf Websites gewünscht habe, habe ich mich gestern kurz hingesetzt und ein kleines jQuery-Plugin gebaut, welches mir diese Funktionalität abbildet. „Xify“ erzeugt einen X-Button zu einem Textfeld wie man ihn aus der [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><em>[English version below!]</em><br />
Da ich die Funktion aus der iPhone-Safari Adressleiste schon immer sehr praktisch fand, und mir diese schon oft für Eingabefelder auf Websites gewünscht habe, habe ich mich gestern kurz hingesetzt und ein kleines jQuery-Plugin gebaut, welches mir diese Funktionalität abbildet.</p>
<p>„Xify“ erzeugt einen X-Button zu einem Textfeld wie man ihn aus der Adressleiste des iPhone-Safari kennt. Ein Klick auf das Symbol löscht den kompletten Text des dazugehörigen Textfelds. Benötigt jQuery ab Version 1.2.3.</p>
<h3>Die Anwendung</h3>
<p><code>$('input:text').xify();</code><br />
<code>$('input:password').xify({color: "red"});</code></p>
<h3>Parameter</h3>
<dl>
<dt><code>color</code></dt>
<dd>Hintergrundfarbe des Buttons</dd>
<dd><strong>Typ:</strong> CSS Farbangabe</dd>
<dd><strong>Standardwert:</strong> #bbb</dd>
<dt><code>size</code></dt>
<dd>Größe des Buttons</dd>
<dd><strong>Typ:</strong> integer</dd>
<dd><strong>Standardwert:</strong> 12</dd>
<dt><code>left</code></dt>
<dd>Angabe um wieviel Pixel der Button im Eingabefeld nach links gerückt werden soll</dd>
<dd><strong>Typ:</strong> integer</dd>
<dd><strong>Standardwert:</strong> 4</dd>
<dt><code>callback</code></dt>
<dd>Callbackfunktion die aufgerufen wird, wenn das X geklickt wird. Muss true oder false zurückgeben.</dd>
<dd><strong>Typ:</strong> function</dd>
</dl>
<h3>Demo</h3>
<p><a href="http://www.manuel-bieh.de/publikationen/scripts/jquery/xify/">http://www.manuel-bieh.de/publikationen/scripts/jquery/xify/</a></p>
<h3>Download</h3>
<p><a href="http://plugins.jquery.com/project/xify">http://plugins.jquery.com/project/xify</a></p>
<h2>English description</h2>
<p>You can use this plugin to automatically add a small &#8222;X&#8220; to each input field to remove the current value by clicking or touching the X. You may know this function from the iPhone Safari URL bar. Requires jQuery 1.2.3+</p>
<h3>Usage</h3>
<p><code>$('input:text').xify();</code><br />
<code>$('input:password').xify({color: "red"});</code></p>
<h3>Parameters</h3>
<dl>
<dt><code>color</code></dt>
<dd>    Backgroundcolor of the button.</dd>
<dd>    <strong>Type:</strong> CSS color value</dd>
<dd>    <strong>Default:</strong> #bbb</dd>
<dt><code>size</code></dt>
<dd>    Size of the button.</dd>
<dd>    <strong>Type:</strong> integer</dd>
<dd>    <strong>Default:</strong> 12</dd>
<dt><code>left</code></dt>
<dd>    Amount of pixels the button is moved to the left within the input field.</dd>
<dd>    <strong>Type:</strong> integer</dd>
<dd>    <strong>Default:</strong> 4 </dd>
<dt><code>callback</code></dt>
<dd>Callback which is executed when the X is clicked. Must return true or false.</dd>
<dd><strong>Type:</strong> function</dd>
</dl>
<h3>Demo</h3>
<p><a href="http://www.manuel-bieh.de/publikationen/scripts/jquery/xify/">http://www.manuel-bieh.de/publikationen/scripts/jquery/xify/</a></p>
<h3>Download</h3>
<p><a href="http://plugins.jquery.com/project/xify">http://plugins.jquery.com/project/xify</a></p>
]]></content:encoded>
			<wfw:commentRss>https://2004.manuel-bieh.de/blog/xify-jquery-plugin/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Geolocation: und dein Browser weiß, wo du bist</title>
		<link>https://2004.manuel-bieh.de/blog/geolocation-und-dein-browser-weis-wo-du-bist</link>
		<comments>https://2004.manuel-bieh.de/blog/geolocation-und-dein-browser-weis-wo-du-bist#comments</comments>
		<pubDate>Fri, 18 Feb 2011 07:35:08 +0000</pubDate>
		<dc:creator><![CDATA[Manuel]]></dc:creator>
				<category><![CDATA[HTML5/CSS3]]></category>
		<category><![CDATA[Mobile Web]]></category>
		<category><![CDATA[Webdev]]></category>
		<category><![CDATA[Geolocation]]></category>
		<category><![CDATA[GPS]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://www.manuel-bieh.de/blog/?p=636</guid>
		<description><![CDATA[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, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>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 <a href="http://dev.w3.org/geo/api/spec-source.html">Geolocation API</a> hilft dabei.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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 <a href="http://code.google.com/p/geo-location-javascript/">Geo-location-javascript</a> oder <a href="http://code.google.com/p/better-geolocation-api/">Better Geolocation API</a>.</p>
<p>Eine generelle Unterstützung des Standards, ob vollständig oder nicht, gibt es im Wesentlichen bisher in den folgenden Browsern bzw. Geräten:</p>
<ul>
<li> Android Webkit und Dolphin HD</li>
<li> Apple iPhone/iPod Safari iOS 3.0+</li>
<li> Blackberry OS 4.1+</li>
<li> Firefox 3.5+ (&lt; 3.5 mit installiertem Geode Addon)</li>
<li> Google Chrome</li>
<li> Opera 10.6+</li>
<li> Alle Browser mit installiertem Google Gears</li>
</ul>
<p>Um eine Ortung in einem Browser durchzuführen, der den Standard korrekt implementiert, kann der folgende exemplarische Code verwendet werden:</p>
<pre></pre>
<p style="text-align: center;">
<img src="http://www.manuel-bieh.de/blog/wp-content/uploads/2011/02/geolocation1.jpg" alt="" style="border: 2px solid white;" /><img src="http://www.manuel-bieh.de/blog/wp-content/uploads/2011/02/geolocation2.jpg" alt="" style="border: 2px solid white;" />
</p>
<p><br style="clear: left;" />Zur Erklärung: Mittels <code>typeof(navigator.geolocation) != 'undefined'</code> wird abgefragt, ob der Browser des Benutzers die Geolokalisierung unterstützt. Daraufhin wird die Methode <code>getCurrentPosition()</code> aufgerufen, welche versucht, die aktuelle Position des Benutzers zu ermitteln. Gelingt dies, wird die als <code>successCallback</code> angegebene Funktion aufgerufen und ein Objekt <code>position</code> übergeben. Dieses erhält dann in <code>position.coords.longitude</code> bspw. den ermittelten Längengrad in Dezimalform (z.B. <em>7.45333164</em>).</p>
<p>Schlägt eine Ortung hingegen fehl, wird die als <code>errorCallback</code> 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.</p>
<p>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:</p>
<ul>
<li><code>enableHighAccuracy</code></li>
<li><code>maximumAge</code></li>
<li><code>timeout</code></li>
</ul>
<p>Die Eigenschaft <code>enableHighAccuracy</code> 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.</p>
<p>Über die Eigenschaft <code>maximumAge</code> 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.<br />
Mittels der dritten Eigenschaft, <code>timeout</code>, 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.</p>
<p>Neben der getCurrentPosition()-Methode, gibt es auch noch eine zweite Methode <code>watchPosition()</code>. 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, <code>clearWatch()</code>, mit der Rückgabe-ID des <code>watchPosition()</code> Aufrufs aufgerufen werden.</p>
<p>Am konkreten Beispiel:</p>
<pre></pre>
<p>Die <strong>Geolocation API</strong> 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.</p>
<p><em>Dieser Artikel entstand im Rahmen des <a href="http://www.webkrauts.de/2010/12/03/geolocation-und-dein-browser-weiss-wo-du-bist/">Webkrauts Adventskalenders</a> und wurde dort am 3. Dezember 2010 erstveröffentlicht.</em></p>
]]></content:encoded>
			<wfw:commentRss>https://2004.manuel-bieh.de/blog/geolocation-und-dein-browser-weis-wo-du-bist/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debugging: DOM Exception 7 am iPad</title>
		<link>https://2004.manuel-bieh.de/blog/debugging-dom-exception-7-am-ipad</link>
		<comments>https://2004.manuel-bieh.de/blog/debugging-dom-exception-7-am-ipad#comments</comments>
		<pubDate>Wed, 16 Feb 2011 14:55:12 +0000</pubDate>
		<dc:creator><![CDATA[Manuel]]></dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Webdev]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://www.manuel-bieh.de/blog/?p=631</guid>
		<description><![CDATA[Gestern habe ich mir beim Entwickeln einer WebApp für das iPad die Zähne ausgebissen an einem Problem das so simpel schien, ich aber trotzdem lange gebraucht habe um des Rätsels Lösung zu finden. Ich wollte dynamisch per XMLHttpRequest() einen &#60;style&#62;-Knoten nachladen und in mein aktuelles Dokument einfügen. Dazu nutzte ich den folgenden Code: Einfach, logisch, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Gestern habe ich mir beim Entwickeln einer WebApp für das iPad die Zähne ausgebissen an einem Problem das so simpel schien, ich aber trotzdem lange gebraucht habe um des Rätsels Lösung zu finden. Ich wollte dynamisch per <code>XMLHttpRequest()</code> einen <code>&lt;style&gt;</code>-Knoten nachladen und in mein aktuelles Dokument einfügen. Dazu nutzte ich den folgenden Code:</p>
<pre></pre>
<p>Einfach, logisch, funktioniert. Sollte man denken. Funktioniert am Desktop und am <strong>iPhone</strong> auch fantastisch, das iPad schmeißt mir hingegen den Fehler <em><strong>NO_MODIFICATION_ALLOWED_ERR DOM Exception 7</strong></em> und fügt keinen neuen <code>style</code>-Knoten in mein Dokument ein. Des Rätsels Lösung ist hier einfach und liegt am <code>innerHTML</code>. Diese Anweisung scheint das iPad bei Styles nicht zu interpretieren. Nutzen sollte man hier stattdessen:</p>
<pre></pre>
<p>Dann fügt auch das iPad ohne zu murren den Style ins Dokument.</p>
]]></content:encoded>
			<wfw:commentRss>https://2004.manuel-bieh.de/blog/debugging-dom-exception-7-am-ipad/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile Webentwicklung: warum nicht mal FITML?</title>
		<link>https://2004.manuel-bieh.de/blog/mobile-webentwicklung-warum-nicht-mal-fitml</link>
		<comments>https://2004.manuel-bieh.de/blog/mobile-webentwicklung-warum-nicht-mal-fitml#comments</comments>
		<pubDate>Thu, 10 Feb 2011 12:55:45 +0000</pubDate>
		<dc:creator><![CDATA[Manuel]]></dc:creator>
				<category><![CDATA[Mobile Web]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Webdev]]></category>
		<category><![CDATA[FITML]]></category>
		<category><![CDATA[FITML4]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Sevenval]]></category>

		<guid isPermaLink="false">http://www.manuel-bieh.de/blog/?p=625</guid>
		<description><![CDATA[Wer dieser Tage eine mobile Website erstellen möchte findet dafür eine ganze Menge Alternativen am Markt, die allesamt schnellen Erfolg versprechen. Für iPhone, iPad und Android-Geräte sprießen die JavaScript-Frameworks nur so aus dem Boden. Da hätten wir zum Beispiel SenchaTouch, jqTouch oder jQueryMobile um nur die bekanntesten Vertreter zu nennen. Wer darüber hinaus, auf kommerzieller [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Wer dieser Tage eine mobile Website erstellen möchte findet dafür eine ganze Menge Alternativen am Markt, die allesamt schnellen Erfolg versprechen. Für iPhone, iPad und Android-Geräte sprießen die JavaScript-Frameworks nur so aus dem Boden. Da hätten wir zum Beispiel <a href="http://www.sencha.com">SenchaTouch</a>, <a href="http://jqtouch.com/">jqTouch</a> oder <a href="http://jquerymobile.com/">jQueryMobile</a> um nur die bekanntesten Vertreter zu nennen. Wer darüber hinaus, auf kommerzieller Ebene, „etwas mehr“ möchte, für den hat mein derzeitiger Arbeitgeber <a href="http://www.sevenval.de">Sevenval</a> gerade eine sehr schöne Alternative im Angebot: <strong>FITML4</strong>. </p>
<p>FITML ist eine eigens auf mobile Aspekte optimierte Markup-Sprache mit der einfach und komfortabel eine <em>mobile Multi-Channel Website</em> erstellt werden kann. Anders als bei den oben genannten Frameworks wird dabei nicht ausschließlich auf JavaScript gesetzt und ältere Geräte und Nicht-Smartphones somit oftmals ausgeschlossen, sondern es wird für jedes Gerät die jeweils bestmögliche Variante ausgeliefert und das in der Regel – mit nur sehr wenig Mehraufwand (größtenteils sogar völlig ohne!) – vollautomatisch.</p>
<p>So kann man als Entwickler, um mal ein kleines Beispiel zu nennen, auf einfache Art und Weise ein JavaScript-Carousel in die Website integrieren bei dem auf Touch-Geräten per Wischgeste ein Element weiter geblättert werden kann, während alte Nokia-Geräte mit nur begrenzter JavaScript-Funktionalität eine statische Version mit serverseitigem Fallback und dem klassischen „Weiter“-Button ausgeliefert bekommen. Dafür, dass auch stets die richtige Variante der Website ausgeliefert wird, sorgt eine eigene Geräte-Datenbank die OpenSource-Alternativen wie WURFL aber auch kommerzielle Kollegen wie z.B. DeviceAtlas in Sachen Zuverlässigkeit teilweise deutlich aussticht und auch wesentlich detailliertere Auswahlmöglichkeiten bietet.</p>
<p>Die FITML-Markup selbst ist eine im Microformat-Stil angereicherte, gewöhnliche HTML-Syntax in die ein gewöhnlicher HTML-Frontend-Entwickler sich rasch eingearbeitet haben sollte, auch wenn die vielen div-Elemente im ersten Moment sicher gewöhnungsbedürftig anmuten. Ich selbst musste jedenfalls, als ich hier im Oktober 2010 meinen Dienst antrat erstmal durchatmen. Davon sollte man sich im ersten Moment aber nicht abschrecken lassen, die Ergebnisse die man mit FITML binnen kürzester Zeit bekommen kann entschädigen für alles. Ich denke, wer tatsächlich auf kommerzieller Ebene mobile High-Performance Websites entwickeln möchte sollte tatsächlich mal, vielleicht auch in der Mittagspause, länger als nur 5 Minuten probieren sich in FITML einzuarbeiten, und das sage ich nicht aus dem Grund, weil ich selbst bei Sevenval beschäftigt bin sondern weil ich die Fallbackfähigkeit bei den ansonsten wirklich geilen Frameworks doch schon des Öfteren schmerzlich vermisst habe.</p>
<p>Warum ich überhaupt probiere euch das schmackhaft zu machen? Aktuell befindet sich FITML in der Version 4 noch in der <strong>Private Beta Phase</strong>. Wer möchte kann schon mal einen exklusiven Blick auf FITML4 werfen und auch eigene Websites erstellen und für die Zeit der Beta-Phase auch kostenfrei betreiben. Wenn ihr also tatsächlich Interesse haben solltet, in nächster Zeit mobile Projekte ins Haus stehen oder ihr einfach nur neugierig sein solltet, dann könnt ihr einfach hier nachlesen, was ihr dazu tun müsst um am Beta-Programm teilnehmen zu können: <a href="http://www.sevenval.com/de/news/FITML4_Private-Beta_FIT-Platform.html">http://www.sevenval.com/de/news/FITML4_Private-Beta_FIT-Platform.html</a>. <strike>Wer nicht bei Twitter ist, für den kann ich sicherlich auch anders einen Beta-Zugang besorgen. Ein Exklusiv-Service für Blogleser, sozusagen ;-). Hinterlasst einfach euren Namen und eure E-Mail-Adresse hier in den Kommentaren.</strike> Update: Die Beta-Zugänge werden ausschließlich über Twitter vergeben! Wer teilnehmen möchte der loggt sich bei seinem Twitter Account ein und schickt eine kurze Reply an <a href="http://www.twitter.com/fitml">@fitml</a>!</p>
<p>Da die Entwicklung von FITML4 sehr Entwickler- und Community forciert ist werde ich (u.A.) hier in nächster Zeit wohl immer mal wieder den einen oder anderen nützlichen Tipp zu FITML geben.</p>
<p>Und nun wünsch ich euch viel Spaß beim Ausprobieren! ;-)</p>
]]></content:encoded>
			<wfw:commentRss>https://2004.manuel-bieh.de/blog/mobile-webentwicklung-warum-nicht-mal-fitml/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Was war, was wird? Prognosen für 2011</title>
		<link>https://2004.manuel-bieh.de/blog/was-war-was-wird-prognosen-fuer-2011</link>
		<comments>https://2004.manuel-bieh.de/blog/was-war-was-wird-prognosen-fuer-2011#comments</comments>
		<pubDate>Thu, 16 Dec 2010 07:45:00 +0000</pubDate>
		<dc:creator><![CDATA[Manuel]]></dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[HTML5/CSS3]]></category>
		<category><![CDATA[Manuel]]></category>
		<category><![CDATA[Mobile Web]]></category>

		<guid isPermaLink="false">http://www.manuel-bieh.de/blog/?p=613</guid>
		<description><![CDATA[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 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>
<figure><img src="/blog/wp-content/uploads/2010/12/1180239.jpg" alt="" /><br />
<figcaption>Bild: <a href="http://www.sxc.hu/profile/CJLUC">CJLUC</a></figcaption>
</figure>
<p>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.</p>
<h2>Was wird uns 2011 nicht bieten?</h2>
<p>Eins vorab, da ich da schon 2010 drüber schmunzeln musste: auch 2011 wird nicht das Jahr des Mega-Durchbruchs von <strong>Augmented Reality</strong>, 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.</p>
<h2>… und was wird 2011 uns bieten?</h2>
<p><strong>HTML5</strong> 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 <strong>CSS3</strong> 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.</p>
<p>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.</p>
<h2>Big in 2011</h2>
<p><strong>Mobile Marketing</strong> und <strong>mobile Advertising</strong> (und irgendwie auch <strong>mobile Commerce</strong>). 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.</p>
<p>Mobile, mobile, mobile und es nimmt kein Ende: <strong>Location Based Services</strong>. 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 <a href="http://www.webkrauts.de/2010/12/03/geolocation-und-dein-browser-weiss-wo-du-bist/">W3C Geolocation API</a> (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 <a href="http://www.foursquare.com">Foursquare</a>, <a href="http://www.gowalla.com">GoWalla</a>, <a href="http://www.google.com/latitude">Latitude</a>, <a href="http://www.loca.li">Loca.li</a> oder <a href="http://www.facebook.com/places/">Places</a> 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.</p>
<h2>Facebook und das Wachstum</h2>
<p>Gerade sprach ich kurz Places an: <strong>Facebook</strong> 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.</p>
<h2>What about Google?</h2>
<p>Um <strong>Google</strong> 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 <a href="http://de.wikipedia.org/wiki/Google_Wave">Google Wave</a>, 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 <strong>Chrome OS</strong> 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.</p>
<h2>Die Startup-Szene</h2>
<p>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 <strong>Citydeal</strong>, 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 <a href="http://www.teameurope.net/"><strong>Team Europe</strong></a>, <a href="http://www.europeanfounders.com"><strong>European Founders</strong></a> und vor allem <a href="http://www.hackfwd.com"><strong>Hackfwd</strong></a> so alles beteiligen werden und auf diese Beteiligungen mal ein Auge zu werfen. Persönlich klingt <a href="http://www.loved.by"><strong>loved.by</strong></a> so, als könnte das am ehesten überzeugen. Man wird sehen.</p>
<h2>2011 – das Jahr der Browsergames?</h2>
<p>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 <strong>Farm-, Frontier- und Cityville, Brainbuddies</strong> oder sonst was bei Facebook anschaue in 2011 richtig durchstarten werden. Sehr gespannt bin ich auf <strong>Fliplife</strong> und auch im Hackfwd-Portfolio sind Browser-Games vertreten. Wenn man sich überlegt, dass auch der Browsergame-Hersteller <a href="http://www.zynga.com/">Zynga</a> nach eigenen Angaben eine halbe Milliarde Dollar Umsatz machen wird ist der <strong>Social Gaming</strong>-Markt wohl neben dem Mobile-Markt einer der Wachstumsmärkte mit dem meisten Potential.</p>
<h2>Fazit</h2>
<p>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!</p>
]]></content:encoded>
			<wfw:commentRss>https://2004.manuel-bieh.de/blog/was-war-was-wird-prognosen-fuer-2011/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Online-Adventskalender für Web-Developer</title>
		<link>https://2004.manuel-bieh.de/blog/online-adventskalender-fur-web-developer</link>
		<comments>https://2004.manuel-bieh.de/blog/online-adventskalender-fur-web-developer#comments</comments>
		<pubDate>Mon, 13 Dec 2010 07:35:07 +0000</pubDate>
		<dc:creator><![CDATA[Manuel]]></dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[Webdev]]></category>
		<category><![CDATA[Advent]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML5]]></category>

		<guid isPermaLink="false">http://www.manuel-bieh.de/blog/?p=608</guid>
		<description><![CDATA[Da ich es immer wieder schön finde in der Adventszeit täglich einen neuen Artikel in den zahlreichen „Web-Adventskalendern“ zu lesen, hier mal eine kleine Auflistung an schicken Kalendern die ich so gefunden habe in der Zwischenzeit: Webkrauts – deutsche Artikel zum Thema Internet. Schwerpunkt dieses Jahr: Kunden Maddesigns.de + Webstandardsblog – zwei Seiten, eine Kooperation: [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Da ich es immer wieder schön finde in der Adventszeit täglich einen neuen Artikel in den zahlreichen „Web-Adventskalendern“ zu lesen, hier mal eine kleine Auflistung an schicken Kalendern die ich so gefunden habe in der Zwischenzeit:</p>
<ul>
<li><a href="http://www.webkrauts.de/category/adventskalender/adventskalender-2010/">Webkrauts</a> – deutsche Artikel zum Thema Internet. Schwerpunkt dieses Jahr: Kunden</li>
<li><a href="http://www.maddesigns.de/">Maddesigns.de</a> + <a href="http://webstandard.kulando.de">Webstandardsblog</a> – zwei Seiten, eine Kooperation: ein deutscher Kalender mit vielen Praxisbeispielen was heute schon mit CSS3 möglich ist oder bald sein wird</li>
<li><a href="http://www.24ways.org/2010">24 ways to impress your friends</a> – englisch, in den letzten Jahren oftmals mit innovativen und sehr sehenswerten Praxisbeispielen</li>
<li><a href="http://phpadvent.org/2010">PHP Advent</a> – englisch, wie der Name vermuten lässt mit dem Schwerpunkt PHP-Entwicklung</li>
<li><a href="http://html5advent.com">HTML5Adventure Calendar 2010</a> – ebenfalls englisch, jeden Tag ein beeindruckendes Beispiel was mit HTML5 möglich ist</li>
</ul>
<p>Bei den Webkrauts sei noch darauf hingewiesen, dass sich hinter dem <a href="http://www.webkrauts.de/2010/12/03/geolocation-und-dein-browser-weiss-wo-du-bist/">dritten Törchen</a> ein Artikel von mir zum Thema „Geolocation API“ befindet. Wünsche euch viel Spaß an den kommenden 11 Tagen an denen ein „Törchen“ geöffnet wird. Solltet ihr noch themenrelevante Kalender kennen die hier nicht gelistet sind: ich freue mich über einen Hinweis als Kommentar!</p>
]]></content:encoded>
			<wfw:commentRss>https://2004.manuel-bieh.de/blog/online-adventskalender-fur-web-developer/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>W3C Geolocation API Polyfill</title>
		<link>https://2004.manuel-bieh.de/blog/w3c-geolocation-api-polyfill</link>
		<comments>https://2004.manuel-bieh.de/blog/w3c-geolocation-api-polyfill#comments</comments>
		<pubDate>Sun, 29 Aug 2010 20:21:55 +0000</pubDate>
		<dc:creator><![CDATA[Manuel]]></dc:creator>
				<category><![CDATA[Mobile Web]]></category>
		<category><![CDATA[Webdev]]></category>
		<category><![CDATA[Geolocation]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[LBS]]></category>
		<category><![CDATA[Location Based Services]]></category>
		<category><![CDATA[Polyfill]]></category>

		<guid isPermaLink="false">http://www.manuel-bieh.de/blog/?p=600</guid>
		<description><![CDATA[Ich habe meine freie Zeit gerade etwas genutzt um ein Javascript zu erstellen, mit dem man aus dem Browser heraus auf eine einheitliche Geolocation API zugreifen kann. Aktuell unterstützt das Script offiziell die folgenden Browser: Android Webkit Android Dolphin HD Apple iPhone/iPod Safari iOS 3.0+ Blackberry OS 4.1+ Firefox 3.5+ Firefox &#60; 3.5 mit Geode [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Ich habe meine freie Zeit gerade etwas genutzt um ein Javascript zu erstellen, mit dem man aus dem Browser heraus auf eine einheitliche Geolocation API zugreifen kann. Aktuell unterstützt das Script offiziell die folgenden Browser:</p>
<ul>
<li> Android Webkit</li>
<li> Android Dolphin HD</li>
<li> Apple iPhone/iPod Safari iOS 3.0+</li>
<li> Blackberry OS 4.1+</li>
<li> Firefox 3.5+</li>
<li> Firefox &lt; 3.5 mit Geode Addon</li>
<li> Google Chrome</li>
<li> Opera 10.6+</li>
<li> Alle Browsers mit installiertem Google Gears</li>
</ul>
<p>Andere Browser bieten zur Zeit keine Unterstützung für Geolocation (korrigiert mich bitte wenn ich einem Browser Unrecht tue).</p>
<h3>Wie wird das Script verwendet?</h3>
<p>Das Script muss einfach vor dem ersten Geolocation Request eines Dokuments mittels <code>&lt;script src="geolocation.js"&gt;&lt;/script&gt;</code> eingebunden werden. Danach kann einheitlich durch <code>navigator.geolocation.*</code> auf die Methoden aus dem <a href="http://www.w3.org/TR/geolocation-API/">W3C Standard</a> zugegriffen werden. Namentlich sind das <code>getCurrentPosition()</code>, <code>watchPosition()</code> und <code>clearWatch()</code>.</p>
<p>Das Script mappt dann die proprietären Abfragemethoden (Blackberry Location, Google Gears) auf das <code>navigator.geolocation</code> Objekt und stellt eine einheitliche API zur Abfrage bereit. </p>
<h3>Demo</h3>
<p><a href="http://2004.manuel-bieh.de/publikationen/scripts/geolocation/demo.html">http://www.manuel-bieh.de/publikationen/scripts/geolocation/demo.html</a></p>
<h3>Download</h3>
<p>Das Script gibt es bei Github und auf Google Code. Zieht es euch dort, wo es euch lieber ist. Ich halte für gewöhnlich beide Versionen auf dem aktuellen Stand<br />
Google Code: <a href="http://code.google.com/p/better-geolocation-api/">http://code.google.com/p/better-geolocation-api/</a><br />
Github: <a href="https://github.com/manuelbieh/Geolocation-API-Polyfill">https://github.com/manuelbieh/Geolocation-API-Polyfill</a></p>
]]></content:encoded>
			<wfw:commentRss>https://2004.manuel-bieh.de/blog/w3c-geolocation-api-polyfill/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Bin wieder da und kann wieder bloggen</title>
		<link>https://2004.manuel-bieh.de/blog/bin-wieder-da-und-kann-wieder-bloggen</link>
		<comments>https://2004.manuel-bieh.de/blog/bin-wieder-da-und-kann-wieder-bloggen#comments</comments>
		<pubDate>Tue, 23 Mar 2010 13:33:27 +0000</pubDate>
		<dc:creator><![CDATA[Manuel]]></dc:creator>
				<category><![CDATA[Manuel]]></category>
		<category><![CDATA[Webdev]]></category>

		<guid isPermaLink="false">http://www.manuel-bieh.de/blog/?p=592</guid>
		<description><![CDATA[Hach, herrlich. Nachdem irgendeine Sicherheitslücke in einem lang nicht mehr aktualisierten WordPress zur Folge hatte das mein Blog-Backend nicht mehr funktionierte, kam ich am Wochenende endlich dazu mal die brandaktuelle Version 2.9.2 hier aufzuspielen. Nun funktioniert, nach Monaten(!) in denen ich nicht die Zeit hatte oder die Lust fand mein System upzugraden, auch das Backend [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Hach, herrlich. Nachdem irgendeine Sicherheitslücke in einem lang nicht mehr aktualisierten WordPress zur Folge hatte das mein Blog-Backend nicht mehr funktionierte, kam ich am Wochenende endlich dazu mal die brandaktuelle Version 2.9.2 hier aufzuspielen.</p>
<p>Nun funktioniert, nach Monaten(!) in denen ich nicht die Zeit hatte oder die Lust fand mein System upzugraden, auch das Backend wieder fehlerfrei, so dass ich in Zukunft hier auch mal wieder etwas veröffentlichen kann. Zwar hab ich dazu wegen Studium und Arbeit nur sehr wenig Zeit dafür, 10 Minuten für kleinere Beiträge kann man aber ja eigentlich immer irgendwo abzwacken.</p>
<p>Ist jedenfalls ein schönes Gefühl endlich wieder bloggen zu können. Solltet ihr irgendwo noch einen Fehler finden der möglicherweise im Update seine Ursache findet, so gebt mir doch bitte kurz Bescheid.</p>
<p>Abschließend möchte ich noch darauf hinweisen, dass ich (mit einigen sehr wenigen Modifikationen) vom Code her noch immer das gleiche Template benutze wie bei der ersten Version dieses Blogs vor ziemlich genau 5 Jahren, als hier noch WordPress 1.2 Verwendung fand. Und es funktioniert tatsächlich immer noch. Das fasziniert mich ein wenig.</p>
]]></content:encoded>
			<wfw:commentRss>https://2004.manuel-bieh.de/blog/bin-wieder-da-und-kann-wieder-bloggen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
