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

<channel>
	<title>Learning the World &#187; web development</title>
	<atom:link href="http://learningtheworld.eu/category/web-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://learningtheworld.eu</link>
	<description></description>
	<lastBuildDate>Tue, 06 Nov 2012 00:17:33 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9.1</generator>
	<item>
		<title>More CSS Drop Shadows For All Browsers</title>
		<link>http://learningtheworld.eu/2010/ms-box-shadow/</link>
		<comments>http://learningtheworld.eu/2010/ms-box-shadow/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 16:00:18 +0000</pubDate>
		<dc:creator><![CDATA[Martin Kliehm]]></dc:creator>
				<category><![CDATA[web development]]></category>
		<category><![CDATA[web standards]]></category>
		<category><![CDATA[blur]]></category>
		<category><![CDATA[box-shadow]]></category>
		<category><![CDATA[buttons]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[drop shadow]]></category>
		<category><![CDATA[eye-candy]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[IE7]]></category>
		<category><![CDATA[ie8]]></category>
		<category><![CDATA[jumping-through-loops]]></category>
		<category><![CDATA[pseudo 3d]]></category>
		<category><![CDATA[shadow]]></category>
		<category><![CDATA[visual effects]]></category>

		<guid isPermaLink="false">http://learningtheworld.eu/?p=1021</guid>
		<description><![CDATA[Thanks to the unstoppable advancements of web standards aiding mankind to overcome the real burdens of the 21st century, adding drop shadows  to boxes became much easier in recent years! No more PNG background images! Leaving the question aside whether drop shadows are really progressive and appropriate for a flat medium (anybody remember the fad of “3D” bulging buttons in the 1990ies?), I&#160;was confronted with the challenge of adding box shadows in Internet Explorer for a client project.&#160;[&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Thanks to the unstoppable advancements of web standards aiding mankind to overcome the real burdens of the 21st century, adding <strong>drop shadows</strong> to boxes became much easier in recent years! No more PNG background images! Leaving the question aside whether drop shadows are really progressive and appropriate for a flat medium (anybody remember the fad of &ldquo;3D&rdquo; <a href="http://www.handson.nu/">bulging buttons</a> in the 1990ies?), I&nbsp;was confronted with the challenge of adding box shadows in Internet Explorer for a client project.</p>

<p><strong>Pro tip:</strong> communicate to the client that shadows are a <strong>bonus feature</strong>. Your designers may disagree, but the site will not suffer considerably when special effects like box shadows, text shadows, or rounded corners are regarded as enhancements for decent browsers. However, your client&rsquo;s budget will suffer when they are determined to provide the same visual effects on outdated browsers such as <acronym title="Internet Explorer 6">IE6</acronym>. That said, here is the well-known method in <acronym title="Cascading Style Sheets, 3rd Edition">CSS3</acronym>:</p>

<ol class="code" title="CSS">
<li><code><strong>.wrapper</strong> {</code></li>
<li class="indent"><code>background-color: #fff;</code></li>
<li class="indent"><code>border: 1px solid #d30d01;</code></li>
<li class="indent"><code><em>box-shadow:</em> 4px 4px 4px rgba(0, 0, 0, 0.2);</code></li>
<li class="indent"><code>float: left;</code></li>
<li class="indent"><code>height: 75px;</code></li>
<li class="indent"><code>margin: 15px;</code></li>
<li class="indent"><code>padding: 10px;</code></li>
<li class="indent"><code>width: 75px;</code></li>
<li class="indent"><code><em>-moz-box-shadow:</em> 4px 4px 4px rgba(0, 0, 0, 0.2);</code></li>
<li class="indent"><code><em>-o-box-shadow:</em> 4px 4px 4px rgba(0, 0, 0, 0.2);</code></li>
<li class="indent"><code><em>-webkit-box-shadow:</em> 4px 4px 4px rgba(0, 0, 0, 0.2);</code></li>
<li><code>}</code></li>
</ol>

<ol class="code" title="HTML code">
<li><code>&lt;div class=&quot;<em>wrapper</em>&quot;&gt;</code></li>
<li class="indent"><code>&lt;p&gt;CSS box-shadow&lt;/p&gt;</code></li>
<li><code>&lt;/div&gt;</code></li>
</ol>

<p>At the same time when we rolled out the website, Robert Nyman came to the conclusion that the proprietary Microsoft <code>filter</code> for <a href="http://robertnyman.com/2010/03/16/drop-shadow-with-css-for-all-web-browsers/"><code>Shadow</code> looks much prettier than <code>DropShadow</code></a>, so I forgot about blogging myself as his solution doesn&rsquo;t rely on unsemantic markup and is more elegant:</p>

<ol class="code" title="CSS">
<li><code><strong>.wrapper</strong> {</code></li>
<li class="indent">/* For IE 8 */</li>
<li class="indent"><code><em>-ms-filter: progid:DXImageTransform.Microsoft.Shadow</em>( Strength=5, Direction=135, Color='#999999' );</code></li>
<li class="indent">/* For IE 5.5 &#8211; 7 */</li>
<li class="indent"><code><em>filter: progid:DXImageTransform.Microsoft.Shadow</em>( Strength=5, Direction=135, Color='#999999' );</code></li>
<li><code>}</code></li>
</ol>

<p>Note that you get slightly better effects when you choose a dark gray instead of black as shadow color. If you can live with the rendering of the third box below, don&rsquo;t read any further. <img src="http://learningtheworld.eu/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /> </p>

<p>However, applying the filter had the side effect that text inside the box wasn&rsquo;t anti-aliased in <acronym>IE</acronym> 6-8 anymore, and the shadow still didn&rsquo;t look decent enough. So we added an extra <code>span</code> and applied the <code>blur</code> filter on it.</p>

<p><img src="/wp-content/uploads/2010/08/screenshot-box-shadow.png" alt="Screenshot comparing the solutions for CSS drop shadows side by side" width="481" height="103" class="fullsize" /></p>

<p>That led to a more complex code as we needed an inner wrapper where the border and background is applied to, while the outer wrapper merely acted as a&nbsp;&hellip; wrapper, where the styles were reset to defaults. <acronym title="Hypertext Markup Language">HTML</acronym> first:</p>

<ol class="code" title="HTML code">
<li><code>&lt;div class=&quot;<em>wrapper ms-box-shadow</em>&quot;&gt;</code></li>
<li class="indent"><code><strong>&lt;div class=&quot;inner&quot;&gt;</strong></code></li>
<li class="indent double"><code>&lt;p&gt;<acronym>Internet Explorer</acronym> with blur filter&lt;/p&gt;</code></li>
<li class="indent"><code><strong>&lt;/div&gt;</strong></code></li>
<li class="indent"><code><strong>&lt;span class=&quot;shadow&quot;&gt;&lt;/span&gt;</strong></code></li>
<li><code>&lt;/div&gt;</code></li>
</ol>

<p>And here&rsquo;s the <acronym>CSS</acronym> that&rsquo;s added with Conditional Comments for <acronym>IE</acronym> 6-8 only (as <acronym>IE9</acronym> supports native <acronym>CSS</acronym> <code>box-shadow</code>, <a href="http://caniuse.com/#feat=css-boxshadow">more or less</a>). The shadow element is absolutely positioned, set behind the inner content and blown up to 100%. Not original, but it works:</p>

<ol class="code" title="CSS">
<li><code><strong>.wrapper, .inner</strong> {</code></li>
<li class="indent"><code>background-color: #fff;</code></li>
<li class="indent"><code>border: 1px solid #d30d01;</code></li>
<li class="indent"><code>height: 75px;</code></li>
<li class="indent"><code>padding: 10px;</code></li>
<li class="indent"><code><em>position: relative;</em></code></li>
<li class="indent"><code>width: 75px;</code></li>
<li><code>}</code></li>
<li><code><strong>.wrapper</strong> {</code></li>
<li class="indent"><code>float: left;</code></li>
<li class="indent"><code>margin: 15px;</code></li>
<li><code>}</code></li>
<li>/* reset wrapper styles to defaults; work-around for screwed box-model */</li>
<li><code><strong>.ms-box-shadow</strong> {</code></li>
<li class="indent"><code>background-color: transparent;</code></li>
<li class="indent"><code>border: 0 none;</code></li>
<li class="indent"><code>height: 95px;</code></li>
<li class="indent"><code>padding: 0;</code></li>
<li class="indent"><code>width: 95px;</code></li>
<li><code>}</code></li>
<li>/* Move the inner wrapper to the foreground */</li>
<li><code><strong>.inner</strong> {</code></li>
<li class="indent"><code><em>z-index: 50;</em></code></li>
<li><code>}</code></li>
<li>/* The shadow element */</li>
<li><code><strong>.shadow</strong> {</code></li>
<li class="indent"><code>background-color: #000;</code></li>
<li class="indent"><code>display: block;</code></li>
<li class="indent"><code><em>filter: progid:DXImageTransform.Microsoft.Blur</em>( makeShadow='true', pixelRadius=4, shadowOpacity=0.30 );</code></li>
<li class="indent"><code>height: 100%;</code></li>
<li class="indent"><code>left: 0;</code></li>
<li class="indent"><code><em>position: absolute;</em></code></li>
<li class="indent"><code>top: 0;</code></li>
<li class="indent"><code>width: 100%;</code></li>
<li class="indent"><code><em>z-index: 0;</em></code></li>
<li><code>}</code></li>
</ol>

<p>For some reason I got a more similar result with the <code>shadowOpacity</code> set to 30% instead of 20%.</p>

<h3>Where&rsquo;s the crux?</h3>

<p>If we are willing to ignore lots of bloated <acronym>CSS</acronym>: <strong><acronym>IE6</acronym> only blows the shadow up to 100% when the wrapper has a fixed height</strong>. This sucks, but unless you want to add more bloated code in JavaScript I don&rsquo;t know of any solution for this problem. Still <acronym>IE</acronym> 7-8 handle a value of 100% right, and there are many cases where the height is known. Take for example photos where you&#8217;d like to apply shadows, some buttons, or horizontal shades lying above images, like the <a href="http://dekabank.de/db/en/company/social-responsibility/">shadow of the second level navigation on this site</a>. Beautiful, isn&rsquo;t it?</p>
]]></content:encoded>
			<wfw:commentRss>http://learningtheworld.eu/2010/ms-box-shadow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guest Lecture on Accessibility</title>
		<link>http://learningtheworld.eu/2010/guest-lecture-accessibility/</link>
		<comments>http://learningtheworld.eu/2010/guest-lecture-accessibility/#comments</comments>
		<pubDate>Fri, 21 May 2010 15:00:34 +0000</pubDate>
		<dc:creator><![CDATA[Martin Kliehm]]></dc:creator>
				<category><![CDATA[accessibility]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[web standards]]></category>
		<category><![CDATA[frontend]]></category>
		<category><![CDATA[informatics]]></category>
		<category><![CDATA[johannes gutenberg-university]]></category>
		<category><![CDATA[lecture]]></category>
		<category><![CDATA[lectureship]]></category>
		<category><![CDATA[mainz]]></category>
		<category><![CDATA[talk]]></category>
		<category><![CDATA[W3C]]></category>

		<guid isPermaLink="false">http://learningtheworld.eu/?p=924</guid>
		<description><![CDATA[Last week I was invited to hold a guest lecture at the Johannes Gutenberg-University of Mainz about accessible websites. After the successful barcamp at the University of Mainz in November the executive director of the institute for informatics at that time, Prof. Dr. Herbert Göttler, had the idea to continue that contact. So now there is a small series of talks about current Internet practices. […]]]></description>
				<content:encoded><![CDATA[<p>Last week I was invited to hold a guest lecture at the <a href="http://www.informatik.uni-mainz.de/1211.php">Johannes Gutenberg-University of Mainz</a> about accessible websites. After the successful <a href="http://mainz.barcamp-rheinmain.de/">barcamp at the University of Mainz</a> in November the executive director of the institute for informatics at that time, Prof. Dr. Herbert Göttler, had the idea to continue that contact. So now there is a small series of talks about current Internet practices.</p>

<p>First I talked about the <strong>term of disability</strong> in a changing social and political context, then I lead to the demographic trend, hence to <strong>accessibility as an economic imperative</strong>. I showed a few barriers and techniques in practical examples as &ldquo;virtual wheelchair ramps&rdquo; and ended with an outlook on the challenges we currently face in the <acronym title="World Wide Web Consortium">W3C</acronym> <a href="http://www.w3.org/WAI/PF/HTML/wiki/Main_Page"><acronym title="Hypertext Markup Language">HTML</acronym> Accessibility Task Force</a>.</p>

<p>The slides are currently available only in German at <a href="http://www.slideshare.net/kliehm/barrierefreiheit-uni-mainz">Slideshare</a> where they can also be <a href="http://www.slideshare.net/kliehm/barrierefreiheit-uni-mainz/download">downloaded</a> (15 <acronym title="Megabyte">MB</acronym>). I will further adapt the slides and translate them for a Mozilla <acronym title="peer-to-peer university">P2PU</acronym> course in September, I appreciate your patience. There are also notes in the powerpoint file for a more detailed description.</p>

<p>But the story continues: beginning in the winter semester I&rsquo;ll have a <strong>lectureship</strong> once a week at the university, teaching organic frontend development with contemporary techniques. <img src="http://learningtheworld.eu/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> </p>

<p><object type="application/x-shockwave-flash" data="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=barrierefreiheit-uni-mainz-2010-05-11-100521105941-phpapp01&amp;stripped_title=barrierefreiheit-uni-mainz" width="500" height="412" style="margin-bottom: 1em;"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=barrierefreiheit-uni-mainz-2010-05-11-100521105941-phpapp01&amp;stripped_title=barrierefreiheit-uni-mainz" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/></object></p>
]]></content:encoded>
			<wfw:commentRss>http://learningtheworld.eu/2010/guest-lecture-accessibility/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Performance Optimization (WPO)</title>
		<link>http://learningtheworld.eu/2010/web-performance-optimization/</link>
		<comments>http://learningtheworld.eu/2010/web-performance-optimization/#comments</comments>
		<pubDate>Tue, 18 May 2010 15:00:37 +0000</pubDate>
		<dc:creator><![CDATA[Martin Kliehm]]></dc:creator>
				<category><![CDATA[web development]]></category>
		<category><![CDATA[web standards]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[aol]]></category>
		<category><![CDATA[backend]]></category>
		<category><![CDATA[bing]]></category>
		<category><![CDATA[book:isbn=0596522304]]></category>
		<category><![CDATA[book:isbn=0596529309]]></category>
		<category><![CDATA[frontend]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[netflix]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[shopzilla]]></category>
		<category><![CDATA[steve souders]]></category>
		<category><![CDATA[talks]]></category>
		<category><![CDATA[web performance optimization]]></category>
		<category><![CDATA[webmontag]]></category>
		<category><![CDATA[wpo]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://learningtheworld.eu/?p=929</guid>
		<description><![CDATA[Yesterday I held a talk at the Webmontag in Frankfurt about web performance optimization. According to the prophecy <acronym>WPO</acronym> will become an industry like <acronym title="Search Engine Optimization">SEO</acronym> in the near future. Tenni Theurer and Steve Souders began to examine the performance of websites at Yahoo! in 2003, I learned about it in 2006 from Nate Koechley and subsequently blogged about it. […]]]></description>
				<content:encoded><![CDATA[<p>Yesterday I held a talk at the <a href="http://webmontag.de/location/frankfurt/">Webmontag in Frankfurt</a> about <strong>web performance optimization</strong>. According to the prophecy <acronym>WPO</acronym> will become an industry like <acronym title="Search Engine Optimization">SEO</acronym> in the near future. Tenni Theurer and Steve Souders began to examine the performance of websites at Yahoo! in 2003, I learned about it in 2006 from <a href="/2006/atmedia-day-two/#koechley">Nate Koechley</a> and <a href="/2007/performance/">subsequently</a> <a href="/2007/performance-2/">blogged</a> about it. In the meantime Souders published two books about the topic and works today at Google.</p>

<p><object type="application/x-shockwave-flash" data="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=webmontag-performance-2010-100516152854-phpapp01&#038;stripped_title=performancewmfra" width="500" height="412" style="margin-bottom: 1em;"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=webmontag-performance-2010-100516152854-phpapp01&#038;stripped_title=performancewmfra" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/></object></p>

<p>The goal of web performance optimization is to become faster and smaller: research at Yahoo! and Google found that just 10-20% of the perceived loading time is caused by the server. A few years ago we thought performance was exclusively connected to the server. However, 80-90% of the loading time incurs in the frontend. Thus <acronym>WPO</acronym> is more efficient targeting the frontend.</p>

<p>Two important weak points are JavaScript files and the sheer number of files: JavaScript loads sequentially and blocks subsequent code until each file is loaded. Hence it shouldn&rsquo;t be located in the head, but in the foot of a page. Secondly older browsers, in particular Internet Explorer, will only load 2-4 files in parallel. Files queue up and get processed when it&rsquo;s their turn. Therefore aggregation of files is used for reducing the number of HTTP requests.</p>

<p>Several international companies have conducted research or just tracked the effects of optimization.</p>

<h3>Effects of slowness</h3>

<ul><li><strong>Amazon:</strong> 100 ms delay caused a <a href="http://glinden.blogspot.com/2006/11/marissa-mayer-at-web-20.html">1% drop in revenue</a>.</li>
<li><strong>Google:</strong> 400 ms delay caused a <a href="http://en.oreilly.com/velocity2009/public/schedule/detail/8523">0.59% decrease in search requests</a> per user (earlier tests list larger numbers).</li>
<li><strong>Yahoo!:</strong> 400 ms delay caused a <a href="http://slideshare.net/stoyan/dont-make-me-wait-or-building-highperformance-web-applications">5-9% decrease in traffic</a>.</li>
<li><strong>Bing:</strong> 2 seconds delay caused a <a href="http://en.oreilly.com/velocity2009/public/schedule/detail/8523">4.3% drop in revenue</a> per user.</li>
</ul>

<h3>Effects of speed</h3>

<ul><li><strong>Mozilla</strong> made their download page 2.2 seconds faster and was rewarded with an <a href="http://blog.mozilla.com/metrics/category/website-optimization">increase of 15.4% in downloads</a>.</li>
<li><strong>Google Maps</strong> reduced the file volume by 30% and observed a <a href="http://news.cnet.com/8301-10784_3-9954972-7.html">30% increase in map requests</a>.</li>
<li><strong>Netflix</strong> enabled gzip on the server; simply by this single action pages became 13-25% faster and <a href="http://en.oreilly.com/velocity2008/public/schedule/detail/3632">saved 50% of traffic volume</a>!</li>
<li><strong>Shopzilla</strong> succeeded in reducing the loading time from 7 down to 2 seconds, whereby the <a href="http://en.oreilly.com/velocity2009/public/schedule/detail/7709">conversion rate increased by 7-12%</a>, they observed a 25% increase in page requests, they were able to retire 50% of their servers, thus <a href="http://www.stevesouders.com/blog/2008/03/06/how-green-is-your-web-page/">saving energy costs</a>.</li>
<li><strong>AOL</strong> observed the <a href="http://scribd.com/doc/16878352/The-Secret-Weapons-of-the-AOL-Optimization-Team">number of page views</a> on several websites. While the fastest users requested 7-8 pages, the slowest only viewed 3-4.</li></ul>

<p>As a cream topping <strong>Google</strong> recently announced to factor in the <a href="http://googlewebmastercentral.blogspot.com/2010/04/using-site-speed-in-web-search-ranking.html">site speed as a parameter in web search ranking</a>.</p>

<p>Eventually pages become faster, clients are happy, generate more revenue and page views, while power consumption and CO<sub>2</sub> emissions decrease. Saved the world, again! And if you&rsquo;d like to contribute, start by checking the <a href="http://developer.yahoo.com/performance/rules.html">rules at Yahoo!</a> A few tricks beyond that can be found in the presentation which will be translated soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://learningtheworld.eu/2010/web-performance-optimization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Heroes &#8211; Transmedia Storytelling</title>
		<link>http://learningtheworld.eu/2010/heroes-transmedia-storytelling/</link>
		<comments>http://learningtheworld.eu/2010/heroes-transmedia-storytelling/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 16:00:19 +0000</pubDate>
		<dc:creator><![CDATA[Martin Kliehm]]></dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[society]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[crossmedia]]></category>
		<category><![CDATA[easter egg]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Heroes]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[MySpace]]></category>
		<category><![CDATA[Naboo]]></category>
		<category><![CDATA[NBC]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[Star Wars]]></category>
		<category><![CDATA[storytelling]]></category>
		<category><![CDATA[Tim Kring]]></category>
		<category><![CDATA[transmedia]]></category>
		<category><![CDATA[tv]]></category>
		<category><![CDATA[web comic]]></category>
		<category><![CDATA[webisode]]></category>

		<guid isPermaLink="false">http://learningtheworld.eu/?p=948</guid>
		<description><![CDATA[Another inspiring panel at SXSW featured Tim Kring as interviewee. He is a screenwriter and began his carrer with episodes for Knight Rider, achieved his breakthrough with the cult series Crossing Jordan and since 2006 with Heroes: in an alternative reality the protagonists discover they have super-powers. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Another inspiring panel at <a href="http://sxsw.com/interactive/"><acronym title="South by South West">SXSW</acronym></a> featured <a href="http://en.wikipedia.org/wiki/Tim_Kring">Tim Kring</a> as interviewee. He is a screenwriter and began his carrer with episodes for <em>Knight Rider</em>, achieved his breakthrough with the cult series <em>Crossing Jordan</em> and since 2006 with <strong><a href="http://en.wikipedia.org/wiki/Heroes_%28TV_series%29">Heroes</a></strong>: in an alternative reality the protagonists discover they have super-powers.</p>

<h3>What would Rupert do?</h3>

<p>The usual marketing scheme for a successful series would be selling licensed products. So there is a loveless website, t-shirts, coffee mugs, DVDs, comics, eventually the stars produce a mediocre pop song. Fan pages will be sued, and the industry would bitch about weak sales because of evil pirates. However we&rsquo;ve seen more successful ways, for example when the fantasy and science fiction novels that came along with <a href="http://en.wikipedia.org/wiki/Forgotten_Realms">Forgotten Realms</a> or <a href="http://en.wikipedia.org/wiki/Shadowrun">Shadowrun</a> became more popular than the original role-playing games. All those products are set in the same fictional world, but the different media remain closed in themselves: for understanding the novels it is not necessary to know the game.</p>

<p>Then what is <strong>transmedia</strong>? Here is a quick introduction:</p>

<p><object type="application/x-shockwave-flash" data="http://vimeo.com/moogaloop.swf?clip_id=8700233&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" width="500" height="281"><param name="movie" value="http://www.youtube.com/v/LQhXemwIXwg" /><param name="quality" value="high" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=8700233&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><a href="http://vimeo.com/8700233">Heroes Transmedia Storytelling Extensions</a></object></p>

<blockquote><p>&ldquo;Heroes provides the most innovative and immersive interactive TV experience on the web.&rdquo;</p></blockquote>

<p>Central in that universe is the <a href="http://www.nbc.com/heroes/evolutions/">TV series</a>, accompanied by a <a href="http://heroeswiki.com">wiki</a>, <a href="http://www.heroesrevealed.com/category/novels/">web comics</a> (in JPEG, flash or PDF format), several <a href="http://heroeswiki.com/Portal:Evolutions_Sites">websites</a>, mobile strategies, <a href="http://heroeswiki.com/Portal:Webisodes">webisodes</a> exclusively published on the web and many more &ndash; and they all form a narrative whole!</p>

<h3 style="margin-bottom: 0;">Transmedia Storytelling</h3>

<p><img alt="Primatech Paper business card" src="/wp-content/uploads/2010/03/heroes-business-card-e1281882258557.jpg" width="200" height="155" class="floatleft book" /> When a character doesn&rsquo;t appear in the series for a couple of episodes, their story goes on in the webcomics. The fictional characters have their own <a href="http://samantha48616e61.com">blogs</a>, pages on <a href="http://www.myspace.com/zachtothefuture">MySpace</a> and <a href="http://www.facebook.com/pages/Claire-Bennet/23868699231">Facebook</a> and ask their fans for help via SMS. Hanna even publishes <a href="http://heroeswiki.com/Global_News_Interactive">clips from news channels</a> in her blog. A fictional <a href="http://votepetrelli.com">candidate for the US congress</a> has his own website hacked by Hanna. Another discusses scientific theories in his book <a href="http://www.activatingevolution.org">Activating Evolution</a> (would be even more convincing if it was out-of-sale at Amazon). <a href="http://yamagatofellowship.org">Fictional</a> <a href="http://primatechpaper.com">companies</a> appear in the series, fans can <a href="http://www.pinehearstresearch.com/careers.shtml">apply for jobs</a> on their websites thus getting insider information, or they can <a href="http://www.primatechpaper.com/security/security_login.shtml">&ldquo;hack&rdquo; their surveillance cameras</a>. Fan fiction and art is supported and can eventually become part of the series.</p>

<p><img src="/wp-content/uploads/2010/03/naboo-peko.jpg" width="250" height="150" class="floatright book" alt="peko bird on Naboo" />That idea isn&rsquo;t exactly new, emotionally drawing in the fan base through &ldquo;secret&rdquo; information. As early as 1997, before the <strong>Star Wars</strong> prequels, George Lucas registered numerous domains temporarily forwarding to <em>starwars.com</em>. Then the information was spread around in Usenet and they observed which domains generated the most page views. Then a mysterious swamp environment was created at <a href="http://www.naboo.com">naboo.com</a>. Apart from the usual swamp noise we can hear the calls of the Peko bird and the Nuna toad. Subtly playing with the methods of <em>easter eggs</em> those animals will move across the screen when you enter &ldquo;peko&rdquo; or &ldquo;nuna&rdquo; hearing their sounds. After about five minutes the swamp water begins to ripple. If you click on it you originally landed on a simple <a href="http://www.naboo.com/swamp.html">page with background information</a>. Of course ten years later Heroes is editing and interweaving the content more elaborately &ndash; originally there were five people on their web team, now there are more than fifty.</p>

<p><img src="/wp-content/uploads/2010/03/screenshot-heroes-comic-e1281882604599.png" alt="panel from the web comic where the protagonist reads an SMS" width="200" height="217" class="floatleft book" /> Heroes has a world wide fan community &ndash; even in countries where the series isn&rsquo;t officially aired on TV. It&rsquo;s one of the most unauthorized downloaded torrents on the web. At least producer Tim Kring doesn&rsquo;t mind that: <a href="http://techdirt.com/articles/20100316/0140078576.shtml">Kring says</a> <strong>&ldquo;we fish where the fish are.&rdquo;</strong> The whole multimedia strategy is designed for numerous sources of income. If fans get hooked via illegal downloads, the company will earn money elsewhere with them.</p>

<p>Most importantly today&rsquo;s fans want to participate in &ldquo;their&rdquo; series, and this means more than offering contests and sueing them when they actually adopt content. Heroes is <em>the</em> pioneer massively involving their fan community into that complex alternate reality. The web provides the central communication platform, technically but most important creatively. In that depth this is an entirely new challenge for TV providers and Internet agencies!</p>
]]></content:encoded>
			<wfw:commentRss>http://learningtheworld.eu/2010/heroes-transmedia-storytelling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ada Lovelace Day 2010</title>
		<link>http://learningtheworld.eu/2010/ada-lovelace-day-2010/</link>
		<comments>http://learningtheworld.eu/2010/ada-lovelace-day-2010/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 22:00:43 +0000</pubDate>
		<dc:creator><![CDATA[Martin Kliehm]]></dc:creator>
				<category><![CDATA[society]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[Ada Lovelace Day]]></category>
		<category><![CDATA[Antonia Friedrich]]></category>
		<category><![CDATA[Antonia Odenweller]]></category>
		<category><![CDATA[Cransberg]]></category>
		<category><![CDATA[Friedrichsdorf]]></category>
		<category><![CDATA[invention]]></category>
		<category><![CDATA[Kransberg]]></category>
		<category><![CDATA[Phlipp Reis]]></category>
		<category><![CDATA[telephone]]></category>
		<category><![CDATA[women in technology]]></category>

		<guid isPermaLink="false">http://learningtheworld.eu/?p=761</guid>
		<description><![CDATA[Today is Ada Lovelace Day, an international day of blogging to celebrate the achievements of women in technology and science. This post is to commemorate my grandfather’s grandmother, Antonia Odenweller (1848-1911).]]></description>
				<content:encoded><![CDATA[<p class="intro">Today is <a href="http://findingada.com">Ada Lovelace Day</a>, an international day of blogging to celebrate the achievements of women in technology and science. Augusta Ada King, Countess of Lovelace, wrote the first programs for Charles Babbage&rsquo;s mechanical computer.</p>

<p><a href="http://www.flickr.com/photos/martin-kliehm/2259372820/in/set-72157603880355970/" class="floatleft"><img src="http://farm3.static.flickr.com/2164/2259372820_7a9f41a712_t.jpg" width="97" height="100" alt="Antonia Odenweller, born Friedrich" /></a> This post is to commemorate my grandfather&rsquo;s grandmother, <strong>Antonia Odenweller</strong>. She was born 33 years after Lady Ada, on January 7th, 1849, in Kransberg, a village in a valley of the Taunus mountains, about 30 <abbr title="kilometers">km</abbr> north of Frankfurt. She was the daughter of the mason Ludwig Friedrich<sup><a href="#fn1">1</a></sup> and his wife Eva.<sup><a href="#fn2">2</a></sup> My great-great-grandmother married Joseph Odenweller<sup><a href="#fn3">3</a></sup> in 1870 who served as a combat medic in the Franco-Prussian War 1870/71, where he received an internal wound that led to his early decease in 1878 at the age of 30. Antonia died March 3rd, 1911, in Usingen.</p>

<p>So what&rsquo;s got that to do with technology, you ask? Here&rsquo;s what my grandfather Wilhelm Kliehm wrote about her in his diary,<sup><a href="#fn4">4</a></sup> more than 50 years ago:</p>

<blockquote><p>Due to the early loss of her bread-winner my grandmother had to earn her livelihood by sewing. Thus she was often out-of-town, and mostly in Winter she was at our place at home.</p>
<p>People tell me about her that she was the most beautiful and strongest of her siblings. She was good at writing poems and provided them to everybody at every occasion. Alas I wasn&#8217;t able to obtain any of them until today.</p>
<p>Grandmother was in her younger days (roughly at 14-18 years) in Friedrichsdorf in the employ of <a href="http://en.wikipedia.org/wiki/Philipp_Reis">Philipp Reis</a>, the inventor of the telephone, at a time when Reis was still working on the invention. Grandmother often had to help him strain the wires across the yard into the barn, listening to the first sounds. So to speak she was the first foreign person Philipp Reis was speaking to on the phone.</p>
</blockquote>

<p><img src="http://learningtheworld.eu/wp-content/uploads/2010/03/Nachbau_des_Telefons_von_Philipp_Reis_Sprechseite-e1269355018539.jpg" alt="" width="200" height="163" class="floatright" />In fact the <a href="http://www.friedrichsdorf.de/down/loads/philippreisavisionbecomesreality_2009.pdf" title="PDF">Philipp-Reis-Museum</a> and archive in Friedrichsdorf confirmed that Antonia worked in the household around 1866; according to the notes of my grandfather she would have been employed there between 1863-1867. Philipp Reis started to work on his first prototype between 1858-1863, he also coined the term <em>telephone</em>.</p>

<p>Alas the inventor died of tuberculosis in 1874; I guess otherwise grandma Antonia could have asked him for work after her husband passed away, instead she resorted to sewing. I&nbsp;can imagine her very well straining the wires and assisting Reis, and since she wrote poems I assume she was somewhat smart&nbsp;&mdash; who knows what else she contributed to the invention? Had she been born in another century, she might have become an engineer!</p>

<p>The barn where Philipp Reis had his workshop:</p>

<p><img src="http://learningtheworld.eu/wp-content/uploads/2010/03/philipp-reis-scheune.png" alt="" width="300" height="203" /></p>

<p>In a broader historical context, Prussia annexed the <a href="http://en.wikipedia.org/wiki/Free_City_of_Frankfurt">Free City of Frankfurt</a> and the Southern part of the Grand-Duchy of Hesse-Darmstadt in 1866 after the allies lost the <a href="http://en.wikipedia.org/wiki/Austro-Prussian_War">Austro-Prussian War</a>. So I guess that brought massive changes to the citizens and could be the reason why my great-great-grandma quit her job in 1866/67 as it was unsafe for a young woman to work in occupied territory. <img src="http://learningtheworld.eu/wp-includes/images/smilies/icon_sad.gif" alt=":(" class="wp-smiley" /> </p>

<p>So this everyday example shows that even in the 19th century women in technology might have been more common than we thought, but were much more constrained by society. A mere 150 years later the constraints are less visible, but still exist in some people&rsquo;s heads. Let us embrace diversity instead and respect the talents of people, without any reservations. My great-great-grandmother Antonia Odenweller is my personal technical heroine, and so could be you for successive generations. <img src="http://learningtheworld.eu/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /> </p>

<h3>Footnotes</h3>

<p>Please note the <a href="http://blog.namics.com/2010/03/ada-lovelace-day-2010.html">German version</a> of this post on my employer&rsquo;s blog.</p>

<p class="floatleft auto"><sup id="fn3">3</sup> Joseph Odenweller<br />(1848-1878, her spouse)<br />
<a href="http://www.flickr.com/photos/martin-kliehm/2255541411/in/set-72157603880355970/" class="floatleft"><img src="http://farm3.static.flickr.com/2273/2255541411_e2084d578b_m.jpg" width="170" height="240" alt="Joseph Odenweller" /></a></p>

<p class="floatleft auto"><sup id="fn1">1</sup> Ludwig Friedrich<br />(1824-1901, her father)<br />
<a href="http://www.flickr.com/photos/martin-kliehm/2256439080/in/set-72157603880355970/" class="floatleft"><img src="http://farm3.static.flickr.com/2333/2256439080_6734e16592_m.jpg" width="165" height="240" alt="Ludwig Friedrich" /></a></p>

<p class="floatleft auto last"><sup id="fn2">2</sup> Ludwig &amp; Eva Friedrich<br />(1822-1906, her parents)<br /><a href="http://www.flickr.com/photos/martin-kliehm/2256439388/in/set-72157603880355970/" class="floatleft"><img src="http://farm3.static.flickr.com/2078/2256439388_9f8cfc701e_m.jpg" width="157" height="240" alt="Ludwig + Eva Friedrich, geb. Schmitt" /></a></p>

<p><sup id="fn4">4</sup> My grandfather&rsquo;s diary notes (in German <a href="http://en.wikipedia.org/wiki/Kurrent">kurrent script</a>):</p>

<p><img src="http://learningtheworld.eu/wp-content/uploads/2010/03/tagebuch-antonia-friedrich.png" alt="" width="500" height="686" /></p>
]]></content:encoded>
			<wfw:commentRss>http://learningtheworld.eu/2010/ada-lovelace-day-2010/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Embedding YouTube Video with iPhone Fallback</title>
		<link>http://learningtheworld.eu/2009/youtube-embed/</link>
		<comments>http://learningtheworld.eu/2009/youtube-embed/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 17:00:01 +0000</pubDate>
		<dc:creator><![CDATA[Martin Kliehm]]></dc:creator>
				<category><![CDATA[web development]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[embed]]></category>
		<category><![CDATA[fallback]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[object]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[web standards]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://learningtheworld.eu/?p=729</guid>
		<description><![CDATA[Just a quick note as a reminder to myself <strong>how to embed YouTube videos</strong> in a standards compliant, valid <acronym title="Extensible Hypertext Markup Language">XHTML</acronym> syntax. It works across all current browsers, doesn&#8217;t use <code>&#60;embed&#62;</code>, and has the elegant fallback displaying a still image that is linked to YouTube, thus enabling iPhone users without Flash to view the video.]]></description>
				<content:encoded><![CDATA[<p>Just a quick note as a reminder to myself <strong>how to embed YouTube videos</strong> in a standards compliant, valid <acronym title="Extensible Hypertext Markup Language">XHTML</acronym> syntax. It works across all current browsers, doesn&rsquo;t use <code>&lt;embed&gt;</code>, and has the elegant fallback displaying a still image that is linked to YouTube, thus enabling iPhone users without Flash to view the video.</p>

<ol class="code">
<li><code>&lt;object type=&quot;application/x-shockwave-flash&quot; data=&quot;http://www.youtube.com/<span class="codeSpace">&nbsp;</span>v/<span class="codeSpace">&nbsp;</span><em>VideoID</em>&quot; width=&quot;480&quot; height=&quot;360&quot;></code></li>
<li class="indent"><code>&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/<span class="codeSpace">&nbsp;</span>v/<span class="codeSpace">&nbsp;</span><em>VideoID</em>&quot; /&gt;</code></li>
<li class="indent"><code>&lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;</code></li>
<li class="indent"><code>&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;</code></li>
<li class="indent"><code><strong>&lt;!-- Fallback content --&gt;</strong></code></li>
<li class="indent"><code>&lt;a href=&quot;http://www.youtube.com/<span class="codeSpace">&nbsp;</span>watch?<span class="codeSpace">&nbsp;</span>v=<em>VideoID</em>&quot;&gt;</code></li>
<li class="indent"><span class="indent"><code>&lt;img src=&quot;http://img.youtube.com/<span class="codeSpace">&nbsp;</span>vi/<span class="codeSpace">&nbsp;</span><em>VideoID</em>/0.jpg&quot; width=&quot;480&quot; height=&quot;360&quot; alt=&quot;[Video title]&quot; /&gt;<br />YouTube Video</code></span></li>
<li class="indent"><code>&lt;/a&gt;</code></li>
<li><code>&lt;/object&gt;</code></li>
</ol>

<p>Please note that there are spaces in the code above to allow linebreaks. If you copy and paste you need to remove those. <img src="http://learningtheworld.eu/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /> </p>

<p>Here is an example:</p>

<p><object type="application/x-shockwave-flash" data="http://www.youtube.com/v/ybPeQUEgk-0" width="425" height="344">
<param name="movie" value="http://www.youtube.com/v/ybPeQUEgk-0" />
<param name="quality" value="high" />
<param name="allowFullScreen" value="true" />
<a href="http://www.youtube.com/watch?v=ybPeQUEgk-0">
<img src="http://img.youtube.com/vi/ybPeQUEgk-0/0.jpg" width="425" height="344" alt="Little 'Tinker Cartoon" />
YouTube Video
</a>
</object></p>
]]></content:encoded>
			<wfw:commentRss>http://learningtheworld.eu/2009/youtube-embed/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>HTML 5 Accessibility at SXSW Interactive</title>
		<link>http://learningtheworld.eu/2009/html5-accessibility/</link>
		<comments>http://learningtheworld.eu/2009/html5-accessibility/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 16:00:39 +0000</pubDate>
		<dc:creator><![CDATA[Martin Kliehm]]></dc:creator>
				<category><![CDATA[accessibility]]></category>
		<category><![CDATA[conferences]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[web standards]]></category>
		<category><![CDATA[a11y]]></category>
		<category><![CDATA[austin]]></category>
		<category><![CDATA[HTML WG]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[panel]]></category>
		<category><![CDATA[sxsw]]></category>
		<category><![CDATA[sxsw interactive]]></category>
		<category><![CDATA[texas]]></category>
		<category><![CDATA[vote]]></category>

		<guid isPermaLink="false">http://learningtheworld.eu/?p=719</guid>
		<description><![CDATA[SXSW is an enormous web conference in Austin / Texas with hundreds of panels squeezed into four days. The panelpicker application opened today and yours truly is hosting a panel on HTML 5 Accessibility. Please vote for me and twitter about it! If the panel is chosen I&#8217;d like to invite a few people (will [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://sxsw.com">SXSW</a> is an enormous web conference in Austin / Texas with hundreds of panels squeezed into four days. The panelpicker application <strong>opened today</strong> and yours truly is hosting a panel on <a href="http://panelpicker.sxsw.com/ideas/view/4446">HTML 5 Accessibility</a>. <strong>Please vote for me</strong> and twitter about it! <img src="http://learningtheworld.eu/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" />  If the panel is chosen I&#8217;d like to invite a few people (will not disclose who until the panel is confirmed, but I have a nice line-up on my mind) to answer the following questions:</p>

<ol>
<li>What are the issues of accessibility in HTML 5?</li>
<li>What is the canvas element?</li>
<li>What is the difference between video built in natively in the browser or provided through a Flash plugin?</li>
<li>Why are people in the HTML 5 working group so nasty to each other?</li>
<li>Why is accessibility important in an emerging standard?</li>
<li>Can&#8217;t accessibility be added later?</li>
<li>What is the state of support of HTML 5 in browsers?</li>
<li>When can we start to use HTML 5?</li>
<li>What can geolocation do for accessibility?</li>
<li>Does assistive technology support HTML 5 features?</li>
</ol>

<p><p>So <a href="http://panelpicker.sxsw.com/ideas/view/4446">please vote</a> for it now, and while you&#8217;re at it, show your love to some other <a href="http://panelpicker.sxsw.com/ideas/index/4/q:accessibility">accessibility</a> and <a href="http://panelpicker.sxsw.com/ideas/index/4/q:web+standards">web standards</a> proposals as well. <code>&lt;/thxkbay&gt;</code></p></p>
]]></content:encoded>
			<wfw:commentRss>http://learningtheworld.eu/2009/html5-accessibility/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enhanced Keyboard-accessible Google Maps</title>
		<link>http://learningtheworld.eu/2009/keyboard-accessible-google-maps/</link>
		<comments>http://learningtheworld.eu/2009/keyboard-accessible-google-maps/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 19:00:28 +0000</pubDate>
		<dc:creator><![CDATA[Martin Kliehm]]></dc:creator>
				<category><![CDATA[accessibility]]></category>
		<category><![CDATA[downloads]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[hCard]]></category>
		<category><![CDATA[keyboard access]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[Patrick H. Lauke]]></category>
		<category><![CDATA[vcard]]></category>

		<guid isPermaLink="false">http://learningtheworld.eu/?p=517</guid>
		<description><![CDATA[<strong>Patrick H. Lauke</strong> wrote an excellent article about <strong>keyboard-accessible Google Maps</strong> on the Opera Developer website. Still I was able to improve it slightly when I implemented an accessible map myself. I would like to share these modifications with you.]]></description>
				<content:encoded><![CDATA[<p><a href="http://twitter.com/patrick_h_lauke">Patrick H. Lauke</a> wrote an excellent article about <a href="http://dev.opera.com/articles/view/keyboard-accessible-google-maps/">keyboard-accessible Google Maps</a> on the Opera Developer website. Still I was able to improve it slightly when I implemented an <a href="http://eafra.eu/2009/venue/">accessible map</a> myself. I would like to share these modifications with you:</p>

<ul>
<li>A <strong>link to Google Maps</strong> when JavaScript is disabled.</li>
<li>Support for the <strong><a href="http://code.google.com/apis/ajax/documentation/">Google <acronym title="Asynchronous JavaScript and XML">AJAX</acronym> <acronym title="Application Programming Interface">API</acronym> Loader</a></strong>.</li><li>Using the <strong>small map control</strong>.</li>
<li>Keyboard accessibility for <strong><em>all</em> control elements</strong> within the map.</li>
</ul>

<p>As a fallback without JavaScript&nbsp;&mdash; because people disable it, because their mobile device doesn&rsquo;t support it, or because it gets filtered by corporate proxies&nbsp;&mdash; Patrick used the little known <a href="http://code.google.com/intl/en-US/apis/maps/documentation/staticmaps/">Google Static Maps <acronym>API</acronym></a>, but for some reason he missed adding the link to Google. Here is the fix:</p>

<ol class="code" title="HTML code">
<li><code>&lt;div id=&quot;map&quot;&gt;</code></li>
<li class="indent"><code><strong>&lt;a href=&quot;http://maps.google.com/maps<span class="codeSpace">&nbsp;</span><span class="nowrap">?f=q&amp;amp;output=html</span><span class="codeSpace">&nbsp;</span><span class="nowrap">&amp;amp;q=50.110950+8.684666&quot;</span> title=&quot;Google Maps&quot;&gt;</strong></code></li>
<li class="double">&lt;img src=&quot;http://maps.google.com/staticmap?hl=en<span class="codeSpace">&nbsp;</span><span class="nowrap">&amp;amp;center=50.112267,8.678384</span><span class="codeSpace">&nbsp;</span><span class="nowrap">&amp;amp;markers=50.110950,8.684666,red</span><span class="codeSpace">&nbsp;</span><span class="nowrap">&amp;amp;zoom=15&amp;amp;size=500&#x78;300</span><span class="codeSpace">&nbsp;</span><span class="nowrap">&amp;amp;key=[Your API Key]&quot;</span> alt=&quot;City map of Frankfurt&quot; width=&quot;500&quot; height=&quot;300&quot; /&gt;</li>
<li class="indent"><code><strong>&lt;/a&gt;</strong></code></li>
<li><code>&lt;/div&gt;</code></li>
</ol>

<div>
<p><a href="http://maps.google.com/maps?f=q&amp;output=html&amp;q=50.110950757575814+8.684666901826859" title="Google Maps" id="maps-static-without-js"><img src="http://maps.google.com/staticmap?hl=de&amp;center=50.112267,8.678384&amp;markers=50.110950757575814,8.684666901826859,red&amp;zoom=15&amp;size=500x300&amp;key=ABQIAAAAiX9IUvugciHL2lvi9eAyFBSMjuiRZEUjgLWr4CdH8vZ2LQfPbhTYj1_FZwtIQquykkDMnYbZpMJHXQ" alt="City Map of Frankfurt" width="510" height="300" /></a></p>
</div>

<p>Then I changed how the map is embedded. As it seems that the <a href="http://code.google.com/apis/ajax/documentation/"><acronym>API</acronym> loader</a> is more current, I preferred that way:</p>

<ol class="code" title="HTML code">
<li><code>&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.com/jsapi?key=[Your API Key]&quot;&gt;&lt;/script&gt;</code></li>
<li><code>&lt;script type=&quot;text/javascript&quot; src="/js/accgmap.js&quot;&gt;&lt;/script&gt;</code></li>
<li><code>&lt;script type=&quot;text/javascript&quot;&gt;</code></li>
<li class="indent"><code>google.load( &#x27;maps&#x27;, &#x27;2&#x27;, { &#x27;language&#x27; : &#x27;en&#x27; } );</code></li>
<li class="indent"><code>google.setOnLoadCallback( GMAP.initMap );</code></li>
<li><code>&lt;/script&gt;</code></li>
</ol>

<p>Using the small control elements is trivial: <code>SmallMapControl()</code>. The next thing I wanted to change was <strong>keyboard access to <em>all</em> controls</strong>, in particular for the map type, <abbr title="that is">i.e.</abbr> <code>Map&nbsp;| Satellite&nbsp;| Hybrid</code>. Patrick refers to an <code>id</code>, but I found that all relevant controls have a <code>title</code>, so I just checked for that attribute. I also dropped setting the <code>style</code> attribute in JavaScript as that belongs in the <acronym title="Cascading Style Sheets">CSS</acronym> file. His original function <code>GKeyboardPatch()</code> now looks like this (note the <code>while</code> loop for a slightly better performance):</p>

<ol class="code" title="JavaScript code">
<li><code>GKeyboardPatch: <strong>function</strong>( map ) {</code></li>
<li class="indent"><code>var</code> button, divs = map.getContainer().getElementsByTagName( &#x27;div&#x27; );</li>
<li class="indent"><code>var</code> i = 0;</li>
<li class="indent"><code>while</code> ( divs[i] ) {</li>
<li class="double"><code>if ( divs[i].getAttribute( &#x27;log&#x27; ) || ( <em>divs[i].getAttribute( &#x27;title&#x27; ) &amp;&amp; divs[i].getAttribute( &#x27;title&#x27; ) != &#x27;&#x27;</em> ) ) {</code></li>
<li class="double"><span class="indent">button = document.createElement( &#x27;button&#x27; );</span></li>
<li class="double"><span class="indent">button.setAttribute( &#x27;value&#x27;, divs[i].getAttribute( &#x27;title&#x27; ));</span></li>
<li class="double"><span class="indent">divs[i].appendChild( button );</span></li>
<li class="double"><span class="indent">if ( divs[i].getAttribute( &#x27;log&#x27; )) { <code>// only control buttons</code></span></li>
<li class="double"><code class="double">// override the IE opacity filter that Google annoyingly sets</code></li>
<li class="double"><span class="double">divs[i].style.filter = &#x27;&#x27;;</span></li>
<li class="double"><code class="double">// should really set to &#x27;transparent&#x27;</code></li>
<li class="double"><span class="double">divs[i].style.background = <span class="nowrap">&#x27;url( http://www.google.com/</span><span class="codeSpace">&nbsp;</span>intl/en_ALL/mapfiles/transparent.png )&#x27;;</span></li>
<li class="double"><span class="indent">}</span></li>
<li class="double">}</li>
<li class="double">i++;</li>
<li class="indent">}</li>
<li>}</li>
</ol>

<p>Now remember I said I&rsquo;d rather separate style and behaviour, so here are a some lines of <acronym>CSS</acronym> with the setting of <code>width</code> and <code>height</code> for the <code>#map</code> being most relevant, otherwise it will collapse:</p>

<ol class="code" title="CSS code">
<li><code>#map {</code></li>
<li class="indent">height: 300px;</li>
<li class="indent">overflow: hidden;</li>
<li class="indent">position: relative;</li>
<li class="indent">width: 500px;</li>
<li><code>}</code></li>
<li><code>#maps-static, #maps-static img {</code></li>
<li class="indent">display: block;</li>
<li><code>}</code></li>
<li><code>#map span.note {</code></li>
<li class="indent">display: none;</li>
<li><code>}</code></li>
<li><code>#map button {</code></li>
<li class="indent">background: transparent;</li>
<li class="indent">border-style: solid;</li>
<li class="indent">border-width: 0;</li>
<li class="indent">cursor: pointer;</li>
<li class="indent">height: 100%;</li>
<li class="indent">left: -2px;</li>
<li class="indent">margin: 2px;</li>
<li class="indent">overflow: hidden;</li>
<li class="indent">padding: 2px;</li>
<li class="indent">position: absolute;</li>
<li class="indent">text-indent: -100em;</li>
<li class="indent">top: -2px;</li>
<li class="indent">width: 100%;</li>
<li><code>}</code></li>
<li><code>#map a:focus, #map a:active, #map button:focus, #map button:active {</code></li>
<li class="indent">outline: 2px dashed #61bf1a;</li>
<li><code>}</code></li>
</ol>

<p>And that&rsquo;s it, thanks again to Patrick for the solid foundation I built upon. Now <a href="/examples/js/accgmap.js">download the JavaScript code</a> and try to tab through the map below.</p>

<p>Actually on the other website I extracted <strong>hCard microformats</strong> from the page as well and displayed the addresses on the map, but I was lazy and used jQuery. I thought it doesn&rsquo;t look well here mixed with Patrick&rsquo;s clean <acronym title="Document Object Model">DOM</acronym> scripting, but feel free to <a href="http://eafra.eu/2009/venue/">take it from the original website</a>.</p>

<div id="map">
<p><a href="http://maps.google.com/maps?f=q&amp;output=html&amp;q=50.110950757575814+8.684666901826859" title="Google Maps" id="maps-static"><img src="http://maps.google.com/staticmap?hl=de&amp;center=50.112267,8.678384&amp;markers=50.110950757575814,8.684666901826859,red&amp;zoom=15&amp;size=500x300&amp;key=ABQIAAAAiX9IUvugciHL2lvi9eAyFBSMjuiRZEUjgLWr4CdH8vZ2LQfPbhTYj1_FZwtIQquykkDMnYbZpMJHXQ" alt="City Map of Frankfurt" width="510" height="300" /></a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://learningtheworld.eu/2009/keyboard-accessible-google-maps/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Please Provide Padding</title>
		<link>http://learningtheworld.eu/2009/please-provide-padding/</link>
		<comments>http://learningtheworld.eu/2009/please-provide-padding/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 18:00:09 +0000</pubDate>
		<dc:creator><![CDATA[Martin Kliehm]]></dc:creator>
				<category><![CDATA[accessibility]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[bahn.de]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Deutsche Bahn]]></category>
		<category><![CDATA[Fitt's Law]]></category>
		<category><![CDATA[padding]]></category>
		<category><![CDATA[relaunch]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://learningtheworld.eu/?p=490</guid>
		<description><![CDATA[There are other websites were you can buy train tickets, but if you live in Germany it's most likely that you will book a ticket on the website of <strong lang="de" xml:lang="de">Deutsche Bahn</strong> (German railways). Much has been said about accessibility on that site, and sure there's room for improvements in future updates. But some things just work well&#160;[&#8230;]]]></description>
				<content:encoded><![CDATA[<p>There are other websites were you can buy train tickets, but if you live in Germany it&#8217;s most likely that you will book a ticket on the website of <strong lang="de" xml:lang="de"><a href="http://bahn.de">Deutsche Bahn</a></strong> (German railways). Much has been said about accessibility on that site, and sure there&#8217;s room for improvements in future updates. But some things just work well:</p>

<p>I was responsible for most of the programming beneath the navigation bar on the home page, and every time when I book a ticket there&#8217;s a small feature I enjoy so much I want to tell you about it: <strong>the buttons on the date selector</strong> are really, really tiny (16&nbsp;&times; 8px). As you know thanks to <a href="/2007/usability-analysis/">Fitt&lsquo;s Law</a>, there are even formulas to calculate how much better <em>big</em> buttons can be hit.</p>

<p><strong>So I just added some padding.</strong> And that makes a huge difference: try to click on the same buttons later on in the booking process where the padding is missing.</p>

<p><img src="/wp-content/uploads/2009/04/screenshot-bahn-datepicker-300x214.jpg" alt="Screenshot of the padding on datepicker buttons" width="300" height="214" class="book" /></p>

<p>If I could make one improvement I would add <strong>keyboard functionality</strong> to those buttons. Alas as the datepicker itself came from a third party, the assembled code was beyond my control. But I know that the <a href="http://vimeo.com/4153807"><span lang="de" xml:lang="de">Deutsche Bahn</span> is listening</a> to the needs of people with disabilities and their disability advisory board members are highly competent, so I trust these and other issues will be fixed soon&nbsp;&hellip;</p>
]]></content:encoded>
			<wfw:commentRss>http://learningtheworld.eu/2009/please-provide-padding/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>European Accessibility Forum Frankfurt</title>
		<link>http://learningtheworld.eu/2009/accessibility-forum/</link>
		<comments>http://learningtheworld.eu/2009/accessibility-forum/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 19:00:26 +0000</pubDate>
		<dc:creator><![CDATA[Martin Kliehm]]></dc:creator>
				<category><![CDATA[accessibility]]></category>
		<category><![CDATA[conferences]]></category>
		<category><![CDATA[W3C]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[web standards]]></category>
		<category><![CDATA[aria]]></category>
		<category><![CDATA[business value]]></category>
		<category><![CDATA[ec]]></category>
		<category><![CDATA[European Commission]]></category>
		<category><![CDATA[france telecom]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[namics]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[wai-aria]]></category>
		<category><![CDATA[wasp]]></category>
		<category><![CDATA[web standards project]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://learningtheworld.eu/?p=457</guid>
		<description><![CDATA[So it&#8217;s been a little quiet here, the reason is that I&#8217;ve been busy organizing the <strong>European Accessibility Forum Frankfurt</strong> on March 27th. The main idea is to present leading innovators and their perspectives on eAccessibility from the <strong>technical, political, and economic side</strong>. Experts on seven panels will briefly describe their own work and their view of accessibility and then discuss the issues.&#160;[&#8230;]]]></description>
				<content:encoded><![CDATA[<p>So it&rsquo;s been a little quiet here, the reason is that I&rsquo;ve been busy organizing the <strong><a href="http://eafra.eu">European Accessibility Forum Frankfurt</a> on March 27th</strong>, presented by my employer <em>namics</em>.</p>

<p>The main idea is to present leading innovators and their perspectives on eAccessibility from the <strong>technical, political, and economic side</strong>. Experts on seven panels will briefly describe their own work and their view of accessibility and then discuss the issues.</p>

<p>There&rsquo;s an illustrious line-up of speakers including <span xml:lang="de">Deutsche Bahn</span>, the European Commission, <span lang="fr">France Télécom</span>, the German Federal Ministry of Labour and Social Affairs, Google, <acronym>IBM</acronym>, Microsoft, Mozilla, Opera, the <acronym title="World Wide Web Consortium">W3C</acronym>, the Web Standards Project, and Yahoo! talking about these topics:</p>

<ul>
<li>Accessible Web Applications</li>
<li>Mobile Access&nbsp;&mdash; Device-independent <em>or</em> Accessible?</li>
<li>Comparison of National Accessibility Guidelines</li>
<li>Accessible Rich Internet Applications (<acronym>ARIA</acronym>)</li>
<li>Web Standards and Accessibility in Higher Education</li>
<li>Harmonising European Accessibility Guidelines</li>
<li>The Business Value of Accessibility</li>
</ul>

<p>If you have been following my posts in the last two years this will sound slightly familiar. <img src="http://learningtheworld.eu/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" />  Furthermore I&rsquo;m honored to have Linda Mauperon, Member of Cabinet of the European Commissioner for Information Society and Media (Viviane Reding) as our keynote speaker. Please see the detailed description of the panels in the conference <a href="http://eafra.eu/2009/programme/">program</a>.</p>

<p>We would like to take a look on accessibility from different perspectives presenting pioneering thinkers whose organizations have established accessibility in their business and communication long since&nbsp;&mdash; and making serious money with it. There should be something of interest for everybody among the topics: for techies, consultants, employees from universities and companies. The conference is limited to a maximum of 200 attendees. <strong>Registration opens next week</strong>.</p>

<p>Of course there are various gems under the hood of the website, too. Naturally it is extensively accessible (check the cool skip links), but it is also incredibly fast because <a href="http://developer.yahoo.com/performance/">Yahoo!&rsquo;s best practices for frontend performance</a> are regarded. There are separate style sheets for printing, for iPhones, and for handhelds. The <acronym title="Content Management System">CMS</acronym> is <a href="http://wpmu.de/">WordPress µ</a>, having the advantage of administrating both the English and the German version with the same installation.</p>
]]></content:encoded>
			<wfw:commentRss>http://learningtheworld.eu/2009/accessibility-forum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
