<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/">

    <channel>
    
    <title>High Resolution Weblog</title>
    <link>http://www.highresolution.info</link>
    <description>Das Weblog über Digitale Fotografie // Bildbearbeitung // Webdesign von Dirk Jesse</description>
    <dc:language>de</dc:language>
    <dc:creator>info@highresolution.de</dc:creator>
    <dc:rights>Copyright 2012</dc:rights>
    <dc:date>2012-04-13T14:58:31+00:00</dc:date>
    <admin:generatorAgent rdf:resource="http://www.pmachine.com/" />
    

    <item>
      <title>HTML5 mit Polyfills und ihren Fallstricken</title>
      <link><![CDATA[http://www.highresolution.info/weblog/entry/html5_mit_polyfills_und_ihren_fallstricken/]]></link>
      <description>Die Fragen danach, ob man HTML5 bereits produktiv einsetzen kann, werden zunehmend weniger. Es hat sich die allgemeine Sichtweise durchgesetzt, das dem so ist. Um dabei auch die alten Browser(&#45;versionen) nicht au&#223;en vor zu lassen und die zahlreichen neuen HTML5&#45;Elemente und JavaScript APIs browser&#252;bergreifend nutzen zu k&#246;nnen, stehen zahlreiche Polyfills zur Verf&#252;gung. Die Aufgabe eines Polyfills ist es, die Funktionalit&#228;t eines HTML5 Features mit Hilfe von JavaScript nachzubilden.
Vor wenigen Tagen ist die erste Ausgabe eines brandneuen, deutschsprachigen Online&#45;Magazins namens mag.js erschienen und darin ein lesenswerter Beitrag von Matthias Reuter zum Thema &#8220;Mit jQuery alten Browsern HTML5 beibringen&#8221;. Darin beschreibt er, wie mittels jQuery das Placeholder&#45;Attribut in alten Browsern nachger&#252;stet werden kann.

Das Placeholder&#45;Attribut liefert einen zus&#228;tzlichen Hilfetext f&#252;r Formularelemente (&amp;lt;input&amp;gt;, &amp;lt;textarea&amp;gt;), der immer dann erscheint, wenn das betreffende Formularfeld leer und nicht focussiert ist. Man kennt derartige Hilfetexte schon seit langer Zeit (seinerzeit vielfach &#252;ber Inline&#45;Event&#45;Handler zusammengebaut), weshalb das Placeholder&#45;Attribut auch eines der HTML5&#45;Features war, die bereits fr&#252;hzeitig in allen modernen Browsern implementiert wurden.</description>
      <dc:subject>JavaScript, Webdesign</dc:subject>
      <content:encoded><![CDATA[ <p>Die Fragen danach, <a href="http://codecandies.de/2009/01/14/neue-html5-elemente/" title="ob man HTML5 bereits produktiv einsetzen kann">ob man HTML5 bereits produktiv einsetzen kann</a>, werden zunehmend weniger. Es hat sich die allgemeine Sichtweise durchgesetzt, <a href="http://html5please.com/" title="das dem so ist">das dem so ist</a>. Um dabei auch die alten Browser(-versionen) nicht au&#223;en vor zu lassen und die zahlreichen neuen HTML5-Elemente und JavaScript APIs browser&#252;bergreifend nutzen zu k&#246;nnen, stehen zahlreiche Polyfills zur Verf&#252;gung. Die Aufgabe eines Polyfills ist es, die Funktionalit&#228;t eines HTML5 Features mit Hilfe von JavaScript nachzubilden.
</p> <p>Vor wenigen Tagen ist die erste Ausgabe eines brandneuen, deutschsprachigen Online-Magazins namens <a href="http://www.magjs.de/" title="mag.js">mag.js</a> erschienen und darin ein lesenswerter Beitrag von Matthias Reuter zum Thema &#8220;<a href="http://www.magjs.de/reuter/reuter.html" title="Mit jQuery alten Browsern HTML5 beibringen">Mit jQuery alten Browsern HTML5 beibringen</a>&#8221;. Darin beschreibt er, wie mittels jQuery das Placeholder-Attribut in alten Browsern nachger&#252;stet werden kann.</p>

<p>Das Placeholder-Attribut liefert einen zus&#228;tzlichen Hilfetext f&#252;r Formularelemente (<code>&lt;input&gt;</code>, <code>&lt;textarea&gt;</code>), der immer dann erscheint, wenn das betreffende Formularfeld leer und nicht focussiert ist. Man kennt derartige Hilfetexte schon seit langer Zeit (seinerzeit vielfach &#252;ber Inline-Event-Handler zusammengebaut), weshalb das Placeholder-Attribut auch eines der HTML5-Features war, die bereits fr&#252;hzeitig in allen modernen Browsern implementiert wurden.
</p> <p>Aber zur&#252;ck zum JS-Beispiel des oben genannten Beitrags. Das Beispiel zeigt mit sauberem und gut dokumentiertem Code, wie man mittels weniger Zeilen JavaScript den Placeholder-Text &#252;ber das <em>blur</em>-Event als Wert in das leere Formularfeld schreibt (der Platzhalter wird sichtbar), bzw. &#252;ber das <em>focus</em>-Event wieder l&#246;scht, um Nutzereingaben zu erm&#246;glichen. Und an dieser Stelle beginnen auch die Probleme mit der nachtr&#228;glichen Implementation, denn es wird ein Wert (der Platzhalter) in das Formularfeld geschrieben, der eigentlich keiner ist.</p>

<p>Matthias Reuter ist sich dieses Problems auch bewusst, denn vor dem Absenden des Formulars m&#252;ssen die eingef&#252;gten Platzhalter nat&#252;rlich wieder entfernt werden, um nicht als vermeintlich g&#252;ltige Werte an den Server gesandt zu werden. Daf&#252;r h&#228;ngt sich das Script in den Submit-Event.</p>

<p>Das alles ist sauber und ist auch problemlos einsetzbar, solange &#8220;nur&#8221; ein HTML-Formular dargestellt und die Daten an einen Server versandt werden sollen. Allerdings gibt es auch Anwendungsf&#228;lle, die dar&#252;ber hinaus gehen und wobei dieses und die meisten anderen Placeholder-Polyfills versagen. Das Problem der vorstellten Implementation ist, dass die Implementation des Polyfills nicht scriptf&#228;hig ist, also keinen dynamischen Zugriff auf den Wert des Formularfeldes per JaveScript ber&#252;cksichtigt. </p>

<pre name="code" class="javascript:nocontrols">$('input').val();</pre>

<p>Es macht einen Unterschied, ob der Polyfill aktiv ist oder die native Implementation des Browsers, denn w&#228;hrend in einem modernen Browser die Abfrage eines leeren Inputfelds ein leerer String ergibt, erh&#228;lt man bei aktivem Polyfill den Wert des Placeholders zur&#252;ck. Ein Zustandstest im Sinne von: </p>

<pre name="code" class="javascript:nocontrols">if ($('input').val() == "") { 
    // do something
}</pre>

<p>... ist deshalb crossbrowser nicht mehr fehlerfrei m&#246;glich. Und das f&#228;llt einem m&#246;glicherweise bei der clientseitigen Formularvalidierung und insbesondere bei der Entwicklung von Webapps mit Formularelementen unangenehm auf die F&#252;&#223;e. Ich habe daf&#252;r ein kleine <a href="http://jsfiddle.net/djesse/8B45S/" title="Demo">Demo</a> (JSFiddle) mit dem Plugin-Code von Matthias Reuter gebaut. Schaut Euch das Ergebnis der Input-Abfrage einfach mal im IE8 oder dem Firefox 3.6 an.</p>

<p>Unter <a href="html5-now.appspot.com" title="html5-now.appspot.com">html5-now.appspot.com</a> kann man denn bez&#252;glich des placeholder-Attributs nachlesen: <em>&#8220;It&#8217;s easy to replicate but not in a satisfactory way.&#8221; </em></p>

<p>Genau diese Situation empfinde ich momentan als so schwierig f&#252;r Frontend Entwickler, denn einerseits gibt es zur L&#246;sung dieses Problems allein im <a href="https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills" title="Modernizr Wiki">Modernizr Wiki</a> nicht weniger als 11 verschiedene Implementationen, wobei man entweder per trail &amp; error herausbekommt, ob der Polyfill in der eigenen Applikation so arbeiten wird, wie man es erwarten w&#252;rde, oder sich m&#252;hsam durch den jeweiligen Code graben muss, um m&#246;gliche Schwachstellen zu entdecken, die in der Dokumentation nur allzu gern verschwiegen werden. Mit anderen HTML5 Features verh&#228;lt es sich &#228;hnlich. Viele Polyfills decken genau das ab, was der Entwickler f&#252;r die eigene Anwendung ben&#246;tigte. Aber nur die wenigsten Projekte schreiben sich die exakte Abbildung der Spezifikation ins Pflichtenheft und pfegen ihre Polyfills regelm&#228;&#223;ig.</p>

<p>Das von <a href="http://html5please.com/" title="html5please">html5please</a> quasi &#8220;offiziell&#8221; empfohlene <a href="https://github.com/mathiasbynens/jquery-placeholder/blob/master/jquery.placeholder.js" title="Placeholder-Polyfill">Placeholder-Polyfill</a> macht vom Code her einen guten Eindruck, denn es sind get- und set-Funktionen f&#252;r die Werte&#252;bergabe vorhanden. Getestet habe ich es nicht, denn ich verlasse mich bei Polyfills bereits seit einiger Zeit auf die stetig wachsende und kontinuierlich gepflegte <a href="http://afarkas.github.com/webshim/demos/" title="Webshims Lib">Webshims Lib</a> von Alexander Farkas. </p>

<p>Der gro&#223;e Vorteil dieser Bibliothek ist einerseits, dass sie sehr einfach konfiguriert werden kann und mithilfe von z.B. yepnope selbstst&#228;ndig alle entsprechend der Konfiguration ben&#246;tigten Features testet und ben&#246;tigte Polyfills selbstst&#228;ndig nachl&#228;d und andererseits, das sich Alexander Farkas bei allem stets an der Spezifikation orientiert und auf die scriptf&#228;higkeit seiner Polyfills achtet. Dazu geh&#246;ren auch Hilfsfunktionen, die beispielsweise das dynamische Einf&#252;gen von HTML5-Elementen ins DOM erm&#246;glichen &ndash; ein f&#252;r komplexere Webapplikationen unersetzliches Feature. Erst seit ich diese Bibliothek kenne, setze ich HTML5 Features bewusst und weitgehend ohne Bauchschmerzen in meinen eigenen Projekten ein.</p>

<p>Bleibt zu sagen: Augen auf bei der Arbeit mit Polyfills. <em>&#8220;Einfach nur einen Brocken JavaScript auf das Problem werfen und fertig&#8221;</em> &dash; ist eine sch&#246;ne Vorstellung, funktioniert in der Praxis leider allzu oft nicht zufriedenstellend.</p>

<p>&nbsp;</p>]]></content:encoded>
      <dc:date>2012-04-13T14:58:31+00:00</dc:date>
    </item>

    <item>
      <title>CSS: The Missing Parts</title>
      <link><![CDATA[http://www.highresolution.info/weblog/entry/css_the_missing_parts/]]></link>
      <description>Ein wenig &#252;berrascht war ich ja schon, ob der zahlreichen Reaktionen auf meinen Blogbeitrag &#8220;Von fliegenden K&#252;hen und anderen Merkw&#252;rdigkeiten&#8221; und deshalb m&#246;chte ich mit diesem Folgebeitrag ein paar Dinge erg&#228;nzen, die mir aktuell in der aktuellen Weiterentwicklung von CSS fehlen, also die &#8220;missing parts&#8221; von CSS.
Nochmal zu Floats
Das Konzept, ein Layout zu beschreiben, indem man einzelnen Elementen eine Breite x zuweist und lediglich deren Ausrichtung links&#45; oder rechtsb&#252;ndig innerhalb des Elternelements bestimmt, ist keine Erfindung von CSS. Sowas gibt es schon sehr viel l&#228;nger. Ich kenne ein solches System beispielsweise von der Erstellung von Benutzeroberfl&#228;chen f&#252;r den Amiga. Bei Software f&#252;r dessen dessen Desktop&#45;Oberfl&#228;che (Workbench) war schon in den 80er Jahren schlau, sich auf sehr unterschiedliche Bildschirmaufl&#246;sungen und skalierbare Fonts einzustellen. Aus diesem Grund waren Floats f&#252;r mich auch nie ein Mittel, welches allein zur Contentgestaltung herangezogen werden sollte. Wenn dem so w&#228;re, h&#228;tte man im CSS Standard die Eigenschaft float auch einfach nur f&#252;r das Image&#45;Element definieren k&#246;nnen. Dem ist aber nicht so.

Ich setze Floats seither sehr gern ein, weil ich sie mittlerweile in allen Browsern sehr robust geworden sind auch f&#252;r die &#228;lteren Browsergenerationen gut dokumentierte, stabile Workarounds f&#252;r die wichtigsten Bugs existieren. Nicht umsonst arbeiten die Layoutmodule von YAML mit Floats.

Dennoch w&#252;nsche ich mir eine Verbesserung der aktuellen Situation, denn auch wenn ich bisher fast jedes an mich herangetragene CSS&#45;Problem l&#246;sen konnte, ist dies in &amp;ndash; aus meiner Sicht zuvielen praxisrelevanten Standardaufgaben &amp;ndash; nur m&#252;hsam zu erreichen. Als Beispiele w&#228;ren da ...

Containing Floats
Wir ben&#246;tigen eine Eigenschaft, die es erm&#246;glicht, floatende Elemente durch den Elterncontainer sauber umschlie&#223;en zu lassen. Aktuell nutzen wir dazu CSS&#45;Eigenschaften wie overflow:hidden oder display:table, die diesen Effekt quasi als Nebenprodukt mitliefern. Da es uns in diesen F&#228;llen aber gar nicht um das Verstecken &#252;bergro&#223;er Elemente (overflow:hidden) oder das Rendern von Tabellen (display:table) geht, schleppen wir die Auswirkungen dieser Eigenschaften als st&#246;rende Nebeneffekte zwangsl&#228;ufig mit.

Was wir ben&#246;tigen, damit Floats leichter handhabbar werden, ist CSS&#45;Eigenschaft, die das Einschlie&#223;en floatender Kind&#45;Elemente zur Hauptaufgabe macht, wie z.B float:contain;. Die vom CSS&#45;Standard dem am n&#228;chsten kommende Eigenschaft ist clear. Allerdings ist sie f&#252;r Inhaltskonzepte konzipiert, weswegen ihre Wirkungsweise uns f&#252;r Layoutzwecke solche Probleme bereitet und uns an diesem Punkt nicht weiterhilft.

Flexible Breiten &amp;amp; Source Order
Bei der Umsetzung flexibler (responsive) Layouts st&#246;&#223;t man unweigerlich auf Probleme, wenn fixe und flexible Seitenbereiche nebeneinander zu platzieren sind. Wir platzieren sekund&#228;re Inhalte typischerweise am Rand (Stichwort: Sidebar), neben den zentral gelegenen Hauptinhalten. Die Reihenfolge der Inhalte im Quelltext sollte die Relevanz nat&#252;rlich widerspiegeln, womit auch hier erst der Hauptinhalt und dann die sekund&#228;ren Infos folgen sollten. Diese Markupkonstellation stellt uns aber hinsichtlich des Layouts mit Floats vor ein konzeptionelles Problem, da laut CSS&#45;Standard das Element, welches umflossen werden soll (hier bricht die inhaltsbezogene Ansatz von Floats im CSS&#45;Standard durch), im Quelltext zwingend vor den Elementen, stehen muss, die es umflie&#223;en (man achte auf die aktive/passive Formulierung).

Das Problem sind hier nicht die Floats ansich, sondern dass wir kein Layout&#45;Modul in CSS kennen, welches dieser Aufgabe gewachsen ist. Die Aufgabe besteht darin, die zur Verf&#252;gung stehende Gesamtbreite in einen Bereich mit definierter Breite (Ma&#223;einheit em,% oder px) und einen flexiblen Rest zu unterteilen. Genau dieser flexible Rest ist in CSS nur f&#252;r statische Elemente spezifiziert &#252;ber width:auto. Auf positionierte (position:absolute|fixed) oder floatenden (float:left|right) Element l&#228;sst sich diese Breitenangabe aber nicht anwenden.

Deshalb ist es uns ohne Tricksereien nicht m&#246;glich, eine horizontale Zweiteilung durch zwei &#8220;gleichwertige&#8221; Layoutbausteine vorzunehmen. Wir greifen mangels Alternativen auf Floats zur&#252;ck, wobei hierbei immer der Zwang besteht, dass das floatende Element im Quelltext vor den statischen Element stehen muss.

Nat&#252;rlich ist es dennoch m&#246;glich, dieses Problem mit den aktuellen Bordmitteln zu l&#246;sen. Entsprechend Codebeispiele daf&#252;r habe ich in die Dokumentation des Spaltenmoduls von YAML aufgenommen (achtet auf die verschiedenen Layoutans&#228;tze f&#252;r 2&#45;Spalter). Das ganze geht zur&#252;ck auf die cleveren Ans&#228;tze aus dem Beitrag &#8220;In Search of the Holy Grail&#8221; von A&#45;List&#45;Apart vom Januar 2006. Seither sind 6 Jahre vergangen, in denen sich CSS enorm weiterentwickelt hat. Dieses Grundproblem flexibler Layouts wurde jedoch bisher nicht zufriedenstellend gel&#246;st.

User Interfaces f&#252;r Webapplikationen
Als drittes m&#246;chte ich nochmal darauf hinweisen, dass gem&#228;&#223; der Logik der CSS&#45;Spezifikation Webseiten eine definierbare Breite haben, in ihrer L&#228;nge aber grunds&#228;tzlich als unendlich definiert werden, weswegen es im Grunde keine M&#246;glichkeiten gibt, den vertikalen Layoutaufbau sinnvoll zu gestalten, au&#223;er durch den linearen Aufbau des Markups und einer abschnittsweisen Gestaltung der aufeinander folgenden Elemente (Header, Content, Footer). Der CSS&#45;Standard ist f&#252;r HTML&#45;Seiten konzipiert, das vertikale Scrollen geh&#246;rt quasi zum Konzept dazu, um die theoretisch unendliche Informationsmenge einer HTML&#45;Seite durch das Schl&#252;sselloch Browserfenster (mit begrenzten Dimensionen) betrachten zu k&#246;nnen. Schon f&#252;r einen sticky Footer nutzen wir CSS&#45;Kniffe, die ein Gro&#223;teil von CSS&#45;Einsteigern nicht mehr voll durchdringt und deshalb nur schwer auf die eigenen Randbedingungen anpassen kann.

Nun hat sich aber der HTML5 Standard auf die Fahnen geschrieben, HTML fit f&#252;r Webapps zu machen. Befeuert wird diese Entwicklung durch potente Smartphones und Tablets. Man will eine echte Alternative zu nativen Applikationen schaffen, die naturgem&#228;&#223; f&#252;r jedes OS separat entwickelt.

Der Gedanke ist ausgesprochen reizvoll, jedoch ist einer der grundlegenden Unterschiede, dass User Interfaces in nativen Applikationen anders funktionieren als eine Website. Niemand will auf der Suche nach einem wichtigen Funktion erst m&#252;hsam nach unten scrollen m&#252;ssen, um dann f&#252;r den Klick auf einen Men&#252;punkt wieder nach oben zu scrollen usw. Ihr versteht, was ich meine?

Es geht also um User Interfaces, die mit dem verf&#252;gbaren Platz in horizontaler und vertikaler Ausdehnung auskommen m&#252;ssen/sollen &amp;ndash; ohne Scrollen. Im CSS&#45;Standard haben wir nichts, womit diese Aufgaben zu bew&#228;ltigen w&#228;ren. Der aktuelle Umweg geht hier &#252;ber JavaScript. ExtJS bietet in seinen UI Komponenten so genannte Layout Manager, f&#252;r jQuery gibt es das von mir hoch gesch&#228;tzte Layout Plugin. Speziell auf den Mobilbereich ausgelegt, gesellen sich Projekte wie jQuery Mobile und Sencha Touch hinzu.

Diese JavaScript&#45;basierenden Tools liefern uns die Layoutwerkzeuge, ohne die es kaum denkbar w&#228;re, webbasierte Applikationen zu schreiben, die sich wie eine native App anf&#252;hlen. Dennoch stelle ich mir die Frage, ob wir es uns dauerhaft leisten wollen, Layoutaufgaben, die eigentlich der Browser f&#252;r uns viel schneller und effizienter l&#246;sen k&#246;nnte, an JavaScript auszulagern. An anderer Stelle diskutieren wir bis aufs Messer um jedes Byte, was wir aus Performancegr&#252;nden weglassen k&#246;nnen. Beim Layout jedoch sind wir jedoch JavaScript praktisch ausgeliefert, was nie so schnell werden kann wie die hardwarebeschleunigte Rendering&#45;Engine eines Browsers (oder eben die des Betriebssystems, die jeder nativen App zur Verf&#252;gung steht). Und das hat auch die Konsequenz, dass eine native App sich &amp;ndash; zumindest aus dieser Sicht &amp;ndash; immer fl&#252;ssiger anf&#252;hlen und reagieren wird als eine clientseitige JS&#45;Implementation.

Damit will ich den gedanklichen Steifzug durch meine CSS&#45;Phantasien beenden. Wichtig war mir, aufzuzeigen, dass wir Layouts aktuell noch mit vergleichsweise unausgereiften Techniken bauen, obgleich die technischen und qualitativen Anforderungen an CSS&#45;basierte Layouts durch die heutige Vielzahl der Endger&#228;te enorm gestiegen ist und ich neben den tollen CSS3 Entwicklungen der letzten Jahre (Schatten, Gradienten, Webfonts, Animationen, etc), die niemand mehr missen will, hier eigentlich dringender Nachholebedarf und erhebliches Potential performantere L&#246;sungen besteht. Auch habe ich mich bei dieser Liste ausschlie&#223;lich auf die Belange des Seitenlayouts beschr&#228;nkt. Schaut man sich andere Bereiche, k&#246;nnte man hier sicherlich endlos weitere W&#252;nsche erg&#228;nzen.</description>
      <dc:subject>CSS &amp;amp; XHTML, Webdesign</dc:subject>
      <content:encoded><![CDATA[ <p>Ein wenig &#252;berrascht war ich ja schon, ob der zahlreichen Reaktionen auf meinen Blogbeitrag &#8220;<a href="http://www.highresolution.info/weblog/entry/von_fliegenden_kuehen_und_anderen_merkwuerdigkeiten/" title="Von fliegenden K&#252;hen und anderen Merkw&#252;rdigkeiten">Von fliegenden K&#252;hen und anderen Merkw&#252;rdigkeiten</a>&#8221; und deshalb m&#246;chte ich mit diesem Folgebeitrag ein paar Dinge erg&#228;nzen, die mir aktuell in der aktuellen Weiterentwicklung von CSS fehlen, also die &#8220;missing parts&#8221; von CSS.
</p> <h3>Nochmal zu Floats</h3><p>
Das Konzept, ein Layout zu beschreiben, indem man einzelnen Elementen eine Breite x zuweist und lediglich deren Ausrichtung links- oder rechtsb&#252;ndig innerhalb des Elternelements bestimmt, ist keine Erfindung von CSS. Sowas gibt es schon sehr viel l&#228;nger. Ich kenne ein solches System beispielsweise von der Erstellung von Benutzeroberfl&#228;chen f&#252;r den Amiga. Bei Software f&#252;r dessen dessen Desktop-Oberfl&#228;che (Workbench) war schon in den 80er Jahren schlau, sich auf sehr unterschiedliche Bildschirmaufl&#246;sungen und skalierbare Fonts einzustellen. Aus diesem Grund waren Floats f&#252;r mich auch nie ein Mittel, welches allein zur Contentgestaltung herangezogen werden sollte. Wenn dem so w&#228;re, h&#228;tte man im CSS Standard die Eigenschaft <code>float</code> auch einfach nur f&#252;r das Image-Element definieren k&#246;nnen. Dem ist aber nicht so.</p>

<p>Ich setze Floats seither sehr gern ein, weil ich sie mittlerweile in allen Browsern sehr robust geworden sind auch f&#252;r die &#228;lteren Browsergenerationen gut dokumentierte, stabile Workarounds f&#252;r die wichtigsten Bugs existieren. Nicht umsonst arbeiten die Layoutmodule von <a href="http://www.yaml.de" title="YAML">YAML</a> mit Floats.</p>

<p>Dennoch w&#252;nsche ich mir eine Verbesserung der aktuellen Situation, denn auch wenn ich bisher fast jedes an mich herangetragene CSS-Problem l&#246;sen konnte, ist dies in &ndash; aus meiner Sicht zuvielen praxisrelevanten Standardaufgaben &ndash; nur m&#252;hsam zu erreichen. Als Beispiele w&#228;ren da ...</p>

<h4>Containing Floats</h4><p>
Wir ben&#246;tigen eine Eigenschaft, die es erm&#246;glicht, floatende Elemente durch den Elterncontainer sauber umschlie&#223;en zu lassen. Aktuell nutzen wir dazu CSS-Eigenschaften wie <code>overflow:hidden</code> oder <code>display:table</code>, die diesen Effekt quasi als Nebenprodukt mitliefern. Da es uns in diesen F&#228;llen aber gar nicht um das Verstecken &#252;bergro&#223;er Elemente (<code>overflow:hidden</code>) oder das Rendern von Tabellen (<code>display:table</code>) geht, schleppen wir die Auswirkungen dieser Eigenschaften als <em>st&#246;rende</em> Nebeneffekte zwangsl&#228;ufig mit.</p>

<p>Was wir ben&#246;tigen, damit Floats leichter handhabbar werden, ist CSS-Eigenschaft, die das Einschlie&#223;en floatender Kind-Elemente zur Hauptaufgabe macht, wie z.B <code>float:contain;</code>. Die vom CSS-Standard dem am n&#228;chsten kommende Eigenschaft ist <code>clear</code>. Allerdings ist sie f&#252;r Inhaltskonzepte konzipiert, weswegen ihre Wirkungsweise uns f&#252;r Layoutzwecke solche Probleme bereitet und uns an diesem Punkt nicht weiterhilft.</p>

<h4>Flexible Breiten &amp; Source Order</h4><p>
Bei der Umsetzung flexibler (responsive) Layouts st&#246;&#223;t man unweigerlich auf Probleme, wenn fixe und flexible Seitenbereiche nebeneinander zu platzieren sind. Wir platzieren sekund&#228;re Inhalte typischerweise am Rand (Stichwort: Sidebar), neben den zentral gelegenen Hauptinhalten. Die Reihenfolge der Inhalte im Quelltext sollte die Relevanz nat&#252;rlich widerspiegeln, womit auch hier erst der Hauptinhalt und dann die sekund&#228;ren Infos folgen sollten. Diese Markupkonstellation stellt uns aber hinsichtlich des Layouts mit Floats vor ein konzeptionelles Problem, da laut CSS-Standard das Element, welches <em>umflossen</em> werden soll (hier bricht die inhaltsbezogene Ansatz von Floats im CSS-Standard durch), im Quelltext zwingend <em>vor</em> den Elementen, stehen muss, die es <em>umflie&#223;en</em> (man achte auf die aktive/passive Formulierung).</p>

<p>Das Problem sind hier nicht die Floats ansich, sondern dass wir kein Layout-Modul in CSS kennen, welches dieser Aufgabe gewachsen ist. Die Aufgabe besteht darin, die zur Verf&#252;gung stehende Gesamtbreite in einen Bereich mit definierter Breite (Ma&#223;einheit em,% oder px) und einen <em>flexiblen Rest</em> zu unterteilen. Genau dieser <em>flexible Rest</em> ist in CSS nur f&#252;r statische Elemente spezifiziert &#252;ber <code>width:auto</code>. Auf positionierte (<code>position:absolute|fixed</code>) oder floatenden (<code>float:left|right</code>) Element l&#228;sst sich diese Breitenangabe aber nicht anwenden.</p>

<p>Deshalb ist es uns ohne Tricksereien nicht m&#246;glich, eine horizontale Zweiteilung durch zwei &#8220;gleichwertige&#8221; Layoutbausteine vorzunehmen. Wir greifen mangels Alternativen auf Floats zur&#252;ck, wobei hierbei immer der Zwang besteht, dass das floatende Element im Quelltext <em>vor</em> den statischen Element stehen muss.</p>

<p>Nat&#252;rlich ist es dennoch m&#246;glich, dieses Problem mit den aktuellen Bordmitteln zu l&#246;sen. Entsprechend Codebeispiele daf&#252;r habe ich in die Dokumentation des <a href="http://www.yaml.de/docs/index.html#yaml-columns" title="Spaltenmoduls von YAML">Spaltenmoduls von YAML</a> aufgenommen (achtet auf die verschiedenen Layoutans&#228;tze f&#252;r 2-Spalter). Das ganze geht zur&#252;ck auf die cleveren Ans&#228;tze aus dem Beitrag &#8220;<a href="http://www.alistapart.com/articles/holygrail/" title="In Search of the Holy Grail">In Search of the Holy Grail</a>&#8221; von A-List-Apart vom Januar 2006. Seither sind 6 Jahre vergangen, in denen sich CSS enorm weiterentwickelt hat. Dieses Grundproblem flexibler Layouts wurde jedoch bisher nicht zufriedenstellend gel&#246;st.</p>

<h4>User Interfaces f&#252;r Webapplikationen</h4><p>
Als drittes m&#246;chte ich nochmal darauf hinweisen, dass gem&#228;&#223; der Logik der CSS-Spezifikation Webseiten eine definierbare Breite haben, in ihrer L&#228;nge aber grunds&#228;tzlich als unendlich definiert werden, weswegen es im Grunde keine M&#246;glichkeiten gibt, den vertikalen Layoutaufbau sinnvoll zu gestalten, au&#223;er durch den linearen Aufbau des Markups und einer abschnittsweisen Gestaltung der aufeinander folgenden Elemente (Header, Content, Footer). Der CSS-Standard ist f&#252;r HTML-Seiten konzipiert, das vertikale Scrollen geh&#246;rt quasi zum Konzept dazu, um die theoretisch unendliche Informationsmenge einer HTML-Seite durch das Schl&#252;sselloch Browserfenster (mit begrenzten Dimensionen) betrachten zu k&#246;nnen. Schon f&#252;r einen <a href="http://www.themaninblue.com/writing/perspective/2005/08/29/" title="sticky Footer">sticky Footer</a> nutzen wir CSS-Kniffe, die ein Gro&#223;teil von CSS-Einsteigern nicht mehr voll durchdringt und deshalb nur schwer auf die eigenen Randbedingungen anpassen kann.</p>

<p>Nun hat sich aber der HTML5 Standard auf die Fahnen geschrieben, HTML fit f&#252;r Webapps zu machen. Befeuert wird diese Entwicklung durch potente Smartphones und Tablets. Man will eine echte Alternative zu nativen Applikationen schaffen, die naturgem&#228;&#223; f&#252;r jedes OS separat entwickelt.</p>

<p>Der Gedanke ist ausgesprochen reizvoll, jedoch ist einer der grundlegenden Unterschiede, dass User Interfaces in nativen Applikationen anders funktionieren als eine Website. Niemand will auf der Suche nach einem wichtigen Funktion erst m&#252;hsam nach unten scrollen m&#252;ssen, um dann f&#252;r den Klick auf einen Men&#252;punkt wieder nach oben zu scrollen usw. Ihr versteht, was ich meine?</p>

<p>Es geht also um User Interfaces, die mit dem verf&#252;gbaren Platz in horizontaler und vertikaler Ausdehnung auskommen m&#252;ssen/sollen &ndash; ohne Scrollen. Im CSS-Standard haben wir nichts, womit diese Aufgaben zu bew&#228;ltigen w&#228;ren. Der aktuelle Umweg geht hier &#252;ber JavaScript. ExtJS bietet in seinen UI Komponenten so genannte <a href="http://www.sencha.com/products/extjs/examples/#sample-7" title="Layout Manager">Layout Manager</a>, f&#252;r jQuery gibt es das von mir hoch gesch&#228;tzte <a href="http://layout.jquery-dev.net/" title="Layout Plugin">Layout Plugin</a>. Speziell auf den Mobilbereich ausgelegt, gesellen sich Projekte wie <a href="http://jquerymobile.com/" title="jQuery Mobile">jQuery Mobile</a> und <a href="http://www.sencha.com/products/touch" title="Sencha Touch">Sencha Touch</a> hinzu.</p>

<p>Diese JavaScript-basierenden Tools liefern uns die Layoutwerkzeuge, ohne die es kaum denkbar w&#228;re, webbasierte Applikationen zu schreiben, die sich wie eine native App anf&#252;hlen. Dennoch stelle ich mir die Frage, ob wir es uns dauerhaft leisten wollen, Layoutaufgaben, die eigentlich der Browser f&#252;r uns viel schneller und effizienter l&#246;sen k&#246;nnte, an JavaScript auszulagern. An anderer Stelle diskutieren wir bis aufs Messer um jedes Byte, was wir aus Performancegr&#252;nden weglassen k&#246;nnen. Beim Layout jedoch sind wir jedoch JavaScript praktisch ausgeliefert, was nie so schnell werden kann wie die hardwarebeschleunigte Rendering-Engine eines Browsers (oder eben die des Betriebssystems, die jeder nativen App zur Verf&#252;gung steht). Und das hat auch die Konsequenz, dass eine native App sich &ndash; zumindest aus dieser Sicht &ndash; immer fl&#252;ssiger anf&#252;hlen und reagieren wird als eine clientseitige JS-Implementation.</p>

<p>Damit will ich den gedanklichen Steifzug durch meine CSS-Phantasien beenden. Wichtig war mir, aufzuzeigen, dass wir Layouts aktuell noch mit vergleichsweise unausgereiften Techniken bauen, obgleich die technischen und qualitativen Anforderungen an CSS-basierte Layouts durch die heutige Vielzahl der Endger&#228;te enorm gestiegen ist und ich neben den tollen CSS3 Entwicklungen der letzten Jahre (Schatten, Gradienten, Webfonts, Animationen, etc), die niemand mehr missen will, hier eigentlich dringender Nachholebedarf und erhebliches Potential performantere L&#246;sungen besteht. Auch habe ich mich bei dieser Liste ausschlie&#223;lich auf die Belange des Seitenlayouts beschr&#228;nkt. Schaut man sich andere Bereiche, k&#246;nnte man hier sicherlich endlos weitere W&#252;nsche erg&#228;nzen.</p>

 ]]></content:encoded>
      <dc:date>2012-04-05T12:00:06+00:00</dc:date>
    </item>

    <item>
      <title>Von fliegenden K&#252;hen und anderen Merkw&#252;rdigkeiten</title>
      <link><![CDATA[http://www.highresolution.info/weblog/entry/von_fliegenden_kuehen_und_anderen_merkwuerdigkeiten/]]></link>
      <description>Vor 10 Jahren was CSS gerade mal dazu gut, Schrift&#45; und Hintergrundfarbe von Texten festzulegen. Heute k&#246;nnen wir dank CSS3 Transitions, Transforms und Animationen in allen modernen Browsern problemlos eine Horde gescheckter K&#252;he geschmeidig animiert (weil hardware&#45;beschleunigt) &#252;ber die Pixelweide treiben.

Was wir aber nicht k&#246;nnen, sind vermeintlich simple Layoutaufgaben ohne abstruse CSS&#45;Tricksereien realisieren. Schon vor einer kleinen Weile schlug Louis Lazaris mit seinem Blogbeitrag &#8220;CSS: The Bad Parts&#8221; in eine &#228;hnliche Kerbe, wobei ich nur zum Teil die von ihm angesprochenen &#8220;Probleme&#8221; als solche wahrnehme.
Die Sache mit den Floats
&#220;ber den Sinn und Zweck von Floats l&#228;sst sich trefflich streiten. Vor 5..6 Jahren waren sie der Heilsbringer, der die CSS&#45;Layouts dahin gef&#252;hrt hat, sich &#252;ber den Layouttabellenschmarn des letzten Jahrhunderts zu erheben. Und in einem Umfeld, in dem &#252;berwiegend pixelexakte Layouts propagiert wurden, funktioniert dieser Ansatz auch leidlich. Nun h&#246;rt man in den letzten Jahren &amp;ndash; anfangs nur von Standards&#45;Fetischisten &amp;ndash; heute auch aus der breiten Frontendler&#45;Masse, Floats w&#228;ren ja laut Standard nie f&#252;r Gestaltungsaufgaben vorgesehen gewesen und w&#252;rden demzufolge f&#252;r Layoutzwecke genauso missbraucht, wie seinerzeit die HTML&#45;Tabellen.

Nun, diese Argumentation mag f&#252;r Verschw&#246;rungstheoretiker brauchbar sein, f&#252;r mehr aber auch nicht. Viel schwerwiegender ist doch die Erkenntnis, dass sich Floats trotz aller Widrigkeiten im Detail der Spezifikation durchgesetzt haben und wir monentan gar keine Alternativen dazu haben. Und damit bin ich wieder beim Aufh&#228;nger f&#252;r diesen Blogpost. CSS 3 hat in den letzten 2 Jahren eine rasante Entwicklung hinter sich und vom Gef&#252;hl her beschleunigt diese Entwicklung noch immer. Nur passiert der technische Fortschritt auf ganz anderen Bereichen: Runde Ecken, Gradients, Schatten, Animationen, 3D, Schriften usw. usw.

All die neu hinzugekommenden CSS3 Features will man aber nun auch einsetzen und damit werden viele der Probleme, die es mit Floats gibt, erst jetzt mit Nachdruck sichbar. Umso unbefriedigender ist die Tatsache, dass mit CSS3 bisher kaum brauchbare Layoutkonzepte in die Standardisierung &amp;ndash; geschweigedenn in die Praxis &amp;ndash; Einzug gehalten haben.

Kein Float&#45;Clearing ohne Nebenwirkungen
Wer bis heute der Meinung ist, die Clearing&#45;Problematik w&#228;re mit der Erfindung des Clearfix&#45;Hacks gel&#246;st, der f&#252;hrt zum einen ein offenbar gut beh&#252;tetes Entwicklerleben und irrt zum anderen gewaltig. Schauen wir auf die aktuellen Webdesign&#45;Trends: Responsive Webdesigns, flexible Grids und CSS3 Box&#45;Shadows.

Der Clearfix&#45;Hack hat das &#196;rgernis beseitigt, f&#252;r das Clearing der Floats zus&#228;tzliche Elemente ins Markup stopfen zu m&#252;ssen. Er hat aber schon immer das Problem, Auswirkungen auf die Positionierung anderer floatender Elemente im gleichen Kontext zu haben, was seinen Einsatzzweck zum Einschlie&#223;en von Floats stark einschr&#228;nkt.Die Eigenschaft overflow:hidden schien zur Hochzeit von CSS2 nahezu nebenwirkungsfrei zum Einschlie&#223;en von Floats. Mit der Praxistauglichkeit von CSS3 ist dieser Status dahin, denn CSS&#45;Schatten von Child&#45;Elementen werden an den Elementr&#228;ndern gnadenlos abgeschnitten.Die Eigenschaft display:table scheint auf den ersten Blick die Nachteile von overflow:hidden mit CSS3 ausgleichen zu k&#246;nnen, denn es wird nichts abgeschnitten. Daf&#252;r ist die Implementation in den Browsern uneinheitlich, was schon damit beginnt, wie sich ein Element mit dieser Eigenschaft hinsichtlich seiner Breite verh&#228;lt. Dazu kommt ein noch tiefer liegendes Problem, welches nicht immer sofort sichtbar wird. Die Eigenschaft display:table hebelt eines der grundlegenden Rendering&#45;Prinzipien von CSS aus, dass ein Elterncontainer nicht mit der Breite seines Kind&#45;Elementes mitw&#228;chst. Sichtbar wird dieses Verhalten, wenn man beispielsweise flexible Grids damit baut und linearisiert, ohne den einzelnen &#8220;Zellen&#8221; eine Breite zuzuweisen (wozu auch, Blockelemente dehnen sich von allein auf die Gr&#246;&#223;e des Elternelementes aus). F&#252;gt man in ein solches CSS&#45;Konstrukt allerdings ein flexibles Bild ein, wird dieses pl&#246;tzlich nicht mehr skaliert dargestellt, sondern in voller Gr&#246;&#223;e und die Elterncontainer werden entsprechend ausgedehnt &amp;ndash; genauso wie bei Tabellen. Dieses Problem ist bisher kaum bekannt. Aber ihr k&#246;nnt mir glauben, es ist extrem m&#252;hsam, die eigentliche Ursache beim Debugging &#252;berhaupt zu erkennen.

Mit dem Durchbruch flexibler Layouts unter dem Deckmantel des Buzzwords &#8220;Responsive Design&#8221; werden weitere Probleme sichtbar. Wir sind bei CSS weit davon entfernt, Elemente unabh&#228;ngig vom Markup im Screendesign anordnen zu k&#246;nnen. Zahlreiche Entwickler bemerken erst jetzt bei der Umstellung von fixen Grid&#45;Systemen auf Grids in Prozentwerten, was es heisst, mit Rundungsfehlern der Browser offensiv umzugehen. Und und und ...

Fehlende Alternativen
Tja, was gibt&#8217;s hier? Der eine oder andere wei&#223; sicher, dass einige CSS&#45;Frameworks (z.B.: die Grid&#45;Komponente von YUI3) auf display:inline&#45;block aufbauen. Auch diese Eigenschaft ist keine L&#246;sung, denn sie wurde noch viel weniger f&#252;r Layoutzwecke entworfen als Floats. Das &#228;u&#223;ert sich insbesondere darin, dass ein Grid mit diesem CSS&#45;Konzept pl&#246;tzlich h&#246;chst sensibel auf Leerzeichen und Zeilenumbr&#252;che im Quelltext zwischen den einzelnen Grid&#45;Zellen reagiert. Es braucht nicht viel Phantasie, um sich die Probleme vorzustellen, wenn man als Entwickler keine vollst&#228;ndige Kontrolle &#252;ber den Quellcode hat. Und wer hat die schon? Denkt nur an verschachtelte Templates in einem CMS und die dadurch entstehenden Zeilenumbr&#252;che im Quelltext.

CSS3 verspricht uns gleich vier neue Layout&#45;Module: Multicolumn, Grid&#45;Layout, Flex&#45;Box und das Template&#45;Modul. Das Multicolumn&#45;Modul ist als einziges bereits beim Status &#8220;Testing&#8221; angekommen allerdings l&#228;sst es sich im Grunde nur auf Flie&#223;text sinnvoll anwenden. F&#252;r den Bau eines Seitenlayouts im herk&#246;mmlichen Sinne ist es ungeeignet. Die anderen drei pendeln zwischen &#8220;Revising&#8221; und &#8220;Exploring&#8221;, d.h. ihre Anwendbarkeit liegt in weiter Ferne. Erschwerend kommt hinzu, dass der visuelle Seitenaufbau ein so grundlegender Baustein ist, dass sich hier kaum sinnvolle Progressive&#45;Enhancement&#45;Strategien realisieren lassen. Entweder die gesamte relevante Browserlandschaft unterst&#252;tzt die Technik fehlerfrei oder sie ist f&#252;r den Alltag noch nicht reif. Sprich: Wir lesen uns 2016 wieder.

W&#228;hrend wir mittlerweile selbst auf Smartphones gut und gerne 50 animierte K&#252;he per CSS fliegen lassen k&#246;nnen, m&#252;hen wir uns bei den grundlegenden Gestaltungswerkzeugen im Web auch in den n&#228;chsten Jahren noch mit unzureichenden Techniken ab. Und es verbl&#252;fft mich schon ein wenig, dass wir uns so bereitwillig von all dem HTML5&#45; und CSS3&#45;Bling Bling blenden lassen.

Nachtrag: F&#252;r die Zweifler unter Euch: Zwar keine fliegenden K&#252;he, daf&#252;r nicht minder knuffige, fliegende Schweine. (gefunden und mir zugetragen von Christian Heilmann).</description>
      <dc:subject>CSS &amp;amp; XHTML, Webdesign</dc:subject>
      <content:encoded><![CDATA[ <p>Vor 10 Jahren was CSS gerade mal dazu gut, Schrift- und Hintergrundfarbe von Texten festzulegen. Heute k&#246;nnen wir dank CSS3 Transitions, Transforms und Animationen in allen modernen Browsern problemlos eine Horde gescheckter K&#252;he geschmeidig animiert (weil hardware-beschleunigt) &#252;ber die Pixelweide treiben.</p>

<p>Was wir aber nicht k&#246;nnen, sind vermeintlich simple Layoutaufgaben ohne abstruse CSS-Tricksereien realisieren. Schon vor einer kleinen Weile schlug Louis Lazaris mit seinem Blogbeitrag &#8220;<a href="http://http://www.impressivewebs.com/css-the-bad-parts/" title="CSS: The Bad Parts">CSS: The Bad Parts</a>&#8221; in eine &#228;hnliche Kerbe, wobei ich nur zum Teil die von ihm angesprochenen &#8220;Probleme&#8221; als solche wahrnehme.
</p> <h3>Die Sache mit den Floats</h3><p>
&#220;ber den Sinn und Zweck von Floats l&#228;sst sich trefflich streiten. Vor 5..6 Jahren waren sie der Heilsbringer, der die CSS-Layouts dahin gef&#252;hrt hat, sich &#252;ber den Layouttabellenschmarn des letzten Jahrhunderts zu erheben. Und in einem Umfeld, in dem &#252;berwiegend pixelexakte Layouts propagiert wurden, funktioniert dieser Ansatz auch leidlich. Nun h&#246;rt man in den letzten Jahren &ndash; anfangs nur von Standards-Fetischisten &ndash; heute auch aus der breiten Frontendler-Masse, Floats w&#228;ren ja laut Standard nie f&#252;r Gestaltungsaufgaben vorgesehen gewesen und w&#252;rden demzufolge f&#252;r Layoutzwecke genauso <em>missbraucht</em>, wie seinerzeit die HTML-Tabellen.</p>

<p>Nun, diese Argumentation mag f&#252;r Verschw&#246;rungstheoretiker brauchbar sein, f&#252;r mehr aber auch nicht. Viel schwerwiegender ist doch die Erkenntnis, dass sich Floats trotz aller Widrigkeiten im Detail der Spezifikation durchgesetzt haben und wir monentan gar keine Alternativen dazu haben. Und damit bin ich wieder beim Aufh&#228;nger f&#252;r diesen Blogpost. CSS 3 hat in den letzten 2 Jahren eine rasante Entwicklung hinter sich und vom Gef&#252;hl her beschleunigt diese Entwicklung noch immer. Nur passiert der technische Fortschritt auf ganz anderen Bereichen: Runde Ecken, Gradients, Schatten, Animationen, 3D, Schriften usw. usw.</p>

<p>All die neu hinzugekommenden CSS3 Features will man aber nun auch einsetzen und damit werden viele der Probleme, die es mit Floats gibt, erst jetzt mit Nachdruck sichbar. Umso unbefriedigender ist die Tatsache, dass mit CSS3 bisher kaum brauchbare Layoutkonzepte in die Standardisierung &ndash; geschweigedenn in die Praxis &ndash; Einzug gehalten haben.</p>

<h4>Kein Float-Clearing ohne Nebenwirkungen</h4><p>
Wer bis heute der Meinung ist, die Clearing-Problematik w&#228;re mit der Erfindung des Clearfix-Hacks gel&#246;st, der f&#252;hrt zum einen ein offenbar gut beh&#252;tetes Entwicklerleben und irrt zum anderen gewaltig. Schauen wir auf die aktuellen Webdesign-Trends: Responsive Webdesigns, flexible Grids und CSS3 Box-Shadows.</p>

<ul><li>Der <a href="http://nicolasgallagher.com/micro-clearfix-hack/" title="Clearfix-Hack">Clearfix-Hack</a> hat das &#196;rgernis beseitigt, f&#252;r das Clearing der Floats zus&#228;tzliche Elemente ins Markup stopfen zu m&#252;ssen. Er hat aber schon immer das Problem, Auswirkungen auf die Positionierung anderer floatender Elemente im gleichen Kontext zu haben, was seinen Einsatzzweck zum Einschlie&#223;en von Floats stark einschr&#228;nkt.</li><li>Die Eigenschaft <code>overflow:hidden</code> schien zur Hochzeit von CSS2 nahezu nebenwirkungsfrei zum Einschlie&#223;en von Floats. Mit der Praxistauglichkeit von CSS3 ist dieser Status dahin, denn CSS-Schatten von Child-Elementen werden an den Elementr&#228;ndern gnadenlos abgeschnitten.</li><li>Die Eigenschaft <code>display:table</code> scheint auf den ersten Blick die Nachteile von<code> overflow:hidden</code> mit CSS3 ausgleichen zu k&#246;nnen, denn es wird nichts abgeschnitten. Daf&#252;r ist die Implementation in den Browsern uneinheitlich, was schon damit beginnt, wie sich ein Element mit dieser Eigenschaft hinsichtlich seiner Breite verh&#228;lt. Dazu kommt ein noch tiefer liegendes Problem, welches nicht immer sofort sichtbar wird. Die Eigenschaft <code>display:table</code> hebelt eines der grundlegenden Rendering-Prinzipien von CSS aus, dass ein Elterncontainer nicht mit der Breite seines Kind-Elementes mitw&#228;chst. Sichtbar wird dieses Verhalten, wenn man beispielsweise flexible Grids damit baut und linearisiert, ohne den einzelnen &#8220;Zellen&#8221; eine Breite zuzuweisen (wozu auch, Blockelemente dehnen sich von allein auf die Gr&#246;&#223;e des Elternelementes aus). F&#252;gt man in ein solches CSS-Konstrukt allerdings ein <a href="http://unstoppablerobotninja.com/entry/fluid-images/" title="flexibles Bild">flexibles Bild</a> ein, wird dieses pl&#246;tzlich nicht mehr skaliert dargestellt, sondern in voller Gr&#246;&#223;e und die Elterncontainer werden entsprechend ausgedehnt &ndash; genauso wie bei Tabellen. Dieses Problem ist bisher kaum bekannt. Aber ihr k&#246;nnt mir glauben, es ist extrem m&#252;hsam, die eigentliche Ursache beim Debugging &#252;berhaupt zu erkennen.</li></ul>

<p>Mit dem Durchbruch flexibler Layouts unter dem Deckmantel des Buzzwords &#8220;Responsive Design&#8221; werden weitere Probleme sichtbar. Wir sind bei CSS weit davon entfernt, Elemente unabh&#228;ngig vom Markup im Screendesign anordnen zu k&#246;nnen. Zahlreiche Entwickler bemerken erst jetzt bei der Umstellung von fixen Grid-Systemen auf Grids in Prozentwerten, was es heisst, mit Rundungsfehlern der Browser offensiv umzugehen. Und und und ...</p>

<h4>Fehlende Alternativen</h4><p>
Tja, was gibt&#8217;s hier? Der eine oder andere wei&#223; sicher, dass einige CSS-Frameworks (z.B.: die Grid-Komponente von YUI3) auf <code>display:inline-block</code> aufbauen. Auch diese Eigenschaft ist keine L&#246;sung, denn sie wurde noch viel weniger f&#252;r Layoutzwecke entworfen als Floats. Das &#228;u&#223;ert sich insbesondere darin, dass ein Grid mit diesem CSS-Konzept pl&#246;tzlich h&#246;chst sensibel auf Leerzeichen und Zeilenumbr&#252;che im Quelltext zwischen den einzelnen Grid-Zellen reagiert. Es braucht nicht viel Phantasie, um sich die Probleme vorzustellen, wenn man als Entwickler keine vollst&#228;ndige Kontrolle &#252;ber den Quellcode hat. Und wer hat die schon? Denkt nur an verschachtelte Templates in einem CMS und die dadurch entstehenden Zeilenumbr&#252;che im Quelltext.</p>

<p>CSS3 verspricht uns gleich vier neue Layout-Module: <a href="http://www.w3.org/TR/css3-multicol/" title="Multicolumn">Multicolumn</a>, <a href="http://www.w3.org/TR/css3-grid-layout/" title="Grid-Layout">Grid-Layout</a>, <a href="http://www.w3.org/TR/css3-flexbox/" title="Flex-Box">Flex-Box</a> und das <a href="http://www.w3.org/TR/css3-layout/" title="Template-Modul">Template-Modul</a>. Das Multicolumn-Modul ist als einziges bereits beim Status &#8220;Testing&#8221; angekommen allerdings l&#228;sst es sich im Grunde nur auf Flie&#223;text sinnvoll anwenden. F&#252;r den Bau eines Seitenlayouts im herk&#246;mmlichen Sinne ist es ungeeignet. Die anderen drei <a href="http://www.css3.info/modules/" title="pendeln ">pendeln </a>zwischen &#8220;Revising&#8221; und &#8220;Exploring&#8221;, d.h. ihre Anwendbarkeit liegt in weiter Ferne. Erschwerend kommt hinzu, dass der visuelle Seitenaufbau ein so grundlegender Baustein ist, dass sich hier kaum sinnvolle Progressive-Enhancement-Strategien realisieren lassen. Entweder die gesamte relevante Browserlandschaft unterst&#252;tzt die Technik fehlerfrei oder sie ist f&#252;r den Alltag noch nicht reif. Sprich: Wir lesen uns 2016 wieder.</p>

<p>W&#228;hrend wir mittlerweile selbst auf Smartphones gut und gerne 50 animierte K&#252;he per CSS fliegen lassen k&#246;nnen, m&#252;hen wir uns bei den grundlegenden Gestaltungswerkzeugen im Web auch in den n&#228;chsten Jahren noch mit unzureichenden Techniken ab. Und es verbl&#252;fft mich schon ein wenig, dass wir uns so bereitwillig von all dem HTML5- und CSS3-Bling Bling blenden lassen.</p>

<p><strong>Nachtrag:</strong> F&#252;r die Zweifler unter Euch: Zwar keine fliegenden K&#252;he, daf&#252;r nicht minder <a href="http://thewebrocks.com/demos/pigs/" title="knuffige, fliegende Schweine.">knuffige, fliegende Schweine</a>. (gefunden und mir zugetragen von <a href="http://christianheilmann.com/" title="Christian Heilmann">Christian Heilmann</a>).
</p> ]]></content:encoded>
      <dc:date>2012-04-03T12:00:06+00:00</dc:date>
    </item>

    <item>
      <title>Die Besten kommen aus G&#246;rlitz</title>
      <link><![CDATA[http://www.highresolution.info/weblog/entry/die_besten_kommen_aus_goerlitz/]]></link>
      <description>Gestern war einer der traurigsten Anl&#228;sse seit langem f&#252;r eine Reise in meine Heimatstadt G&#246;rlitz, denn gestern fand im Kreis seiner Familie und enger Freunde die Beerdigung von Michael Preu&#223; statt. Er hinterl&#228;sst in tiefer Trauer seine Eltern, seine Br&#252;der, seine Ehefrau, seine beiden S&#246;hne und zahlreiche Freunde.
Ich lernte Micha 2007 kennen, als er mich eines Nachmittags anrief, um sich von mir das O.k. f&#252;r die Ver&#246;ffentlichung seines ersten Wordpress&#45;Themes auf Basis von YAML zu holen. Er rief an, weil er gelesen hatte, dass ich auch aus G&#246;rlitz k&#228;me und so entstand mehr oder weniger &#252;ber Nacht eine Freundschaft, die &#252;ber die Jahre immer enger wurde. Seither haben wir unz&#228;hlige Stunden am Telefon, sowie den einen oder anderen Nachmittag in G&#246;rlitzer Cafes beim Schwatzen verbracht, wann immer es sich anbot.

Micha war ein Fan von YAML und er war seit je her begeistert von Wordpress. Und er war es, der vor &#252;ber zwei Jahren damit begann, das in die Tat umzusetzen, wovon ich f&#252;r YAML immer getr&#228;umt hatte. Ein Werkzeug, welches die zahlreichen Features von YAML auf einfachem Wege f&#252;r ein CMS nutzbar macht, ohne dabei die Gestaltungsfreiheit von YAML ma&#223;geblich einzuschr&#228;nken, wie es allzuoft bei &#8220;vorkonfigurierten&#8221; Themes oder CMS&#45;Templates der Fall ist.

Das Ergebnis wurde am 1. November 2010 mit der Ver&#246;ffentlichung von XtremeOne sichtbar, einem unglaublich vielseitigen Theme&#45;Framework f&#252;r Wordpress, basierend auf einer speziell angepassten Version von YAML 3, welches in seinen Features und seiner Flexibilit&#228;t konkurrenzlos ist. Wir haben uns gegenseitig angespornt bei unseren Projekten und f&#252;r mich war Micha derjenige, der die Philosophie hinter YAML und meine Vorstellung davon, was sich auf der Basis von CSS Frameworks f&#252;r tolle Ideen realisieren lassen, am besten verstanden und zugleich in die Tat umgesetzt hat. XtremeOne hat sich zu seinem Lebenswerk entwickelt und seine Begeisterung f&#252;r das Projekt war unglaublich.

Am 24. Februar 2012 ist Michael Preu&#223; nach kurzer, schwerer Krankheit verstorben. Noch wenige Tage zuvor hatten wir telefoniert: er hatte Pl&#228;ne geschmiedet, neuen Mut gesch&#246;pft. Und pl&#246;tzlich den Kampf viel zu fr&#252;h verloren. 

Mit XtremeOne wird es weitergehen. Micha hat dieses Projekt gemeinsam mit Heiko Rabe und Alex Frison auf die Beine gestellt und sie werden die Weiterentwicklung &#252;bernehmen. N&#228;here Infos dazu findet Ihr in dieser offiziellen Mitteilung im Projektblog. Falls Ihr Eure Anteilnahme bekunden wollt, tut dies bitte im XtremeOne&#45;Blog. Danke.

&#8220;Dirki, die Besten kommen halt aus G&#246;rlitz, oder?&#8221;

Mit dieser Frage beendete er nicht wenige unserer Gespr&#228;che. 

Ja Micha, das tun sie. Und Du warst einer von Ihnen.</description>
      <dc:subject>Hausinternes, Real World</dc:subject>
      <content:encoded><![CDATA[ <p>Gestern war einer der traurigsten Anl&#228;sse seit langem f&#252;r eine Reise in meine Heimatstadt G&#246;rlitz, denn gestern fand im Kreis seiner Familie und enger Freunde die Beerdigung von Michael Preu&#223; statt. Er hinterl&#228;sst in tiefer Trauer seine Eltern, seine Br&#252;der, seine Ehefrau, seine beiden S&#246;hne und zahlreiche Freunde.
</p> <p>Ich lernte Micha 2007 kennen, als er mich eines Nachmittags anrief, um sich von mir das O.k. f&#252;r die Ver&#246;ffentlichung seines ersten Wordpress-Themes auf Basis von YAML zu holen. Er rief an, weil er gelesen hatte, dass ich auch aus G&#246;rlitz k&#228;me und so entstand mehr oder weniger &#252;ber Nacht eine Freundschaft, die &#252;ber die Jahre immer enger wurde. Seither haben wir unz&#228;hlige Stunden am Telefon, sowie den einen oder anderen Nachmittag in G&#246;rlitzer Cafes beim Schwatzen verbracht, wann immer es sich anbot.</p>

<p>Micha war ein Fan von <a href="http://www.yaml.de" title="YAML">YAML</a> und er war seit je her begeistert von <a href="http://de.wordpress.com/" title="Wordpress">Wordpress</a>. Und er war es, der vor &#252;ber zwei Jahren damit begann, das in die Tat umzusetzen, wovon ich f&#252;r YAML immer getr&#228;umt hatte. Ein Werkzeug, welches die zahlreichen Features von YAML auf einfachem Wege f&#252;r ein CMS nutzbar macht, ohne dabei die Gestaltungsfreiheit von YAML ma&#223;geblich einzuschr&#228;nken, wie es allzuoft bei &#8220;vorkonfigurierten&#8221; Themes oder CMS-Templates der Fall ist.</p>

<p>Das Ergebnis wurde am 1. November 2010 mit der <a href="http://de.xtreme-theme.com/2010/11/xtreme-one-released/" title="Ver&#246;ffentlichung von XtremeOne">Ver&#246;ffentlichung von XtremeOne</a> sichtbar, einem unglaublich vielseitigen Theme-Framework f&#252;r Wordpress, basierend auf einer speziell angepassten Version von YAML 3, welches in seinen Features und seiner Flexibilit&#228;t konkurrenzlos ist. Wir haben uns gegenseitig angespornt bei unseren Projekten und f&#252;r mich war Micha derjenige, der die Philosophie hinter YAML und meine Vorstellung davon, was sich auf der Basis von CSS Frameworks f&#252;r tolle Ideen realisieren lassen, am besten verstanden und zugleich in die Tat umgesetzt hat. XtremeOne hat sich zu seinem Lebenswerk entwickelt und seine Begeisterung f&#252;r das Projekt war unglaublich.</p>

<p>Am 24. Februar 2012 ist Michael Preu&#223; nach kurzer, schwerer Krankheit verstorben. Noch wenige Tage zuvor hatten wir telefoniert: er hatte Pl&#228;ne geschmiedet, neuen Mut gesch&#246;pft. Und pl&#246;tzlich den Kampf viel zu fr&#252;h verloren. </p>

<p>Mit XtremeOne wird es weitergehen. Micha hat dieses Projekt gemeinsam mit Heiko Rabe und Alex Frison auf die Beine gestellt und sie werden die Weiterentwicklung &#252;bernehmen. N&#228;here Infos dazu findet Ihr <a href="http://de.xtreme-theme.com/2012/03/was-man-tief-in-seinem-herzen-besitzt-kann-man-durch-den-tod-nicht-verlieren/" title="im offiziellen Projektblog">in dieser offiziellen Mitteilung</a> im Projektblog. Falls Ihr Eure Anteilnahme bekunden wollt, tut dies bitte im <a href="http://de.xtreme-theme.com/2012/03/was-man-tief-in-seinem-herzen-besitzt-kann-man-durch-den-tod-nicht-verlieren/" title="XtremeOne-Blog">XtremeOne-Blog</a>. Danke.</p>

<blockquote><p>&#8220;Dirki, die Besten kommen halt aus G&#246;rlitz, oder?&#8221;</p></blockquote>

<p>Mit dieser Frage beendete er nicht wenige unserer Gespr&#228;che. </p>

<p>Ja Micha, das tun sie. Und Du warst einer von Ihnen.
</p> ]]></content:encoded>
      <dc:date>2012-03-09T13:48:30+00:00</dc:date>
    </item>

    <item>
      <title>Erfolgskonzept: [Platzhalter] mit HTML5?</title>
      <link><![CDATA[http://www.highresolution.info/weblog/entry/Platzhalter_mit_html5/]]></link>
      <description>Liebes T3N Magazin,

Die &#220;berschrift Eures heutigen Beitrags &#8220;Contao: Open&#45;Source&#45;CMS mit HTML5&#8221; ist ein schlechter Witz. Der einzige Bezug des gesamten Beitrags zu Eurem Lieblings&#45;Buzzword &#8220;HTML5&#8221; findet sich im ersten Satz: 

Contao ist ein Open&#45;Source&#45;CMS, das auf PHP basiert und HTML5 unterst&#252;tzt.

Das war&#8217;s. Bis zum Ende des Beitrags kommt der Autor kein zweites Mal auf HTML5 zu sprechen.


Bitte, was soll das? Gibt es bei Euch noch eine Redaktion, die sich der inhaltlichen Abstimmung der Beitr&#228;ge verpflichtet f&#252;hlt, oder redigiert und ver&#246;ffentlicht jetzt nur noch Euer Marketing die Beitr&#228;ge?

Ich habe in der Vergangenheit zu verschiedenen Themen und auf verschiedenen Kan&#228;len (Skype, Twitter, Kommentare, Blogposts) Feedback an Eure Redaktion weitergegeben. Doch die konstruktive Kritik scheint Euch nicht zu interessieren. 

Das ist schade, denn scheinbar bemerkt ihr auch nicht, dass Ihr damit auch dem vorgestellten Projekt Contao keinen Gefallen tut. In Bezug auf HTML5 ist der Beitrag noch nicht einmal entt&#228;uschend. Er geht v&#246;llig am Thema der &#220;berschrift vorbei. Dabei g&#228;be es wirklich interessante Fragen. Jedes halbwegs gute CMS &#252;berl&#228;sst heute dem Anwender die Kontrolle &#252;ber das Markup des Seitenlayouts. Aber sp&#228;testens bei den Inhalten wird es spannend, denn z.B. bei Formularen muss man sich bei fast jedem CMS mit irgendwelchen Generatoren oder Plugins auseinandersetzen. Diese haben n&#228;mlich meist eigene Vorstellungen hinsichtlich des verwendeten Markups und lassen dem Anwender selten Wahlm&#246;glichkeiten, solange man nicht selbst willens und fachlich dazu in der Lage ist, teils tief in den Code einzugreifen. Ein Paradebeispiel daf&#252;r ist nach H&#246;rensagen das Formularmodul von Drupal. Wie es hier bei Contao und dem Einsatz von HTML5 Formularelementen (und deren Validierung) momentan bestellt ist, w&#228;re durchaus hochinteressant zu erfahren gewesen. Oder was hinsichtlich der dynamischen Verwendung von HTML5 Elementen hinsichtlich IE6/7/8 Support zu beachten ist? Bei jQuery ist daf&#252;r seit v1.7 innerShiv integriert. Contao arbeitet jedoch standardm&#228;&#223;ig mit Mootools. Wie l&#228;uft das da? 

Stattdessen folgt auf das Buzzword&#45;Bingo (2x HTML5 innerhalb der ersten zwei Zeilen) nur eine, sagen wir durchschnittliche, Vorstellung des Content&#45;Management&#45;Systems. Da fragt man sich nat&#252;rlich: Warum gerade jetzt? Denn auf das vor 2 Wochen erschienene Release 2.11 und dessen Neuerungen geht der Beitrag genauso wenig ein.

Ihr seid das Fachmagazin. Wie kann es sein, dass Ihr auf solche Fragen nicht kommt und Euch dieses Informationsniveau f&#252;r Eure Leser ausreichend erscheint?

Kommen wir zu dem Punkt, warum ich mich &#252;berhaupt dar&#252;ber aufrege: Weil ... ich mir mehr deutschsprachige Fachblogs und Online&#45;Magazine zum Thema Frontendentwicklung w&#252;nsche, sich aber leider keine Alternativen aufdr&#228;ngen. Gleichzeitig verstehe ich nicht, warum es den vielen anderen Frontendentwicklern da drau&#223;en so egal ist, wohin sich das T3N Magazin seit einiger Zeit entwickelt. Das Smashing Magazine ist vor 2..3 Jahren &#228;hnlich in die Kritik geraten mit ihren endlosen &#8220;10 best anything&#8221; Toplisten&#45;Artikeln und es hat viel Kritik von au&#223;en und sicher sehr viel mehr Kraft von innen bedurft, um das Ruder wieder herumzurei&#223;en.

Aber vielleicht erwarte ich ja auch einfach nur zuviel vom Online&#45;Bereich des &#8220;f&#252;hrenden deutschsprachigen Printmediums zu den Themen Web 2.0, Social Media, E&#45;Business und Open Source&#8221;. 

Ich hoffe, in Eurer Redaktion ist noch jemand wach.</description>
      <dc:subject>Webdesign</dc:subject>
      <content:encoded><![CDATA[ <p>Liebes T3N Magazin,</p>

<p>Die &#220;berschrift Eures heutigen Beitrags &#8220;<a href="http://t3n.de/news/contao-open-source-cms-html5-372551/" title="Beitrags">Contao: Open-Source-CMS mit HTML5</a>&#8221; ist ein schlechter Witz. Der einzige Bezug des gesamten Beitrags zu Eurem Lieblings-Buzzword &#8220;HTML5&#8221; findet sich im <em>ersten</em> Satz: </p>

<blockquote><p>Contao ist ein Open-Source-CMS, das auf PHP basiert und HTML5 unterst&#252;tzt.</p></blockquote>

<p>Das war&#8217;s. Bis zum Ende des Beitrags kommt der Autor kein zweites Mal auf HTML5 zu sprechen.</p>

<p>
</p> <p>Bitte, was soll das? Gibt es bei Euch noch eine Redaktion, die sich der inhaltlichen Abstimmung der Beitr&#228;ge verpflichtet f&#252;hlt, oder redigiert und ver&#246;ffentlicht jetzt nur noch Euer Marketing die Beitr&#228;ge?</p>

<p>Ich habe in der Vergangenheit zu verschiedenen Themen und auf verschiedenen Kan&#228;len (Skype, Twitter, <a href="http://t3n.de/news/css3-dynamische-tabs-ohne-365861/#comment-60141" title="Kommentare">Kommentare</a>, <a href="http://www.highresolution.info/weblog/entry/hura_ein_css-framework_und_ein_rant/" title="Blogposts">Blogposts</a>) Feedback an Eure Redaktion weitergegeben. Doch die konstruktive Kritik scheint Euch nicht zu interessieren. </p>

<p>Das ist schade, denn scheinbar bemerkt ihr auch nicht, dass Ihr damit auch dem vorgestellten Projekt Contao keinen Gefallen tut. In Bezug auf HTML5 ist der Beitrag noch nicht einmal entt&#228;uschend. Er geht v&#246;llig am Thema der &#220;berschrift vorbei. Dabei g&#228;be es wirklich interessante Fragen. Jedes halbwegs gute CMS &#252;berl&#228;sst heute dem Anwender die Kontrolle &#252;ber das Markup des Seitenlayouts. Aber sp&#228;testens bei den Inhalten wird es spannend, denn z.B. bei Formularen muss man sich bei fast jedem CMS mit irgendwelchen Generatoren oder Plugins auseinandersetzen. Diese haben n&#228;mlich meist eigene Vorstellungen hinsichtlich des verwendeten Markups und lassen dem Anwender selten Wahlm&#246;glichkeiten, solange man nicht selbst willens und fachlich dazu in der Lage ist, teils tief in den Code einzugreifen. Ein Paradebeispiel daf&#252;r ist nach H&#246;rensagen das Formularmodul von Drupal. Wie es hier bei Contao und dem Einsatz von HTML5 Formularelementen (und deren Validierung) momentan bestellt ist, w&#228;re durchaus hochinteressant zu erfahren gewesen. Oder was hinsichtlich der dynamischen Verwendung von HTML5 Elementen hinsichtlich IE6/7/8 Support zu beachten ist? Bei <a href="http://blog.jquery.com/2011/11/03/jquery-1-7-released/">jQuery ist daf&#252;r seit v1.7 innerShiv</a> integriert. Contao arbeitet jedoch standardm&#228;&#223;ig mit Mootools. Wie l&#228;uft das da? </p>

<p>Stattdessen folgt auf das Buzzword-Bingo (2x HTML5 innerhalb der ersten zwei Zeilen) nur eine, sagen wir durchschnittliche, Vorstellung des Content-Management-Systems. Da fragt man sich nat&#252;rlich: Warum gerade jetzt? Denn auf das vor 2 Wochen erschienene Release 2.11 und dessen Neuerungen geht der Beitrag genauso wenig ein.</p>

<p>Ihr seid das Fachmagazin. Wie kann es sein, dass Ihr auf solche Fragen nicht kommt und Euch dieses Informationsniveau f&#252;r Eure Leser ausreichend erscheint?</p>

<p>Kommen wir zu dem Punkt, warum ich mich &#252;berhaupt dar&#252;ber aufrege: Weil ... ich mir mehr deutschsprachige Fachblogs und Online-Magazine zum Thema Frontendentwicklung w&#252;nsche, sich aber leider keine Alternativen aufdr&#228;ngen. Gleichzeitig verstehe ich nicht, warum es den vielen anderen Frontendentwicklern da drau&#223;en so egal ist, wohin sich das T3N Magazin seit einiger Zeit entwickelt. Das Smashing Magazine ist vor 2..3 Jahren &#228;hnlich in die Kritik geraten mit ihren endlosen &#8220;10 best anything&#8221; Toplisten-Artikeln und es hat viel Kritik von au&#223;en und sicher sehr viel mehr Kraft von innen bedurft, um das Ruder wieder herumzurei&#223;en.</p>

<p>Aber vielleicht erwarte ich ja auch einfach nur zuviel vom Online-Bereich des &#8220;<a href="http://yeebase.com/"><em>f&#252;hrenden deutschsprachigen Printmediums zu den Themen Web 2.0, Social Media, E-Business und Open Source</em></a>&#8221;. </p>

<p>Ich hoffe, in Eurer Redaktion ist noch jemand wach.
</p> ]]></content:encoded>
      <dc:date>2012-03-06T13:12:19+00:00</dc:date>
    </item>

    <item>
      <title>50 Tage Google+ - ein kurzer Erfahrungsbericht</title>
      <link><![CDATA[http://www.highresolution.info/weblog/entry/50_tage_google_ein_kurzer_erfahrungsbericht/]]></link>
      <description>Anfang Januar, nur wenige Tage vor dem Release von YAML 4 fiel die endg&#252;ltige Entscheidung dar&#252;ber, in welcher Form ich zuk&#252;nftig mein YAML Developer Blog betreibe. Damals, vor ca. 50 Tagen, habe ich mich f&#252;r ein Experiment  entschieden &#45; eine Projektseite auf Google+.


Begeistert hat mich das soziale Netzwerk schon seit seinem Start. Ich bin mit meinem privaten Account seit Anfang an dabei und habe die Offenheit und Kommentierfreudigkeit der dortigen Community sch&#228;tzen und lieben gelernt. Und obwohl ich anfangs meine Zweifel hatte, wie lange diese Euphorie wohl anhalten w&#252;rde (schlie&#223;lich fehlen noch immer eine gute &#246;ffentliche API und demzufolge auch Apps), bin ich bisher treu geblieben. Der zu Twitter vergleichbare Ansatz, Usern, deren Meinung man sch&#228;tzt, einfach folgen zu k&#246;nnen, f&#252;hrt zu einem angenehmen Klima in meiner Timeline. 

Mit diesen Erfahrungen im Hinterkopf stellte sich mir Anfang Januar die Frage, wie ich beim Relaunch von YAML.de mit dem Entwicklerblog weiterverfahre. Bis dahin lief die umfangreiche, zweisprachige Website auf einer recht m&#252;hsam eingerichteten und pfegeintensiven Typo3 Installation und diese &#45; das stand bereits fest &#45; w&#252;rde mit dem Relaunch einer Webpr&#228;senz aus simplen statischen Seiten weichen m&#252;ssen. Das alte Developer&#45;Blog setzte auf Wordpress und damit eigentlich auf eine sehr angenehme Arbeitsumgebung. Doch es war nie wirklich erfolgreich gewesen. Einerseits sind in 4 Jahren kaum mehr als 20 Beitr&#228;ge darin ver&#246;ffentlicht worden, andererseits hat es auch nie eine gute Reichweite entwickelt, denn die RSS&#45;Zugriffszahlen und Kommentare hielten sich in sehr &#252;berschaubaren Grenzen. Das waren f&#252;r mich zwei gute Gr&#252;nde, auch Wordpress den Laufpass zu geben und ein Experiment zu starten mit einer Projektseite bei Google+.

Die Vorteile sind dabei schnell erl&#228;utert. Der Administrationsaufwand sinkt auf ein Minimum und ich kann mich voll und ganz auf die Inhalte konzentrieren. Der Nachteil &#45; den man immer auch im Hinterkopf haben muss &#45; ist, ich pflege meine Inhalte nicht mehr auf meiner eigenen Domain (in meinem eigenen Haus). F&#252;r mein privates Blog w&#228;re dieser Gedanke auch heute unvorstellbar. F&#252;r das Entwicklerblog von YAML war es bisher eine ausgesprochen gute Entscheidung. 

Was ist seither passiert? 
Ich habe 19 Blogbeitr&#228;ge ver&#246;ffentlicht.Ich habe bisher 101 Kommentare erhalten.Meine Beitr&#228;ge wurden 75 Mal von anderen Nutzern geteilt,und 154 Mal mit einem &#8220;+1&#8221; versehen.Die Seite hat mit Stand heute 1519 Follower.

Soweit die technischen Daten. An dieser Stelle ist ein Vergleich zu Twitter interessant, denn auch dort bin ich mit dem Account @yamlcss seit Oktober 2009 aktiv und habe dort bei 143 Tweets bis heute 1897 Follower bekommen. F&#252;r mich sind beide Kan&#228;le momentan unverzichtbar, aber es zeigt, wie rasant Google+ w&#228;chst und vor allem bin ich von der Kommentarfreudigkeit und der Gespr&#228;chskultur auf Google+ begeistert. Beides fehlt auf Twitter mehr oder minder, Twitter ist nunmal ein Push&#45;Nachrichtenkanal, wirkliche Kommunikation stand bei diesem Dienst noch nie im Vordergrund. Und zuletzt war auch die Entscheidung, den Blog bei Google+, wie auch den Twitter&#45;Account, in Englisch zu bef&#252;ttern aus heutiger Sicht eine gute Wahl. Die Follower verteilen sich sehr gleichm&#228;&#223;ig rund um den Globus, was mich sehr freut, denn erstmals habe ich das Gef&#252;hl, meine Zielgruppe wirklich zu erreichen. 

Und das soll es als erste Einsch&#228;tzung auch gewesen sein. Die ersten Schritte sind gemacht, ich f&#252;hle mich in meinem Konzept best&#228;tigt und freue mich darauf, wie sich das Projekt in den n&#228;chsten Monaten weiterentwickelt.</description>
      <dc:subject>Hausinternes, YAML</dc:subject>
      <content:encoded><![CDATA[ <p>Anfang Januar, nur wenige Tage vor dem Release von YAML 4 fiel die endg&#252;ltige Entscheidung dar&#252;ber, in welcher Form ich zuk&#252;nftig mein <a href="https://plus.google.com/113701724985470452841/posts" title="YAML Developer Blog">YAML Developer Blog</a> betreibe. Damals, vor ca. 50 Tagen, habe ich mich f&#252;r ein Experiment  entschieden - eine Projektseite auf Google+.
</p> <p><img src="http://www.highresolution.info/images/uploads/yamlgoogleplus.jpg" border="0" alt="" class="center" width="450" height="335" /></p>

<p>Begeistert hat mich das soziale Netzwerk schon seit seinem Start. Ich bin mit meinem privaten Account seit Anfang an dabei und habe die Offenheit und Kommentierfreudigkeit der dortigen Community sch&#228;tzen und lieben gelernt. Und obwohl ich anfangs meine Zweifel hatte, wie lange diese Euphorie wohl anhalten w&#252;rde (schlie&#223;lich fehlen noch immer eine gute &#246;ffentliche API und demzufolge auch Apps), bin ich bisher treu geblieben. Der zu Twitter vergleichbare Ansatz, Usern, deren Meinung man sch&#228;tzt, einfach folgen zu k&#246;nnen, f&#252;hrt zu einem angenehmen Klima in meiner Timeline. </p>

<p>Mit diesen Erfahrungen im Hinterkopf stellte sich mir Anfang Januar die Frage, wie ich beim Relaunch von <a href="http://www.yaml.de" title="YAML.de">YAML.de</a> mit dem Entwicklerblog weiterverfahre. Bis dahin lief die umfangreiche, zweisprachige Website auf einer recht m&#252;hsam eingerichteten und pfegeintensiven Typo3 Installation und diese - das stand bereits fest - w&#252;rde mit dem Relaunch einer Webpr&#228;senz aus simplen statischen Seiten weichen m&#252;ssen. Das alte Developer-Blog setzte auf Wordpress und damit eigentlich auf eine sehr angenehme Arbeitsumgebung. Doch es war nie wirklich erfolgreich gewesen. Einerseits sind in 4 Jahren kaum mehr als 20 Beitr&#228;ge darin ver&#246;ffentlicht worden, andererseits hat es auch nie eine gute Reichweite entwickelt, denn die RSS-Zugriffszahlen und Kommentare hielten sich in sehr &#252;berschaubaren Grenzen. Das waren f&#252;r mich zwei gute Gr&#252;nde, auch Wordpress den Laufpass zu geben und ein Experiment zu starten mit einer Projektseite bei Google+.</p>

<p>Die Vorteile sind dabei schnell erl&#228;utert. Der Administrationsaufwand sinkt auf ein Minimum und ich kann mich voll und ganz auf die Inhalte konzentrieren. Der Nachteil - den man immer auch im Hinterkopf haben muss - ist, ich pflege meine Inhalte nicht mehr auf meiner eigenen Domain (in meinem eigenen Haus). F&#252;r mein privates Blog w&#228;re dieser Gedanke auch heute unvorstellbar. F&#252;r das Entwicklerblog von YAML war es bisher eine ausgesprochen gute Entscheidung. </p>

<p>Was ist seither passiert? 
</p><ul><li>Ich habe 19 Blogbeitr&#228;ge ver&#246;ffentlicht.</li><li>Ich habe bisher 101 Kommentare erhalten.</li><li>Meine Beitr&#228;ge wurden 75 Mal von anderen Nutzern geteilt,</li><li>und 154 Mal mit einem &#8220;+1&#8221; versehen.</li><li>Die Seite hat mit Stand heute 1519 Follower.</li></ul>

<p>Soweit die technischen Daten. An dieser Stelle ist ein Vergleich zu Twitter interessant, denn auch dort bin ich mit dem Account <a href="https://twitter.com/#!/yamlcss" title="@yamlcss">@yamlcss</a> seit Oktober 2009 aktiv und habe dort bei 143 Tweets bis heute 1897 Follower bekommen. F&#252;r mich sind beide Kan&#228;le momentan unverzichtbar, aber es zeigt, wie rasant Google+ w&#228;chst und vor allem bin ich von der Kommentarfreudigkeit und der Gespr&#228;chskultur auf Google+ begeistert. Beides fehlt auf Twitter mehr oder minder, Twitter ist nunmal ein Push-Nachrichtenkanal, wirkliche Kommunikation stand bei diesem Dienst noch nie im Vordergrund. Und zuletzt war auch die Entscheidung, den Blog bei Google+, wie auch den Twitter-Account, in Englisch zu bef&#252;ttern aus heutiger Sicht eine gute Wahl. Die Follower verteilen sich sehr gleichm&#228;&#223;ig rund um den Globus, was mich sehr freut, denn erstmals habe ich das Gef&#252;hl, meine Zielgruppe wirklich zu erreichen. </p>

<p>Und das soll es als erste Einsch&#228;tzung auch gewesen sein. Die ersten Schritte sind gemacht, ich f&#252;hle mich in meinem Konzept best&#228;tigt und freue mich darauf, wie sich das Projekt in den n&#228;chsten Monaten weiterentwickelt.
</p> ]]></content:encoded>
      <dc:date>2012-03-04T12:33:23+00:00</dc:date>
    </item>

    <item>
      <title>YAML 4 Release - Generationswechsel eingel&#228;utet</title>
      <link><![CDATA[http://www.highresolution.info/weblog/entry/yaml_4_-_generationswechsel/]]></link>
      <description>Es ist getan. Seit wenigen Minuten steht auf YAML.de nicht nur eine neue Version meines CSS Frameworks zum Download bereit, es gibt auch zahlreiche Ver&#228;nderungen: angefangen bei einem vollst&#228;ndig &#252;berarbeiteten Dokumentationskonzept &#252;ber einen neuen, zeitgem&#228;&#223;en Webauftritt bis zu einem neuen Lizenzmodell. Aber der Reihe nach ...


Das neue Dokumentationskonzept
Die Dokumentation von YAML wurde vollst&#228;ndig neu gestaltet. Sowohl 2005 (YAML 1) als auch 2007 (YAML 3) erschien es gerechtfertigt, neben dem &#8220;wie&#8221; der Anwendung auch das &#8220;warum&#8221; der technischen Realisierung) ausf&#252;hrlich zu erl&#228;utern. Es gab in diesen Jahren kaum vollst&#228;ndige Dokumentationen zum Umgang mit Browserbugs und die Grundkonzepte von CSS2 waren f&#252;r viele Entwickler noch vergleichsweise frisch. Diese Zeiten sind vorbei. Grobe CSS&#45;Bugs, die massiv das Rendering einer Webseite beeinflussen, sind in den aktuellen Browsern mehr oder weniger ausgestorben, die Macken der alten Browsergeneration sind in zahlreichen B&#252;chern und online umfassend dokumentiert. Zudem war die YAML&#45;Doku in ihrer PDF&#45;Fassung auf satte 150 Seiten angewachsen, die Pflege und Fortschreibung in zwei Sprachen war nicht mehr zu leisten.

Das neue Dokumentationskonzept behandelt zuk&#252;nftig nur noch die Anwendung der einzelnen Features &amp;ndash; also das &#8220;wie&#8221;. Lohn dieses neuen Konzepts: die Doku liegt nun als offline&#45;taugliche HTML&#45;Datei dem Zip&#45;Paket des Frameworks bei und dient gleichzeitig als Kurzreferenz. Code&#45;Schnipsel k&#246;nnen direkt per copy &amp;amp; paste in das eigenen Projekt &#252;bernommen werden. Daf&#252;r steht die Dokumentation zuk&#252;nftig nur noch in englischer Sprache zur Verf&#252;gung. Mir ist es sehr wichtig, eine m&#246;glichst gut verst&#228;ndliche und vollst&#228;ndige Dokumentation liefern zu k&#246;nnen, weshalb mich in der Vergangenheit immer wieder kleine Unterschiede in den Sprachversionen gest&#246;rt haben. Die CSS Dateien des Frameworks sind hingegen auch weiterhin &#252;berwiegend zweisprachig dokumentiert.



Nun zu den wichtigsten Neuerungen bei YAML selbst. Im M&#228;rz 2011 hatte ich ja bereits &#252;ber einige der geplanten &#196;nderungen bei YAML 4 gesprochen. Wer die Ank&#252;ndigungen verfolgt hat, wird &#252;ber die folgenden Dinge nicht mehr ganz so &#252;berrascht sein.</description>
      <dc:subject>YAML, Webdesign</dc:subject>
      <content:encoded><![CDATA[ <p>Es ist getan. Seit wenigen Minuten steht auf <a href="http://www.yaml.de" title="YAML.de">YAML.de</a> nicht nur eine neue Version meines CSS Frameworks zum Download bereit, es gibt auch zahlreiche Ver&#228;nderungen: angefangen bei einem vollst&#228;ndig &#252;berarbeiteten Dokumentationskonzept &#252;ber einen neuen, zeitgem&#228;&#223;en Webauftritt bis zu einem neuen Lizenzmodell. Aber der Reihe nach ...
</p> <p><img src="http://www.highresolution.info/images/uploads/yaml4-screenshot-homepage.jpg" border="0" alt="" class="center" width="450" height="556" /></p>

<h3>Das neue Dokumentationskonzept</h3><p>
Die Dokumentation von YAML wurde vollst&#228;ndig neu gestaltet. Sowohl 2005 (YAML 1) als auch 2007 (YAML 3) erschien es gerechtfertigt, neben dem &#8220;wie&#8221; der Anwendung auch das &#8220;warum&#8221; der technischen Realisierung) ausf&#252;hrlich zu erl&#228;utern. Es gab in diesen Jahren kaum vollst&#228;ndige Dokumentationen zum Umgang mit Browserbugs und die Grundkonzepte von CSS2 waren f&#252;r viele Entwickler noch vergleichsweise frisch. Diese Zeiten sind vorbei. Grobe CSS-Bugs, die massiv das Rendering einer Webseite beeinflussen, sind in den aktuellen Browsern mehr oder weniger ausgestorben, die Macken der alten Browsergeneration sind in zahlreichen B&#252;chern und online umfassend dokumentiert. Zudem war die YAML-Doku in ihrer PDF-Fassung auf satte 150 Seiten angewachsen, die Pflege und Fortschreibung in zwei Sprachen war nicht mehr zu leisten.</p>

<p>Das neue Dokumentationskonzept behandelt zuk&#252;nftig nur noch die <em>Anwendung</em> der einzelnen Features &ndash; also das &#8220;wie&#8221;. Lohn dieses neuen Konzepts: die Doku liegt nun als offline-taugliche HTML-Datei dem Zip-Paket des Frameworks bei und dient gleichzeitig als Kurzreferenz. Code-Schnipsel k&#246;nnen direkt per <em>copy &amp; paste</em> in das eigenen Projekt &#252;bernommen werden. Daf&#252;r steht die Dokumentation zuk&#252;nftig nur noch in englischer Sprache zur Verf&#252;gung. Mir ist es sehr wichtig, eine m&#246;glichst gut verst&#228;ndliche und vollst&#228;ndige Dokumentation liefern zu k&#246;nnen, weshalb mich in der Vergangenheit immer wieder kleine Unterschiede in den Sprachversionen gest&#246;rt haben. Die CSS Dateien des Frameworks sind hingegen auch weiterhin &#252;berwiegend zweisprachig dokumentiert.</p>

<p><img src="http://www.highresolution.info/images/uploads/yaml4-screenshot-docs.jpg" border="0" alt="" class="center" width="450" height="282" /></p>

<p>Nun zu den wichtigsten Neuerungen bei YAML selbst. Im M&#228;rz 2011 hatte ich ja bereits &#252;ber einige der geplanten <a href="http://www.highresolution.info/weblog/entry/yaml_4_zwischenstand/" title="&#196;nderungen bei YAML 4">&#196;nderungen bei YAML 4</a> gesprochen. Wer die Ank&#252;ndigungen verfolgt hat, wird &#252;ber die folgenden Dinge nicht mehr ganz so &#252;berrascht sein.
</p> <h3>Namespaces</h3><p>
Eine der h&#228;ufigsten Quellen f&#252;r Probleme bei der Frontendentwicklung in Verbindung mit Content Management Systemen, speziell bei gr&#246;&#223;eren oder &#252;ber Jahre gewachsenen Projekten, sind Kollisionen von ID- und Klassennamen der bestehenden Inhalte mit dem neu zu integrierenden CSS Framework. Dies f&#228;ngt bei so beliebten Systemen wie Wordpress an, welches per default (und nicht ganz einfach zu unterbinden) die CSS Klasse <code>.page</code> an das &lt;body&gt;-Element vergibt und damit bereits mit der gleichlautenden Klasse von YAML 3.x kollidiert.</p>

<p>Ein weiteres Problem waren gro&#223;e, gewachsene Webprojekte. CSS-Klassen, wie <code>.wrapper</code> oder <code>.col1</code> sind seit vielen Jahren gebr&#228;uchlich. Hat ein Projekt erst einmal eine gewisse Gr&#246;&#223;e erreicht (ich rede hier von einigen tausend Seiten), ist die Wahrscheinlichkeit sehr gering, dass bei einem Relaunch wirklich alle Inhalte auf den neuesten Stand gebracht werden k&#246;nnen. Im Regelfall wird man es neben einigen frisch aufbereiteten Seiten mit viel Legacy-Code zu tun haben, der unvorhersehbares Konfliktpotential mit sich bringt.</p>

<p>In YAML 4 werden daher die CSS-Klassen (IDs werden durch das Framework nicht mehr definiert) der Kernbestandteile des Frameworks mit dem Pr&#228;fix <code>ym-</code> versehen. Nicht jeder wird sich &#252;ber diese Regelung freuen, denn zumindest ein wenig leidet immer auch die Lesbarkeit der Klassennamen. Entsprechend des Anwenderfeedbacks der letzten Jahre &#252;berwiegt in diesem Fall aber klar der Nutzen.</p>

<h3>HTML5, CSS3 und veraltete Browser</h3><p>
Aus technischer Sicht gibt es im Grunde kaum eine Neuheit, denn YAML unterst&#252;tzt bereits seit Version 3.3 von Hause aus HTML5 und auch f&#252;r den Umgang mit CSS3 waren die 3.x Versionen technisch bereits bestens ger&#252;stet. Dennoch hat sich hier eine Kluft zwischen der Codebasis des Frameworks und dem &#228;u&#223;eren Eindruck des Projektes ergeben, denn die alte YAML-Seite und insbesondere die Layoutbeispiele waren optisch tief und fest im Erstellungsjahr 2007 verankert und wirken seit einiger Zeit angestaubt und altbacken. Und so war es nur logisch, dass YAML nicht nur den CSS-Support f&#252;r die neuen HTML5 Elemente mitbringt, sondern dass die beiliegenden Layoutbeispiele diesen Weg auch aktiv beschreiten.</p>

<p>Der Internet Explorer 6 wird von YAML noch immer unterst&#252;tzt. Hier gibt es keine qualitativen Einschnitte im Kern des CSS Frameworks. Das ist auch nicht notwendig, denn YAML hat die notwendigen Anpassungen f&#252;r den IE6 und 7 schon immer separat (in der Datei <em>iehacks.css</em>) verwaltet. Ge&#228;ndert hat sich jedoch die Verwendung dieser Datei. In YAML 4 gibt es dar&#252;ber hinaus keine gesonderten Patch-Stylesheets f&#252;r den IE mehr, die <em>iehacks.css</em> wird fortan direkt &#252;ber den <em>Conditional Comment</em> eingebunden. Das bedeutet andererseits, dass ich in den Beispiellayouts keine Anstrengungen mehr unternehme, den bei Spaltenlayouts typischen 3-Pixel-Bug manuell zu fixen oder per JS-Expression einen Ersatz f&#252;r den fehlenden Support f&#252;r <code>min-width</code> / <code>max-width</code> mitliefere. F&#252;r letzteres gibt es bei Bedarf effektiven Ersatz in Form von <a href="https://github.com/scottjehl/Respond" title="Respond.js">Respond.js</a>. Wer dar&#252;ber hinausgehend weiterhin auf den Feinschliff f&#252;r den IE6 nicht verzichten will, dem steht der 3.x Versionspfad von YAML, einschlie&#223;lich des YAML Builders auch weiterhin zur Verf&#252;gung. Man kann sich dort auch weiterhin noch an den verwendeten Techniken bedienen.</p>

<p>F&#252;r den HTML5 Support im IE6-8 setze ich auf <a href="http://code.google.com/p/html5shim/" title="html5shim">html5shim</a>. In diesem Projekt gibt es aktuell viel Bewegung, es ist daher jedem, der tiefer in HTML5 einsteigen will empfohlen, sich mit den aktuellen Diskussionen und der Weiterentwicklung des Projekts zu besch&#228;ftigen.</p>

<h3>Flexibilit&#228;t eines CSS Frameworks</h3><p>
YAML wurde in der Vergangenheit als ein System beschrieben, welches ein mehr oder weniger umfangreiches bzw. fertiges Basislayout mitliefert. Aus diesem l&#246;scht der Anwender, was er im jeweiligen Projekt nicht ben&#246;tigt. In Version 1 konnte YAML nicht viel mehr, weshalb dieses Erkl&#228;rmodell in der Anfangszeit durchaus stimmig war. &#220;ber die nachfolgenden 6 Jahre hat sich das Projekt jedoch deutlich weiterentwickelt. Der Framework-Charakter wurde immer st&#228;rker herausgearbeitet und das Projekt durch zahlreiche optionale Bausteine (Grid-Elemente, Formulare, usw.) erg&#228;nzt.</p>

<p>Heute erwarten die Anwender eines CSS Frameworks eine klare Trennung der Framework-Logik vom Screen-Design. Eine Sammlung, aufeinander abgestimmter Bausteine (Layout, Navigation, Typographie, Formulare, Print), um effektiv und schnell Prototypen realisieren zu k&#246;nnen. Flexibilit&#228;t, nicht zwingend im Screen-Design selbst, sondern in Handhabung des Frameworks ist gefragt. Ein Wechsel des Gridrasters von 12 auf 24 Spalten oder der Wechsel von einem fixen Grid auf eine fluides, sollte nicht dazu zwingen, auch das CSS Framework selbst wechseln zu m&#252;ssen. Wer ein Layout wahrhaft <em>responsive</em> gestalten will, braucht kein &#171;Responsive Framework&#187; mit einem willk&#252;rlich vorgegebenen Linarisierungspunkt, welcher sich an der Displayaufl&#246;sung aktueller Smartphones ausrichtet &#8211; diese sind unter Umst&#228;nden in 6 Monaten bereits wieder veraltet. Der Umbruch der einzelnen Layoutvarianten eines adaptiven Layouts sollte individuell f&#252;r jedes Design bestimmt werden. Frontententwickler ben&#246;tigen hierf&#252;r m&#246;glichst praktische und einfach zu handhabende Werkzeuge &#8211; das ist die Aufgabe des CSS Frameworks. Und in diesem Sinne habe ich YAML weiterentwickelt.</p>

<p>YAML 4 bietet deswegen keinen fest vorgegebenen Wert zur vollst&#228;ndigen Linearisierung der Layout-Module. Stattdessen w&#228;hle ich den Weg &#252;ber eine progressive Linearisierung des Layouts in mehreren Stufen. &#220;ber die Anzahl der Stufen und die &#220;bergangspunkte hat der Anwender vollst&#228;ndige Kontrolle und, obwohl das recht komplex klingen mag, die Anwendung ist letztlich sehr einfach und komfortabel. Was YAML nicht mitliefert, sind technische L&#246;sungen f&#252;r die bandbreitenoptimierte serverseitige Auslieferung von Medien (Bildern, Videos). Das ist erstens nicht die Aufgabe eines CSS Frameworks, zweitens gibt es zahlreiche Projekte, auf die im Bedarfsfall zur&#252;ckgegriffen werden kann.</p>

<h3>Die neue Website</h3><p>
<em>&laquo;Eat your own dog foot&raquo;</em> ist nicht nur ein gefl&#252;gelter Satz, es war schon immer Programm in meinen Projekten. Es ist deshalb nur logisch, dass es mit YAML 4 sowohl eine neue Website, als auch neue Layoutbeispiele geben musste, die sich auf dem aktuellen Stand der Technik bewegen, n&#228;mlich HTML5, CSS3 und Responsive Design. Drei Schlagworte, die im letzten Jahr leider z.T. Buzzword-Charakter angenommen haben, wor&#252;ber ich ja auch schon ein paar Worte <a href="http://www.highresolution.info/weblog/entry/hura_ein_css-framework_und_ein_rant/" title="hier im Blog">hier im Blog</a> verloren habe. Unabh&#228;ngig davon finde ich jedoch, dass ein CSS Framework nicht nur versprechen, sondern auch zeigen sollte, was die angebotenen Features zu leisten im Stande sind &#8211; und zwar im Produktivbetrieb und nicht nur in einfachen HTML-Demos.</p>

<h3>Lizenzbedingungen und ein neues Lizenzmodell</h3><p>
Mit dem Release von YAML 4 ver&#246;ffentliche ich auch neue, anwaltlich gepr&#252;fte Lizenztexte f&#252;r die beiden bisherigen kommerziellen Lizenzmodelle von YAML, die Projektlizenz und die Generelle Lizenz. Bei Erstellung der Texte wurde darauf geachtet, dass der Status Quo der Nutzungsrechte erhalten bleibt und sich f&#252;r bestehende Projekte und Lizenznehmer keine &#196;nderungen ergeben. Die Lizenztexte sind auf YAML.de vollst&#228;ndig in englischer Sprache hinterlegt. Neben der englischen Fassung gibt es die Lizenztexte nat&#252;rlich auch in Deutsch - nachzulesen in K&#252;rze (1..2 Tage brauchen wir noch) im YAML-Shop.</p>

<p>Neu hinzugekommen und sicherlich interessant f&#252;r CMS-Projekte, Templateshops oder Theme-Frameworks ist die OEM-Lizenz. &#220;ber dieses neue Lizenzmodell wird es m&#246;glich, YAML fest in andere Projekte zu integrieren und die Nutzungsrechte an Endkunden &#252;bertragbar zu gestalten. Als Beispiel hierf&#252;r sei das Wordpress-Framework <a href="http://de.xtreme-theme.com/xtreme-one/" title="Xtreme One">Xtreme One</a> genannt, welches bereits <a href="http://de.xtreme-theme.com/2011/07/xtreme-one-mit-yaml-oem-lizenz/" title="seit dem Sommer 2011">seit dem Sommer 2011</a> mit einer solchen OEM-Lizenz ausgestattet ist und Endanwendern automatisch die vollen Nutzungsrechte f&#252;r YAML sichert.<strong></p>

<p>Nachtrag:</strong> Die offiziellen (etwas knapper gefassten) englischsprachigen Release Notes gibt es <a href="https://plus.google.com/113701724985470452841/posts/MTP89aEEJoj" title="hier dr&#252;ben">hier dr&#252;ben</a>. Die <a href="https://plus.google.com/u/0/b/113701724985470452841/113701724985470452841/posts" title="YAML Website auf Google+">YAML Website auf Google+</a> wird zuk&#252;nftig auch der von mir favorisierte Nachrichtenkanal sein. Deutschsprachiges und pers&#246;nlich angehauchte Infos gibt&#8217;s nat&#252;rlich weiterhin hier.
</p>]]></content:encoded>
      <dc:date>2012-01-18T11:39:34+00:00</dc:date>
    </item>

    <item>
      <title>Sublime Text 2 und JSLint</title>
      <link><![CDATA[http://www.highresolution.info/weblog/entry/sublime_text_2_und_jslint/]]></link>
      <description>Es hat nur wenige Tage gebraucht, um mit Sublime Text 2 warm zu werden. Dieser schlanke, spartanisch aussehende Editor hat es faustdick hinter den Ohren und mich erstaunlich schnell verzaubert. Das sch&#246;nste daran, es gibt ihn sowohl f&#252;r Windows, OSX als auch unter Linux. Es ist also &#252;berhaupt kein Problem, als Entwickler zwischen den einzelnen Welten hin&#45; und herzuspringen, die Entwicklungsumgebung ist immer mit dabei.
Sublime Text 2 kommt mit einer ganzen Reihe verschiedener Color&#45;Schemes daher. Ich pers&#246;nlich mag dunkle UIs, weil ich oft bis tief in die Nacht programmiere und kann das Monokai&#45;Theme empfehlen (gibt&#8217;s &#252;brigens auch f&#252;r Coda).</description>
      <dc:subject>CSS &amp;amp; XHTML, JavaScript, Software</dc:subject>
      <content:encoded><![CDATA[ <p>Es hat nur wenige Tage gebraucht, um mit Sublime Text 2 warm zu werden. Dieser schlanke, spartanisch aussehende Editor hat es faustdick hinter den Ohren und mich erstaunlich schnell verzaubert. Das sch&#246;nste daran, es gibt ihn sowohl f&#252;r Windows, OSX als auch unter Linux. Es ist also &#252;berhaupt kein Problem, als Entwickler zwischen den einzelnen Welten hin- und herzuspringen, die Entwicklungsumgebung ist immer mit dabei.
</p> <p><a href="http://www.sublimetext.com/2" title="Sublime Text 2">Sublime Text 2</a> kommt mit einer ganzen Reihe verschiedener Color-Schemes daher. Ich pers&#246;nlich mag dunkle UIs, weil ich oft bis tief in die Nacht programmiere und kann das Monokai-Theme empfehlen (<a href="http://justinhileman.info/coda-colors/" title="gibt's &#252;brigens auch f&#252;r Coda">gibt&#8217;s &#252;brigens auch f&#252;r Coda</a>). <br />
 
<img src="http://www.highresolution.info/images/uploads/st2-screenshot.jpg" border="0" alt="" class="center width="450" height="331" /></p>

<p>Eines der Highlights des Editors sind die zahlreichen Plugins. Zun&#228;chst solltet Ihr Euch aber <a href="http://wbond.net/sublime_packages/package_control" title="Package Control">Package Control</a> installieren, einen bequemen Paket-Manager f&#252;r Sublime Text 2. &#220;ber diesen k&#246;nnt Ihr dann bequem aus Liste die zu installierenden Pakete ausw&#228;hlen, die Installation geschieht in der Regel vollautomatisch. Als Empfehlung hier eine kleine Auswahl der bei mir installierten Pakete:</p>

<ul>
<li>Alignment - erleichtert die Ausrichtung des Quelltextes, z.B. vertikale Ausrichtung an Gleichheitszeichen</li>
<li>BracketHighlighter - Hervorhebung zusammengeh&#246;riger Klammern</li>
<li>Sublime JSLint - vollautomatisiertes Linting f&#252;r JavaScript Code aus dem Editor heraus. Bequemer geht es nicht mehr</li>
<li>Tortoise - Speziell f&#252;r Windows User interessant, erweitert es den Editor um Men&#252;eintr&#228;ge und Keyboard-Shortcuts zur Ansteuerung von Tortoise, dem defakto Standard-SVN-Client unter Windows</li>
<li>Zen Coding - komplexes Plugin zur Code-Vervollst&#228;ndigung f&#252;r HTML &amp; CSS</li>
</ul>

<h3>JSLint Konfiguration</h3><p>
Obgleich das JSLint Plugin auf Anbieb funktioniert (um eine Java-Runtime braucht man sich nicht k&#252;mmern, die kommt gleich mit), ist es dennoch sinnvoll, dem Linter ein wenig Wind aus den Segeln zu nehmen, um nicht von tausenden angeblichen Fehlermeldungen zugesch&#252;ttet zu werden. Die Konfiguration erfolgt &#252;ber ein Config-File, welches man im Editor selbst &#252;ber <em>Preferences->Package-Settings->JSLint->Settings-Default</em> erreicht.</p>

<p>Unter &#8220;jslint_options&#8221; kann man hier den Linter entsprechend der eigenen Vorlieben anpassen. Folgende Optionen habe ich gesetzt:</p>

<dl>
<dt>&#8212;predef $,document</dt><dd>Wer wie ich viel mit jQuery arbeitet, wird um die Option predef nicht herumkommen. Sie dient dazu, JSLint &#252;ber globale Variablen zu informieren, auf die der zu pr&#252;fende Code zugreift und deren Benutzung somit nicht als Fehler gewertet wird. F&#252;r jQuery sind das mindestens <code>$</code>, bzw. <code>jQuery</code> und <code>document</code>.</dd>
<dt>&#8212;white</dt><dd>Ist meinem pers&#246;nlichen Coding-Stil geschuldet, dass ich nicht von JSLint &#252;ber die Verwendung von Leerzeichen belehrt werden will.</dd>
<dt>&#8212;browser</dt><dd>Damit werden typische gobale Variablen der Browser verf&#252;gbar, z.B. <code>window</code>.</dd>
<dt>&#8212;sloppy</dt><dd>Sollte immer aktiviert werden, solange man noch nicht mit &#8220;use strict&#8221;; arbeitet.</dd>
</dl>

<p>Das ganze sieht dann fertig so aus:
</p><pre name="code" class="javascript:nocontrols">
// Options pass to jslint.
"jslint_options": "--predef $,document --white --sloppy --browser"
</pre>

<p>Eine vollst&#228;ndige Liste der Optionen gibt es <a href="https://github.com/fbzhong/sublime-jslint/wiki/Available-jslint4java-options" title="hier">hier</a>. Hat man das hinter sich gebracht, kann man den Linter jederzeit mit Crtl+J anschmei&#223;en und sich anschlie&#223;end gem&#252;tlich durch die Fehlerliste navigieren. So bequem hatte ich es bisher in keinem Editor.</p>

<p>&nbsp;</p>

<p>&nbsp;</p> ]]></content:encoded>
      <dc:date>2011-12-31T18:07:41+00:00</dc:date>
    </item>

    <item>
      <title>Vom Schein und Sein eines Print-Stylesheets</title>
      <link><![CDATA[http://www.highresolution.info/weblog/entry/vom_schein_und_sein_eines_print_stylesheets/]]></link>
      <description>Der Beitrag &#8220;6 Things I Learned About Print Stylesheets From HTML5 Boilerplate&#8221; hat mich daran erinnert, dass ich schon lange mal ein paar Worte &#252;ber das HTML5 Boilerplate verlieren wollte. Ich halte dieses Projekt abseits des HTML5 Hypes f&#252;r eine geniale Sache, insbesondere wegen seines umfangreichen und ausgekl&#252;gelten Build&#45;Skripts und der mitgelieferten Apache&#45;Konfiguration per .htaccess. Bei den CSS&#45;Definitionen finde ich die Einbindung des Normalize.css Projekts sehr viel sinnvoller (wenn auch recht umfangreich) als die vielseits beliebten Reset&#45;Stylesheets von Eric Meyer oder YUI.
Die Vorgaben des Print&#45;CSS kann ich allerdings weniger empfehlen (ist aber auch weniger dramatisch). Speziell geht es mir um die &#8220;Print Friendly Links&#8221;, wie es der oben zitierte Beitrag nennt. Hier der betreffende Auszug aus dem HTML5 Boilerplate.

a[href]:after { content: &quot; (&quot; attr(href) &quot;)&quot;; }
abbr[title]:after { content: &quot; (&quot; attr(title) &quot;)&quot;; }
.ir a:after, a[href^=&quot;javascript:&quot;]:after,
a[href^=&quot;#&quot;]:after { content: &quot;&quot;; } /* Don&#39;t show links for images, or javascript/internal links */


Ich habe Vergleichbares (Automatische Auszeichnung von URLs, Akronymen und Abk&#252;rzungen) seit vielen Jahren in den YAML Druckstylesheets integriert, allerdings bin ich recht schnell wieder einen Schritt zur&#252;ck gegangen, indem ich diese Regeln nur noch auskommentiert mitliefere und das aus gutem Grund.

Es ist auf den ersten Blick sicher nachvollziehbar, dass verlinkte URLs beim Druck verloren gehen und man als zuvorkommender Webentwickler diese deshalb hinter dem Linktext mit ausdrucken will, damit f&#252;r den Anwender der Quellenverweis erhalten bleibt. Doch mal ehrlich: Wie oft hat jeder von Euch im letzten Jahr eine auf Papier abgedruckte URL in den Browser eingetippt? Und wie oft war diese dann l&#228;nger als 10 Zeichen? Ist die pauschale Ausgabe von URLs also wirklich sinnvoll?

Aus dem anvisierten Komfort f&#252;r den User wird in der Praxis schnell ein Nerv&#45;Feature &amp;ndash; und meist auch der Regelfall. Im Gegensatz zum Print arbeiten wir im Netz nicht mit Quellenverzeichnissen am Ende des Textes, sondern verlinken Schlagworte oder ganze S&#228;tze direkt und im Idealfall auch recht umfangreich. Allerdings steht im Netz die Querverlinkung dem Lesefluss und &#45;genuss auch nicht im Wege. Ausgedruckt ist ein solches Dokument allerdings nur noch bedingt gut lesbar, wenn der Flie&#223;text regelm&#228;&#223;ig durch lange, kryptische, nicht umbrechbare URLs unterbrochen wird. Ganz zu schweigen davon, dass sich die Mehrzahl der Anwender eben nicht diebisch dar&#252;ber freut, eine neue URL zum Abtippen gefunden zu haben.

Gleiches gilt f&#252;r die Anzeige der title&#45;Attribute von Abk&#252;rzungen. Gute Schreibe gebietet, dass Abk&#252;rzungen bei ihrem ersten Auftauchen im Text eingef&#252;hrt/erl&#228;utert werden. Aber eben nur beim ersten Mal (vielleicht noch beim zweiten, dann ist aber gut). Das Einpflegen von Akronymen und Abk&#252;rzungen erledigt im HTML aber fast niemand von Hand &#45; weil es recht l&#228;stig und umst&#228;ndlich ist. Daf&#252;r gibt es bei vielen Content Management Systeme entsprechende Plugins, die diese Aufgabe automatisch anhand von Wortlisten &#252;bernehmen. Auch daran gibt auf den ersten Blick nichts auszusetzen, denn schlie&#223;lich wird das title&#45;Attribut nur angezeigt, wenn der Anwender das Element mit der Maus ansteuert und dar&#252;ber verweilt. Aber schon Nutzer von Screenreadern d&#252;rften derartige Automatismen st&#246;ren, wenn z.B. in einem Webdesign&#45;Fachtext hinter jedem jedem HTML (Hypertext Markup Language) steht/vorgelesen wird. Und Lesern eines ausgedruckten Dokuments geht es da nicht anders. 

Die sichtbare Auszeichnung von URLs und Abk&#252;rzungen ist per Definition weder unn&#252;tz noch sch&#228;dlich. Allerdings ist sie eben nur dann sinnvoll, wenn die Inhalte entsprechend sorgf&#228;ltig dahingehend aufbereitet sind, in dem beispielsweise nur die URL von besonders gekennzeichneten Links ausgegeben wird. Genauso wie der Ausdruck der title&#45;Attribute von Abk&#252;rzungen nur dann f&#252;r den User sinnvoll ist, wenn die Texte auch entsprechend sorgf&#228;ltig aufbereitet werden. Andernfalls kann beides schnell zum billigen Werbefeature des Entwicklers werden, welches u.U. deutlich an den Interessen des Lesers (Internetausdruckers) vorbei geht. 

Und so versteckt sich auch im HTML5 Boilerplate die eine oder andere Regel, deren Nutzen mehr Schein als Sein ist, wenn man sie gedankenlos &#252;bernimmt.</description>
      <dc:subject>CSS &amp;amp; XHTML, Webdesign, Zug&#228;nglichkeit</dc:subject>
      <content:encoded><![CDATA[ <p>Der Beitrag &#8220;<a href="http://designshack.net/articles/css/6-thinks-i-learned-about-print-stylesheets-from-html5-boilerplate/" title="6 Things I Learned About Print Stylesheets From HTML5 Boilerplate">6 Things I Learned About Print Stylesheets From HTML5 Boilerplate</a>&#8221; hat mich daran erinnert, dass ich schon lange mal ein paar Worte &#252;ber das <a href="http://html5boilerplate.com/" title="HTML5 Boilerplate">HTML5 Boilerplate</a> verlieren wollte. Ich halte dieses Projekt abseits des HTML5 Hypes f&#252;r eine geniale Sache, insbesondere wegen seines umfangreichen und ausgekl&#252;gelten Build-Skripts und der mitgelieferten Apache-Konfiguration per .htaccess. Bei den CSS-Definitionen finde ich die Einbindung des <a href="http://necolas.github.com/normalize.css/" title="Normalize.css">Normalize.css</a> Projekts sehr viel sinnvoller (wenn auch recht umfangreich) als die vielseits beliebten Reset-Stylesheets von Eric Meyer oder YUI.
</p> <p>Die Vorgaben des Print-CSS kann ich allerdings weniger empfehlen (ist aber auch weniger dramatisch). Speziell geht es mir um die &#8220;Print Friendly Links&#8221;, wie es der oben zitierte Beitrag nennt. Hier der betreffende Auszug aus dem HTML5 Boilerplate.</p>

<pre name="code" class="css:nocontrols">a[href]:after { content: " (" attr(href) ")"; }
abbr[title]:after { content: " (" attr(title) ")"; }
.ir a:after, a[href^="javascript:"]:after,
a[href^="#"]:after { content: ""; } /* Don't show links for images, or javascript/internal links */
</pre>

<p>Ich habe Vergleichbares (<a href="http://www.yaml.de/de/dokumentation/css-bausteine/das-drucklayout.html" title="Automatische Auszeichnung von URLs, Akronymen und Abk&#252;rzungen">Automatische Auszeichnung von URLs, Akronymen und Abk&#252;rzungen</a>) seit vielen Jahren in den <a href="http://http://www.yaml.de" title="YAML">YAML</a> Druckstylesheets integriert, allerdings bin ich recht schnell wieder einen Schritt zur&#252;ck gegangen, indem ich diese Regeln nur noch <em>auskommentiert </em>mitliefere und das aus gutem Grund.</p>

<p>Es ist auf den ersten Blick sicher nachvollziehbar, dass verlinkte URLs beim Druck verloren gehen und man als zuvorkommender Webentwickler diese deshalb hinter dem Linktext mit ausdrucken will, <em>damit f&#252;r den Anwender der Quellenverweis erhalten bleibt</em>. Doch mal ehrlich: Wie oft hat jeder von Euch im letzten Jahr eine auf Papier abgedruckte URL in den Browser eingetippt? Und wie oft war diese dann l&#228;nger als 10 Zeichen? Ist die pauschale Ausgabe von URLs also wirklich sinnvoll?</p>

<p>Aus dem anvisierten Komfort f&#252;r den User wird in der Praxis schnell ein Nerv-Feature &ndash; und meist auch der Regelfall. Im Gegensatz zum Print arbeiten wir im Netz nicht mit Quellenverzeichnissen am Ende des Textes, sondern verlinken Schlagworte oder ganze S&#228;tze direkt und im Idealfall auch recht umfangreich. Allerdings steht im Netz die Querverlinkung dem Lesefluss und -genuss auch nicht im Wege. Ausgedruckt ist ein solches Dokument allerdings nur noch bedingt gut lesbar, wenn der Flie&#223;text regelm&#228;&#223;ig durch lange, kryptische, nicht umbrechbare URLs unterbrochen wird. Ganz zu schweigen davon, dass sich die Mehrzahl der Anwender eben nicht diebisch dar&#252;ber freut, eine neue URL zum Abtippen gefunden zu haben.</p>

<p>Gleiches gilt f&#252;r die Anzeige der title-Attribute von Abk&#252;rzungen. Gute Schreibe gebietet, dass Abk&#252;rzungen bei ihrem ersten Auftauchen im Text eingef&#252;hrt/erl&#228;utert werden. Aber eben nur beim ersten Mal (vielleicht noch beim zweiten, dann ist aber gut). Das Einpflegen von Akronymen und Abk&#252;rzungen erledigt im HTML aber fast niemand von Hand - weil es recht l&#228;stig und umst&#228;ndlich ist. Daf&#252;r gibt es bei vielen Content Management Systeme entsprechende Plugins, die diese Aufgabe automatisch anhand von Wortlisten &#252;bernehmen. Auch daran gibt auf den ersten Blick nichts auszusetzen, denn schlie&#223;lich wird das title-Attribut nur angezeigt, wenn der Anwender das Element mit der Maus ansteuert und dar&#252;ber verweilt. Aber schon Nutzer von Screenreadern d&#252;rften derartige Automatismen st&#246;ren, wenn z.B. in einem Webdesign-Fachtext hinter jedem jedem HTML (Hypertext Markup Language) steht/vorgelesen wird. Und Lesern eines ausgedruckten Dokuments geht es da nicht anders. </p>

<p>Die sichtbare Auszeichnung von URLs und Abk&#252;rzungen ist per Definition weder unn&#252;tz noch sch&#228;dlich. Allerdings ist sie eben nur dann sinnvoll, wenn die Inhalte entsprechend sorgf&#228;ltig dahingehend aufbereitet sind, in dem beispielsweise nur die URL von besonders gekennzeichneten Links ausgegeben wird. Genauso wie der Ausdruck der title-Attribute von Abk&#252;rzungen nur dann f&#252;r den User sinnvoll ist, wenn die Texte auch entsprechend sorgf&#228;ltig aufbereitet werden. Andernfalls kann beides schnell zum billigen Werbefeature des Entwicklers werden, welches u.U. deutlich an den Interessen des Lesers (Internetausdruckers) vorbei geht. </p>

<p>Und so versteckt sich auch im HTML5 Boilerplate die eine oder andere Regel, deren Nutzen <q>mehr Schein als Sein</q> ist, wenn man sie gedankenlos &#252;bernimmt. 
</p> ]]></content:encoded>
      <dc:date>2011-11-16T13:30:56+00:00</dc:date>
    </item>

    <item>
      <title>Kurzreview: jQuery-Workshop bei Undsoversity</title>
      <link><![CDATA[http://www.highresolution.info/weblog/entry/kurzreview_jquery-workshop_bei_undsoversity/]]></link>
      <description>jQuery hat zweifelsfrei f&#252;r viele Anwender und vor einigen Jahren auch f&#252;r mich den Weg zum Verst&#228;ndnis von DOM Scripting und JavaScript geebnet. Insofern ist es wenig verwunderlich, dass mehr und mehr Lehrmaterial f&#252;r jQuery auf den Markt kommt, welches sich gezielt an Einsteiger richtet und mit schnellen Ergebnissen begeistern will.
Das neueste Projekt in dieser Hinsicht ist ein sechsst&#252;ndiger jQuery Video&#45;Workshop von Gerrit van Aaken, der seit ein paar Tagen bei Undsoversity zum Kauf bereit steht und sich ausdr&#252;cklich an Einsteiger richtet. Um sich vor dem Kauf einen Eindruck vom Gebotenen verschaffen zu k&#246;nnen, stehen insgesamt drei Kapitel (Events und EventListener, Inline&#45;Bildergalerie und ein interaktiver HTML5&#45;Videoplayer) mit einer Gesamtl&#228;nge von fast 2 Stunden (fast 1/3 der Gesamtl&#228;nge) kostenfrei auf YouTube bereit.

Aufgebaut sind die einzelnen Themenbl&#246;cke als Live&#45;Coding Sessions in denen zu Beginn eine Aufgabe vorgestellt wird, die im Anschluss als &#8220;Blick &#252;ber die Schulter&#8221; des Tutors mit HTML, CSS und eben jQuery (Anm: JavaScript sage ich hier bewusst nicht, denn JavaScript scheint kaum thematisiert zu werden) gel&#246;st werden. Die Art und Weise der Pr&#228;sentation finde ich von Konzept her gelungen und besonders interessant f&#252;r Autodidakten (wie mich), die lieber durch Probieren als durch dumpfes Lesen neue Dinge lernen. Der Zuschauer kann die schrittweise Entwicklung des Programmcodes anhand konkreter Aufgabenstellungen miterleben und so dessen Logik sehr viel einfacher nachvollziehen, als beispielsweise aus einem sp&#228;rlich kommentiertem, 2&#45;seitigen Abdruck eines fertigen Quelltextes in einem Buch.</description>
      <dc:subject>Tutorials, jQuery</dc:subject>
      <content:encoded><![CDATA[ <p>jQuery hat zweifelsfrei f&#252;r viele Anwender und vor einigen Jahren auch f&#252;r mich den Weg zum Verst&#228;ndnis von DOM Scripting und JavaScript geebnet. Insofern ist es wenig verwunderlich, dass mehr und mehr Lehrmaterial f&#252;r jQuery auf den Markt kommt, welches sich gezielt an Einsteiger richtet und mit schnellen Ergebnissen begeistern will.
</p> <p>Das neueste Projekt in dieser Hinsicht ist ein sechsst&#252;ndiger <a href="http://www.undsoversity.de/detailed.php?id=10" title="jQuery Video-Workshop">jQuery Video-Workshop</a> von <a href="http://praegnanz.de" title="Gerrit van Aaken">Gerrit van Aaken</a>, der seit ein paar Tagen bei <a href="http://www.undsoversity.de" title="Undsoversity">Undsoversity</a> zum Kauf bereit steht und sich ausdr&#252;cklich an Einsteiger richtet. Um sich vor dem Kauf einen Eindruck vom Gebotenen verschaffen zu k&#246;nnen, stehen insgesamt drei Kapitel (<a href="http://www.youtube.com/watch?v=XeV-9-PFS1s" title="Events und EventListener">Events und EventListener</a>, <a href="http://www.youtube.com/watch?v=X3gNErTIXjI" title="Inline-Bildergalerie">Inline-Bildergalerie</a> und ein <a href="http://www.youtube.com/watch?v=R5Q7Ket4T5w" title="interaktiver HTML5-Videoplayer">interaktiver HTML5-Videoplayer</a>) mit einer Gesamtl&#228;nge von fast 2 Stunden (fast 1/3 der Gesamtl&#228;nge) kostenfrei auf YouTube bereit.</p>

<p>Aufgebaut sind die einzelnen Themenbl&#246;cke als Live-Coding Sessions in denen zu Beginn eine Aufgabe vorgestellt wird, die im Anschluss als &#8220;Blick &#252;ber die Schulter&#8221; des Tutors mit HTML, CSS und eben jQuery (Anm: JavaScript sage ich hier bewusst nicht, denn JavaScript scheint kaum thematisiert zu werden) gel&#246;st werden. Die Art und Weise der Pr&#228;sentation finde ich von Konzept her gelungen und besonders interessant f&#252;r Autodidakten (wie mich), die lieber durch Probieren als durch dumpfes Lesen neue Dinge lernen. Der Zuschauer kann die schrittweise Entwicklung des Programmcodes anhand konkreter Aufgabenstellungen miterleben und so dessen Logik sehr viel einfacher nachvollziehen, als beispielsweise aus einem sp&#228;rlich kommentiertem, 2-seitigen Abdruck eines fertigen Quelltextes in einem Buch.
</p> <p>Weniger gut gelungen ist die Umsetzung dieses Konzepts. Das Live-Coding ist eine hohe Kunst und offenbart immer dann seine T&#252;cken, wenn der Tutor nicht auf den Punkt vorbereitet ist. Ein bewusst eingebauter Logikfehler im Code zum Zwecke der Demonstration des Debuggings oder eines wichtigen logischen Schritts, ist sicherlich sinnvoll und l&#228;sst den Workshop authentisch und &#8220;lehrreich&#8221; wirken. Zuviele kleine Korrekturschleifen in zu kurzer Abfolge (speziell im Video-Kapitel) wirken hingegen mit der Zeit eher st&#246;rend. Beim Herauskopieren von Code-Schnipseln aus anderen Webseiten rinnen die Minuten der erkauften Zeit sehr viel schneller als man denkt. In einem kostenlosen Screencast, ist sowas kein Problem. In einem kostenpflichtigen Lernvideo w&#252;nsche man sich dann doch ein etwas zielgerichtetes Arbeiten und Erkl&#228;rungen mit mehr Tiefgang anstatt reinem copy/paste (Stichwort: Mediaelement.js).</p>

<p>Gerrits Workshop richtet sich an Einsteiger ohne JavaScript-Kenntnisse. Der Einstieg erscheint auch butterweich, allerdings h&#228;tte ich mir gew&#252;nscht, dass man &#252;ber 18 Kapitel nicht nur die Komplexit&#228;t der Aufgaben, sondern auch den Anspruch an den Coding-Stil schrittweise steigert. So h&#228;tte man meiner Meinung nach nicht g&#228;nzlich auf das eine oder andere Standard-Pattern f&#252;r eine strukturierte JS-Programmierung verzichten m&#252;ssen. Selektoren, die innerhalb weniger Zeilen 4..5 Mal aufgerufen werden (teilweise auch innerhalb von Schleifen), darf man schonmal cachen. Das mag f&#252;r die konkreten Beispiele nicht lebenswichtig sein, hilft aber auch Einsteigern ein Gef&#252;hl f&#252;r m&#246;gliche Performance-Probleme zu entwickeln f&#252;r den Fall, dass auch mal gr&#246;&#223;ere Mengen an DOM-Manipulationen von N&#246;ten sind. Guten Stil muss man nicht zwingend theoretisch belehrend herunterbeten, gerade Einsteigern kann man ihn leicht vermitteln, indem man ihn einfach vorlebt.</p>

<p>Deutliche Kritik muss man an dem <a href="http://www.youtube.com/watch?v=R5Q7Ket4T5w" title="Kapitel zum interaktiven HTML5-Videoplayer">Kapitel zum interaktiven HTML5-Videoplayer</a> &#252;ben, denn dessen Codequalit&#228;t ist wirklich erschreckend schlecht. In diesem Kapitel sollen Produktinformationen zeitsynchron zu einem Video angezeigt werden. Die daf&#252;r erforderlichen Daten werden per Ajax vom Server dynamisch nachgeladen. Allerdings wird auf das Ergebnis dieses Ajax-Requests zugegriffen, ohne &#252;berhaupt auf dessen Existenz zu pr&#252;fen, bzw. auf seine Verf&#252;gbarkeit zu warten. Eine Callback-Funktion f&#252;r einen Ajax-Error (sowas soll&#8217;s ja auch geben) gibt&#8217;s ebenfalls nicht. Die Daten werden einfach als &#8220;verf&#252;gbar&#8221; erkl&#228;rt. Variablen werden nicht deklariert (sie werden dadurch zwangsweise global), eine Strukturierung des Codes &ndash; auch im Sinne einer einfacheren Wiederverwendung &ndash; findet nicht statt. Die globalen Variablen sind schon deshalb ein Problem, weil bereits bei einem zweiten Video gleicher Art auf der Seite, das Script sich zwangsl&#228;ufig selbst die Werte &#252;berschreibt. Dass dieses Codebeispiel &#252;berhaupt funktioniert, ist mehr als gl&#252;cklich. Denn die Asynchronit&#228;t der success-Callbacks, die sich aus dem Ajax-Request, wie auch aus der Initialisierung des Videoplayers ergeben, wird weder angesprochen, noch im Code ber&#252;cksichtigt und ich bin mir nicht sicher, ob dem Autor das Problem vollst&#228;ndig bewusst ist. Hier hat mindestens die Qualit&#228;tskontrolle versagt, wenn es denn eine gab.</p>

<p>An einer Stelle wird &#8220;<a href="http://icant.co.uk/articles/seven-rules-of-unobtrusive-javascript/" title="unobtrusive JavaScript">unobtrusive JavaScript</a>&#8221; erw&#228;hnt, kurze Zeit sp&#228;ter jedoch Teile einer Webseite initial per <del>JavaScript</del>, sorry: jQuery, ausgeblendet, die nur bei Interaktion sichtbar werden sollen. Damit wird das Konzept von unobtrusive JavaScript auf den Kopf gestellt, denn das Ausblenden funktioniert ohne JavaScript nunmal nicht, genauso wie das zugeh&#246;rige interaktive Feature. Das ist ein konzeptioneller Fehler, der ebenfalls vermeidbar gewesen w&#228;re. Auf diese Weise summieren sich kleine und gro&#223;e Unsauberkeiten.</p>

<p>Ich arbeite nun schon seit &#252;ber vier Jahren mit jQuery und habe in den Anfangszeiten neben einigen schnellen Erfolgen auch massenweise Fettn&#228;pfe erwischt, in die ich mangels besseren Wissens, schlechter Tutorials und unperformanter Plugins gestolpert bin. Gerade wenn mit dem R&#252;ckenwind der ersten Erfolgen der Mut w&#228;chst, sich an gr&#246;&#223;eren Aufgaben zu versuchen, ist ein sauberer Stil und ein solides Grundwissen nicht zu ersetzen. Deshalb hat mich <a href="http://praegnanz.de/weblog/jquery-workshop#c021811" title="Gerrits etwas schnippische Antwort">Gerrits schnippische Antwort</a> auf einen berechtigten, <a href="http://praegnanz.de/weblog/jquery-workshop#c021810" title="kritischen Kommentar">kritischen Kommentar</a> von Alexander Farkas (welcher auf weitere Probleme aufmerksam macht) aus seinem eigenen Blog sehr gewundert. Zitat:</p>

<blockquote><p>Was ist schon schlechter Programmierstil? Und vor allem: Was ist guter? Dar&#252;ber wirst du viele verschiedene Meinungen finden.&nbsp;   </p>

<p>Richtig ist, dass man vieles aus dem Workshop eleganter und effizienter l&#246;sen kann. Aber es ist ein Einsteiger-Workshop mit einem gewissen Crashkurs-Charakter. Da kann man nicht stundenlang &#252;ber Code-Qualit&#228;t theoretisieren. [...], denn in ein paar Stunden &#187;&#220;ber die Schulter gucken&#171; bringt man den Leuten eben am besten solche Dinge bei, die sie sofort anwenden k&#246;nnen.<br />
[...]<br />
Das Sch&#246;ne an jQuery ist doch gerade, dass damit Einsteiger schnell (<strong>und dreckig</strong>) zu tollen Ergebnissen kommen. [...] <strong>W&#252;rden alle Webdesigner deine Ma&#223;st&#228;be anlegen, gebe es deutlich weniger spannende Anwendungen von jQuery</strong>.</p></blockquote>

<p>Das (und ganz besonders die von mir fett hervorgehobenen Passage) hat mich vom Hocker gehauen. Es ist das eine, was man im Alltag mit jQuery/JavaScript anstellt. Es ist aber etwas anderes, wenn man vorgibt, Einsteigern etwas beizubringen zu wollen und sein Wissen zu Geld machen will. Da f&#252;hrt um Sorgfalt und Qualit&#228;t kein Weg herum. </p>

<p>Egal, wie viel oder wenig Zeit man f&#252;r die Vermittlung von Wissen hat. Man kann einen Einsteiger auf <em>irgendeinen</em> Weg f&#252;hren oder auf den <em>Richtigen</em>. Man wird ihn auf beiden Wegen nur ein paar erste Schritte begleiten k&#246;nnen und man kann ihm auf beiden Wegen schnelle Erfolge pr&#228;sentieren. Der Unterschied besteht in der Zeit danach, wenn die K&#228;ufer eines mit 39,99 EUR (Einstiegspreis: 34,99 EUR) im Vergleich zu den Videotrainings einiger renomierter Verlage nicht unbedingt g&#252;nstigen Video-Workshops, eigenst&#228;ndig weiterlaufen sollen. Jede Handwerker-Lehre beginnt damit, dass die Azubis lernen, dass man sein Werkzeug ordentlich behandelt und den Arbeitsplatz regelm&#228;&#223;ig aufr&#228;umt. Schwer vorstellbar, dass in einem Video-Workshop f&#252;r angehende Webentwickler derartige Werte keinen Platz mehr finden m&#252;ssen. </p>

<p>Gerrit weist in seinem <a href="http://praegnanz.de/weblog/jquery-workshop" title="Blogbeitrag">Blogbeitrag</a> ausdr&#252;cklich auf die angenehmen wirtschaftlichen Rahmenbedingungen bei Undoversity hin:</p>

<blockquote><p>Timo erledigt Produktion, Marketing, Vertrieb, Technik und Controlling in Eigenregie und ist dadurch mehrere Dimensionen effizienter als ein beliebiger Verlag es je sein k&#246;nnte. Und das kommt nat&#252;rlich auch den Tutoren zugute. Dass mein Anteil am Verkauf signifikant h&#246;her ausf&#228;llt als die 3&#8211;5%, die man sonst so bek&#228;me, ist logisch.</p></blockquote>

<p>Dem Lob an die Undsoversity-Macher schlie&#223;e ich mich uneingeschr&#228;nkt an, allerdings mit dem pers&#246;nlichen Nachsatz: Die Verlage, mit denen ich bei bisher als Autor oder Fachgutachter bei verschiedenen Projekten zusammengearbeitet habe, legen gro&#223;en Wert auf die inhaltliche Qualit&#228;t und deren Kontrolle. Es ist sch&#246;n, wenn die gesteigerte Effizienz zu h&#246;heren Einnahmen der Autoren f&#252;hrt &ndash; reich wird mit Fachb&#252;chern oder Videotrainings n&#228;mlich niemand. Aber die Qualit&#228;t der Produkte sollte in keinem Fall leiden, denn im Direktvertrieb ist eben auch direkt und ausschlie&#223;lich die eigene Reputation in Gefahr. Deshalb meine Empfehlung an Gerrit: die Schwachstellen identifizieren und den Workshop &#252;berarbeiten.</p>

<p>Ich weise darauf hin, dass sich meine Meinung ausschlie&#223;lich auf die drei Probekapitel des deutlich umfangreicheren jQuery-Workshops st&#252;tzt und die hier formulierte Kritik auch nur diese drei Kapitel betrifft. Zu den weiteren 15 Kapiteln kann ich nichts sagen, denn gekauft habe ich den Video-Workshop nicht. 
</p>]]></content:encoded>
      <dc:date>2011-10-21T18:39:29+00:00</dc:date>
    </item>

    
    </channel>
</rss>
