<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Robert's talk</title>
	
	<link>http://robertnyman.com</link>
	<description>Web development and Internet trends</description>
	<lastBuildDate>Sun, 07 Feb 2010 21:49:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/robertnyman" /><feedburner:info uri="robertnyman" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><image><link>http://www.robertnyman.com</link><url>http://www.robertnyman.com/favicon.png</url><title>Robert's talk</title></image><feedburner:emailServiceId>robertnyman</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Speaking at FOSDEM 2010 – An Introduction to HTML</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/q0nD2m2X13k/</link>
		<comments>http://robertnyman.com/2010/01/29/speaking-at-fosdem-2010-an-introduction-to-html/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 12:32:37 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[HTML5/HTML/XHTML]]></category>
		<category><![CDATA[Speaking]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1662</guid>
		<description><![CDATA[Just to let you know, I will be speaking at FOSDEM 2010 in Brussels, Belgium, next Saturday February 6th. I will talk in the Mozilla Developer Room and give an introduction to HTML5, which will be followed by HTML5 demos by Paul Rouget.
If you are attending, please come along and say hi!  
]]></description>
			<content:encoded><![CDATA[<p>Just to let you know, I will be speaking at <a href="http://www.fosdem.org/2010/">FOSDEM 2010</a> in Brussels, Belgium, next Saturday February 6th. I will talk in the Mozilla Developer Room and give an introduction to HTML5, which will be followed by HTML5 demos by <a href="http://blog.mozbox.org/">Paul Rouget</a>.</p>
<p>If you are attending, please come along and say hi! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=q0nD2m2X13k:5nzJdO1nmDY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=q0nD2m2X13k:5nzJdO1nmDY:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=q0nD2m2X13k:5nzJdO1nmDY:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=q0nD2m2X13k:5nzJdO1nmDY:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/01/29/speaking-at-fosdem-2010-an-introduction-to-html/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2010/01/29/speaking-at-fosdem-2010-an-introduction-to-html/</feedburner:origLink></item>
		<item>
		<title>Geek Meet February 8th 2010 – Christopher Blizzard of Mozilla!</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/SOnruLMpizk/</link>
		<comments>http://robertnyman.com/2010/01/28/geek-meet-february-8th-2010-christoper-blizzard-of-mozilla/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 22:09:14 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[Geek Meet]]></category>
		<category><![CDATA[HTML5/HTML/XHTML]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web browsers]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1655</guid>
		<description><![CDATA[I know, I know, there has definitely been some time since the last Geek Meet. But believe me, this one will make up for the wait!  
Introducing Christopher Blizzard
I am extremely excited to tell you that the speaker this time is no one else than Christopher Blizzard! Chris is the Evangelism Director for Mozilla [...]]]></description>
			<content:encoded><![CDATA[<p>I know, I know, there has definitely been some time since the last Geek Meet. But believe me, this one will make up for the wait! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h2>Introducing Christopher Blizzard</h2>
<p>I am extremely excited to tell you that the speaker this time is no one else than <a href="http://www.0xdeadbeef.com/weblog/">Christopher Blizzard</a>! Chris is the Evangelism Director for Mozilla and has been involved for almost a decade with the Mozilla project, where he has been working with both developing, evangelizing and building developer relations.</p>
<p>He was also the Software Team Lead for the &#8220;One Laptop Per Child&#8221; program and helped develop that version of Linux, and was also part in creating the <a href="http://en.wikipedia.org/wiki/Sugar_%28GUI%29">Sugar interface</a>.</p>
<h2>The talks</h2>
<p>As usual, the Geek Meet will be broken up into two sections. The idea is for Christoper to first talk about HTML5, video on the web, codecs and similar highly interesting topics. Then we will have a break for pizza and beer, thanks to my gracious sponsor <a href="http://www.creuna.se/" class="in-swedish">Creuna</a>. After that, Chris will lead a Q&amp;A session where you can ask away about anything you want to know about technologies, Firefox, Mozilla or whatever related you can come up with; a fantastic opportunity!</p>
<h2>When &amp; where</h2>
<p>Next Geek Meet will be held February 8th (less than two weeks away) at Creuna&#8217;s office at <a href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=Kungsholmsgatan+23+stockholm&amp;sll=37.0625,-95.677068&amp;sspn=41.275297,81.210938&amp;ie=UTF8&amp;hq=&amp;hnear=Kungsholmsgatan+23,+Stockholm,+Stockholms+L%C3%A4n,+Sweden&amp;z=16">Kungsholmsgatan 23 in Stockholm</a>, at 18.00.</p>
<h2>Sign up now!</h2>
<p>Sign up now! We have <strong>150 seats</strong> available, which I am sure will be filled in no time. Register by writing a comment below. Go! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<div class="important-notice">
<h3>All sold out!</h3>
<p>Please write a comment to be on the waiting list!</p>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=SOnruLMpizk:GQXE0qwJ5eU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=SOnruLMpizk:GQXE0qwJ5eU:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=SOnruLMpizk:GQXE0qwJ5eU:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=SOnruLMpizk:GQXE0qwJ5eU:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/01/28/geek-meet-february-8th-2010-christoper-blizzard-of-mozilla/feed/</wfw:commentRss>
		<slash:comments>238</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2010/01/28/geek-meet-february-8th-2010-christoper-blizzard-of-mozilla/</feedburner:origLink></item>
		<item>
		<title>The video element in HTML5 – great possibilites, but also codec and licensing problems</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/fNzYzq09uKM/</link>
		<comments>http://robertnyman.com/2010/01/25/the-video-element-in-html5-great-possibilites-but-also-codec-and-licensing-problems/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 17:24:27 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Apple/Mac]]></category>
		<category><![CDATA[Developing]]></category>
		<category><![CDATA[HTML5/HTML/XHTML]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web browsers]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1609</guid>
		<description><![CDATA[Man has always been inspired by things moving around and giving away noises, so it was just a matter of time before video content showed up on the web. For a number of years, Flash was the de-facto standard of showing video, but now, with HTML5, the video element has made its way into our [...]]]></description>
			<content:encoded><![CDATA[<p>Man has always been inspired by things moving around and giving away noises, so it was just a matter of time before video content showed up on the web. For a number of years, Flash was the de-facto standard of showing video, but now, with HTML5, the <code>video</code> element has made its way into our lives.</p>
<h2>The <code><span class="lowercase">v</span>ideo</code> element</h2>
<p>The <code>video</code> element is as simple as can be:</p>
<pre class="brush: html">&lt;video src="swedish-flag.ogv"&gt;&lt;/video&gt;</pre>
<p>Then you can add a number of attributes for if controls should be visible, if it should autoplay when the visitor loads the containing web page etc. The applicable attributes are:</p>
<dl>
<dt>autobuffer</dt>
<dd>Loads the entire file if this attribute is enabled, but is ignored if <code>autoplay</code> is set.</dd>
<dt>autoplay</dt>
<dd>Video starts playing as soon as it is ready.</dd>
<dt>controls</dt>
<dd>If video controls should be displayed &#8211; looks dependent on web browser.</dd>
<dt>height</dt>
<dd>Height of the element</dd>
<dt>loop</dt>
<dd>If the video playback should loop.</dd>
<dt>src</dt>
<dd>The video file to play</dd>
<dt>width</dt>
<dd>Width of the element</dd>
</dl>
<p>So, another example could look like this:</p>
<pre class="brush: html">&lt;video src="swedish-flag.ogv" controls width="320" height="240"&gt;&lt;/video&gt;</pre>
<p>What is also nice is that web browsers won&#8217;t automatically download the entire video file, but just a part of it to be able to display the first frame. Also, you could write your custom controls and control the video via script &#8211; this is more described in <a href="https://developer.mozilla.org/En/Using_audio_and_video_in_FireFox">Using audio and video in Firefox</a>.</p>
<h2>Different treats for different web browsers</h2>
<p>This all sounds good and well; just specify the source of your video file and you are good to go! Well, it could have been like that, but unfortunately isn&#8217;t. Just as before in history, it comes down to video codecs &#8211; yes, exactly that hassle we got around with having video in Flash.</p>
<ul>
<li>Firefox supports the Ogg/Theora encoding.</li>
<li>Google Chrome supports the H.264 <em>and</em> theOgg/Theora encoding.</li>
<li>Safari supports the H.264 encoding.</li>
<li>Opera will support the Ogg/Theora encoding (no final release with <code>video</code> element support yet).</li>
</ul>
<p>So, what the <code>video</code> element offers us is to specify various video sources for different web browsers, like this:</p>
<pre class="brush: js">&lt;video controls="controls"&gt;
	&lt;source src="swedish-flag.mp4"&gt;
	&lt;source src="swedish-flag.ogv"&gt;
	Sorry, your web browser doesn't support the video element
&lt;/video&gt;</pre>
<p class="text-align-center"><video controls width="500"><source src="http://robertnyman.com/video/swedish-flag.mp4"><source src="http://robertnyman.com/video/swedish-flag.ogv">Sorry, your web browser doesn&#8217;t support the video element</video></p>
<p class="text-align-center"><i>This video above should play in Firefox, Google Chrome and Safari on Mac. You can also check out <a href="http://robertnyman.com/video/demo.html">a demo targeting both Ogg/Theora and H.264 in a stand-alone page</a>.</i></p>
<p>And, instead of the &#8220;sorry&#8221;-phrase above, we could also go to the length of offering QuickTime and Flash fallbacks instead for web browsers not supporting the <code>video</code> element at all.</p>
<h2>Codecs and licenses</h2>
<p>I think it&#8217;s fair enough that we can offer content to please every web browser, but at this point it becomes cumbersome. Maintenance, it&#8217;s a nightmare, since we need to maintain and store at least three formats for each video to be able to offer it to a vast majority of our visitors. The reasoning behind codec support is that Apple has invested a lot of time and money into H.264 so they want to push that, Google Chrome has bought licenses for H.264 (which means the only version of Google Chrome that supports it is the one downloaded from the Google web site &#8211; Chromium and others don&#8217;t support that license) and support Ogg/Theora as well, while others like Mozilla (with Firefox) and Opera believe that the open standard element <code>video</code> should naturally support open codecs and therefore only support Ogg/Theora.</p>
<p>What we don&#8217;t want with a new standard/element and de-facto way of doing is to go into the situation of GIF again, but instead avoid closed formats that requires a number of expensive and limited licenses. I believe Robert O&#8217;Callahan explains it beautifully in <a href="http://weblogs.mozillazine.org/roc/archives/2010/01/video_freedom_a.html">Video, Freedom And Mozilla</a> just why H.264 is not a viable option, and why it is not on par with the open web and web standards.</p>
<p>And, to make matters worse, in my eyes, Google just started offering <a href="http://www.youtube.com/html5">the HTML5 <code>video</code> element on YouTube</a> and <a href="http://www.vimeo.com/blog:268">Vimeo announced HTML5 video element support as well</a>. Great news, but the big <em>big</em> problem with this, though, especially being two of the most visited video web sites on the web, is that they <em>only</em> support the H.264 encoding. This means that only Google Chrome and Safari users (and, oh, those three IE users in the world with Google Chrome Frame) can see it, excluding a vast portion of the web browser market with Firefox and Opera (the initial complaints were also that fullscreen video wasn&#8217;t there &#8211; well, Firefox 3.6 supports fullscreen video, so if they would have chosen another format that would have been there too).</p>
<p>What is bothering me with the H.264 approach, and is quite saddening, is that Google Chrome supports the Ogg/Theora codec as well, so they could have chosen the open route instead. Their move of introducing the <code>video</code> element on YouTube is a very important decision, and I believe it&#8217;s great to move away from Flash and into HTML5 elements. But as long as they do it with closed-in licensed codecs, it has been all in vain, if you ask me.</p>
<p>Mozilla VP Engineering Mike Shaver expresses his opinions in <a href="http://shaver.off.net/diary/2010/01/23/html5-video-and-codecs/">HTML5 video and codecs</a> and Mozilla&#8217;s Christopher Blizzard talks more about in <a href="http://www.0xdeadbeef.com/weblog/2010/01/html5-video-and-h-264-what-history-tells-us-and-why-were-standing-with-the-web/">HTML5 video and H.264 – what history tells us and why we’re standing with the web</a>.</p>
<h2>Conclusively&#8230;</h2>
<p>The whole reason video on the web took off in the first place with YouTube and others is because <em>it just worked</em> as long as you had Flash installed, no matter the web browser and no matter the platform. If just end up in another codec war again, the <code>video</code> element will never take off &#8211; don&#8217;t waste our time with web browser-specific solutions and proprietary attitudes. If we ever truly want to use the <code>video</code> element on the web, it has to be open. Period.</p>
<p>&nbsp;</p>
<h3>Related reading</h3>
<ul>
<li><a href="http://html5doctor.com/youtube-and-vimeo-support-html5-video/">YouTube and Vimeo support HTML5 Video</a></li>
<li><a href="http://www.sitepoint.com/blogs/2010/01/25/the-dark-side-of-html-5-video/">The Dark Side of HTML 5 Video</a></li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=fNzYzq09uKM:uUtVpoT7DYE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=fNzYzq09uKM:uUtVpoT7DYE:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=fNzYzq09uKM:uUtVpoT7DYE:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=fNzYzq09uKM:uUtVpoT7DYE:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/01/25/the-video-element-in-html5-great-possibilites-but-also-codec-and-licensing-problems/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
<enclosure url="http://robertnyman.com/video/swedish-flag.mp4" length="2174068" type="video/mp4" />
		<feedburner:origLink>http://robertnyman.com/2010/01/25/the-video-element-in-html5-great-possibilites-but-also-codec-and-licensing-problems/</feedburner:origLink></item>
		<item>
		<title>IE and Life</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/YI5BiyPDXn8/</link>
		<comments>http://robertnyman.com/2010/01/21/ie-and-life/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 13:31:46 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web browsers]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1605</guid>
		<description><![CDATA[The other day I sort of had an epiphany, a revelation if you will, which made me realize something hard to accept: Internet Explorer will always be there throughout my entire career working with Internet.
After that had dawned on me, seeing know that IE will never die and be completely be replaced by only competent [...]]]></description>
			<content:encoded><![CDATA[<p>The other day I sort of had an epiphany, a revelation if you will, which made me realize something hard to accept: Internet Explorer will always be there throughout my entire career working with Internet.</p>
<p>After that had dawned on me, seeing know that IE will never die and be completely be replaced by only competent web browsers in the market, and, IE will always be at least two years behind its competitors, it kind of felt like a legal punishment. &#8220;Sorry, mister, but it&#8217;s IE and life for you.</p>
<p>Therefore, I decided to make my own rendition of the Skidrow song <strong>18 and Life</strong>. Let me present <strong>IE and Life</strong>:</p>
<blockquote>
<p>
		IE was a young browser, he had a heart of DOS<br />
		Lived 9 to 5 and he worked hard to prevent FOSS<br />
		Just barely got out of MS labs, came from the edge of town<br />
		Rendered like MS Word so no one could take him down, oh no
	</p>
<p>
		He had no talent, no, no standards at home<br />
		He walked the streets as renderer and he fought the world alone
	</p>
<p>
		And now it&#8217;s IE and life, you got it, IE and life, you know<br />
		Your crime is proprietary and it&#8217;s IE and life to go<br />
		IE and life, you got it, IE and life, you know<br />
		Your crime is proprietary and it&#8217;s IE and life to go
	</p>
<p>
		VML in his heartbeat, worst CSS bugs you&#8217;ve ever seen<br />
		He kept his engine running, but it never kept pages clean<br />
		They say he loved closed-in, &#8220;IE&#8217;s the wild one&#8221;<br />
		Someone should put it out with a strong-enough gun
	</p>
<p>
		Bang bang shoot &#8216;em up, the party never ends<br />
		You can&#8217;t think of dying when web browser legacy is your best friend
	</p>
<p>
		And now it&#8217;s IE and life, you got it, IE and life, you know<br />
		Your crime is proprietary and it&#8217;s IE and life to go<br />
		IE and life, you got it, IE and life, you know<br />
		Your crime is proprietary and it&#8217;s IE and life to go, yeah
	</p>
<p>
		&#8220;Accidents will happen&#8221;, they all heard IE say<br />
		He renders pages incorrectly even to to this very day
	</p>
<p>
		Yeah, yeah, yeah, yeah, yeah<br />
		IE and life, you got it, IE and life, you know<br />
		Your crime is proprietary and it&#8217;s IE and life to go<br />
		IE and life, you got it, IE and life, you know<br />
		Your crime is proprietary and it&#8217;s IE and life to go
	</p>
</blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=YI5BiyPDXn8:1deiJ0RsoGM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=YI5BiyPDXn8:1deiJ0RsoGM:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=YI5BiyPDXn8:1deiJ0RsoGM:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=YI5BiyPDXn8:1deiJ0RsoGM:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/01/21/ie-and-life/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2010/01/21/ie-and-life/</feedburner:origLink></item>
		<item>
		<title>Tools for concatenating and minifying CSS and JavaScript files in different development environments</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/MjQ4t-CxjFk/</link>
		<comments>http://robertnyman.com/2010/01/19/tools-for-concatenating-and-minifying-css-and-javascript-files-in-different-development-environments/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 17:42:23 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Developing]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1589</guid>
		<description><![CDATA[To follow up on the topic of cutting down the number of HTTP requests that I mentioned in my posts How to improve your web site performance – tips &#38; tricks to get a good YSlow rating and How to reduce the number of HTTP requests, I wanted to put together a good list of [...]]]></description>
			<content:encoded><![CDATA[<p>To follow up on the topic of cutting down the number of HTTP requests that I mentioned in my posts <a href="http://robertnyman.com/2008/05/09/improve-your-web-site-performance-tips-tricks-to-get-a-good-yslow-rating/">How to improve your web site performance – tips &amp; tricks to get a good YSlow rating</a> and <a href="http://robertnyman.com/2010/01/15/how-to-reduce-the-number-of-http-requests/">How to reduce the number of HTTP requests</a>, I wanted to put together a good list of tools and approaches to concatenate and minify CSS and JavaScript files in different developing environments.</p>
<p>Based on my own experience and research, and the replies when I asked around what others use, I have listed suggested solutions below:</p>
<h2>PHP</h2>
<dl>
<dt><a href="http://code.google.com/p/minify/">Minify</a></dt>
<dd>Minify combines multiple CSS or JavaScript files, removes unnecessary whitespace and comments, and serves them with gzip encoding and optimal client-side cache headers.</dd>
<dt><a href="http://rakaz.nl/code/combine">Combine</a></dt>
<dd>PHP script combined with URL rewriting to concatenate and compress CSS and JavaScript files.</dd>
<dt><a href="http://farhadi.ir/works/smartoptimizer">SmartOptimizer</a></dt>
<dd>A PHP library that enhances your website performance by optimizing the front end using techniques such as minifying, compression, caching, concatenation and embedding. All the work is done on the fly on demand.</dd>
<dt><a href="http://csstidy.sourceforge.net/">CSSTidy</a></dt>
<dd>Compression of CSS files. <em>Note: no support for JavaScript files.</em></dd>
<dt><a href="http://crisp.tweakblogs.net/blog/1665/a-new-javascript-minifier-jsmin+.html">JSMin+</a></dt>
<dd>PHP-based and it parses the JavaScript. <em>Note: no support for CSS files.</em></dd>
<dt><a href="http://github.com/anthonyshort/csscaffold">CSScaffold</a>
<dt>
<dd>Compresses, caches and gzips CSS on-the-fly. <em>Note: no support for JavaScript files.</em></dd>
<dt><a href="http://github.com/Schepp/CSS-JS-Booster">CSS-JS-Booster</a></dt>
<dd>Concats, minifies and gzips CSS and JavaScript files.</dd>
</dl>
<h2>Django</h2>
<dl>
<dt><a href="http://github.com/bradleywright/django-static-management">Django Static Management</a></dt>
<dd>Intended as an easy way to manage multiple static text assets (CSS and Javascript) in a Django projects.</dd>
<dt><a href="http://github.com/mintchaos/django_compressor">Django compressor</a></dt>
<dd>Compresses linked and inline javascript or CSS into a single cached file.</dd>
<dt><a href="http://github.com/pelme/django-compress">django-compress</a></dt>
<dd>django-compress provides an automated system for compressing CSS and JavaScript files. <em>Note: Doesn&#8217;t support concatenation of files.</em>.</dd>
<dt><a href="http://pedro.valelima.com/blog/2008/jan/17/deploying-compacted-javascript-django/">Deploying compacted javascript with django</a></dt>
<dd>Management command to compatct JavaScript. <em>Note: No support for CSS files.</em>.</dd>
<dt><a href="http://www.djangosnippets.org/snippets/405/">Templatetag for JavaScript merging and compression</a></dt>
<dd>A templatetag that merges several JavaScript files (compressing its code) into only one JavaScript file. <em>Note: No support for CSS files.</em>.</dd>
</dl>
<h2>Ruby</h2>
<dl>
<dt><a href="http://getsprockets.com/">Sprockets</a></dt>
<dd>Sprockets is a Ruby library that preprocesses and concatenates JavaScript source files.</dd>
<dt><a href="http://github.com/cjohansen/juicer">Juicer</a></dt>
<dd>Compresses CSS and JavaScript code, JSLints it and also supports Data URI-embedding of images in CSS files.</dd>
<dt><a href="http://documentcloud.github.com/jammit/">Jammit</a></dt>
<dd>Jammit is providing both CSS and JavaScript concatenation and compression, as well as YUI Compressor and Closure Compiler compatibility, ahead-of-time gzipping, built-in JavaScript template support, and optional Data-URI / MHTML image embedding.</dd>
<dt><a href="http://synthesis.sbecker.net/pages/asset_packager">AssetPackager</a></dt>
<dd>Merges and compresses JavaScript and CSS when running in production.</dd>
</dl>
<h2>Java</h2>
<dl>
<dt><a href="http://developer.yahoo.com/yui/compressor/">YUI Compressor</a></dt>
<dd>The leading tool in the for compressing CSS and JavaScript files, and could easily be ported/encapsulated into other environments. <em>Note: Doesn&#8217;t support concatenation of files.</em>. Could be used in conjunction with an Ant task, as described in <a href="http://www.julienlecomte.net/blog/2007/09/16/">Building Web Applications With Apache Ant</a></dd>
<dt><a href="http://code.google.com/closure/compiler/">Google Closure Compiler</a></dt>
<dd>Google Compiler for JavaScript that supports various compressing options for JavaScript. <em>Note: no support for CSS files.</em></dd>
<dt><a href="https://jawr.dev.java.net/">Jawr</a></dt>
<dd>Supports concatenation and minification of CSS and JavaScript files.</dd>
</dl>
<h2>.Net</h2>
<dl>
<dt><a href="http://yuicompressor.codeplex.com/">YUI Compressor for .Net</a></dt>
<dd>A .NET port of the Yahoo! UI Library&#8217;s YUI Compressor Java project.</dd>
<dt><a href="http://svn.offwhite.net/trac/SmallSharpTools.Packer/">Packer for .NET</a></dt>
<dd>A tool to pack/minify CSS and JavaScript files.</dd>
<dt><a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34488">Microsoft Ajax Minifier</a></dt>
<dd>A tool to concatenate and minify JavaScript files. <em>Note: no support for CSS files.</em></dd>
</dl>
<h2>Other tools or approaches?</h2>
<p>Please let me know, by writing a comment, if you want to suggest other tools, so I can update this list and keep it as accurate and useful as possible!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=MjQ4t-CxjFk:bylHSjcg5CE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=MjQ4t-CxjFk:bylHSjcg5CE:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=MjQ4t-CxjFk:bylHSjcg5CE:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=MjQ4t-CxjFk:bylHSjcg5CE:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/01/19/tools-for-concatenating-and-minifying-css-and-javascript-files-in-different-development-environments/feed/</wfw:commentRss>
		<slash:comments>107</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2010/01/19/tools-for-concatenating-and-minifying-css-and-javascript-files-in-different-development-environments/</feedburner:origLink></item>
		<item>
		<title>How to reduce the number of HTTP requests</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/pIPY99e4bA0/</link>
		<comments>http://robertnyman.com/2010/01/15/how-to-reduce-the-number-of-http-requests/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 23:46:01 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Developing]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web browsers]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1584</guid>
		<description><![CDATA[As you might be aware of, I believe web site performance is truly a critical success factor, and I have written about it before in How to improve your web site performance – tips &#38; tricks to get a good YSlow rating
What we have
With the advent of such great tools such as YSlow and Page [...]]]></description>
			<content:encoded><![CDATA[<p>As you might be aware of, I believe web site performance is truly a critical success factor, and I have written about it before in <a href="http://robertnyman.com/2008/05/09/improve-your-web-site-performance-tips-tricks-to-get-a-good-yslow-rating/">How to improve your web site performance – tips &amp; tricks to get a good YSlow rating</a></p>
<h2>What we have</h2>
<p>With the advent of such great tools such as <a href="http://developer.yahoo.com/yslow/">YSlow</a> and <a href="http://code.google.com/speed/page-speed/">Page Speed</a>, looking at the practices of web sites like Google and Yahoo! and reading the excellent performance work done by <a href="http://stevesouders.com/">Steve Souders</a>, we have really learnt a lot, and have great resources.</p>
<h2>Reducing the number of HTTP requests</h2>
<p>One of the crucial things when it comes to improving performance is reducing the number of HTTP requests. <a href="http://www.stevesouders.com/blog/2009/11/16/cssembed-automatically-data-uri-ize/#comment-1097">According to Steve Souders</a>: &#8220;An extra HTTP request adds 200+ milliseconds to a page (worldwide average)&#8221;. The latency between HTTP requests, and also the limitation in web browsers in regards to how many parallel HTTP requests a web browser can make, vastly affects the loading time of a web page.</p>
<p>When it comes to CSS and JavaScript, the general consensus is to concatenate all files of the same type into one file, and then minify them. To complement that, <a href="http://blog.getify.com/">Kyle Simpson</a> have done some interesting experimenting with his <a href="http://labjs.com/">LABjs</a>, and he writes more about his thoughts in <a href="http://blog.getify.com/2009/11/labjs-why-not-just-concat/">LABjs: why not just concat?</a> how controlled parallel loading could also prove to be efficient.</p>
<p>That leaves us with images. Without a doubt, both the size and number of images used in a web page, although pretty to look at, definitely poses a threat to having a fast web site, and I thought we&#8217;d look at the alternatives for dealing with that.</p>
<h2>CSS Sprites</h2>
<p>CSS Sprites are when you combine a number of images into the same image file. You then use <code>background-position</code> in the CSS file to control what part of that image will be visible for a certain element. This way, instead of having a number of HTTP requests, there will be just one for a larger image file.</p>
<p>For instance, you can see this in action at <a href="http://m.www.yahoo.com/">Yahoo.com</a> at the left hand side, with the icons in the list. Steve Souders has also created the excellent tool <a href="http://spriteme.org/">SpriteMe</a>, in the form of a bookmarklet, that will analyze the current page to see which images you can combine, and also generate the images for the CSS Sprite. Another great alternative is the web site <a href="http://spritegen.website-performance.org/">CSS Sprite generator</a>.</p>
<p>There are a couple of downsides with CSS Sprites, though. One is that, depending on the design, it can become virtually impossible to combine some images, because their repeating pattern, reusage etc will prevent that. While the above mentioned tools are great, at the end of day, you always seem to end up manually tweaking your CSS Sprites images file(s) and CSS code.</p>
<p>Firefox engineer Vladimir Vuki?evi? has also written the interesting piece <a href="http://blog.vlad1.com/2009/06/22/to-sprite-or-not-to-sprite/">To Sprite Or Not To Sprite</a> where he sheds some light on memory usage in web browsers and how large images aren&#8217;t always optimal.</p>
<p>So, at times CSS Sprites can be great, but they aren&#8217;t always the best choice.</p>
<h2>Introducing base64-encoded Data URIs</h2>
<p>Which leads us on to the highly interesting topic of base64-encoded Data URIs. For a more thorough explanation of what those are, I recommend reading <a href="http://www.nczonline.net/blog/2009/10/27/data-uris-explained/">Data URIs explained</a> by Nicolas Zakas of Yahoo!. Generally, though, it&#8217;s about writing out binary files converted into data which describes the content.</p>
<p>What this means in practice is that in the HTML code or CSS file we can have the code for the contents, instead of just a reference to the file, which means that we completely eliminate that HTTP request. Just imagine having a web site full of images referenced, but none of them will cost one single HTTP request! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Let&#8217;s look at a real example of showing Smurfette via CSS.</p>
<p><a href="http://www.flickr.com/photos/bbaltimore/254176156/" title="Smurfette by bbaltimore, on Flickr"><img src="http://farm1.static.flickr.com/115/254176156_5bfd84ea4f_m.jpg" width="180" height="240" alt="Smurfette" class="align-center"></a></p>
<h3>Regular CSS background image</h3>
<pre class="brush: html">.smurfette {
	background: url(smurfette.png);
}</pre>
<h3>Base64 Data URI as background image</h3>
<pre class="brush: html">.smurfette {
	background: url(data:image/png;base64,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);
}</pre>
<h3>Comparing the alternatives</h3>
<p>As you can see, the Data URI example is <em>a lot</em> of characters, but the beauty of it is that it describes the image inline, completely eliminating the need for a HTTP request! And sure, as you can see the file size will get bigger (especially in this example), but overall the result is much better than a huge number of HTTP requests. Besides, from my testing and reading about other peoples&#8217; results, if you gzip your CSS file the resulting size is about the same as the regular image URL reference!</p>
<h3>Web browser support</h3>
<p>Data URIs are supported in:</p>
<ul>
<li>Firefox 2+</li>
<li>Safari &#8211; all versions</li>
<li>Google Chrome &#8211; all versions</li>
<li>Opera 7.2+</li>
<li>Internet Explorer 8+</li>
</ul>
<h4>Internet Explorer&#8230;</h4>
<p>As you can see, Internet Explorer does actually support Data URIs from IE 8! However, Microsoft, not to get astray from their long-standing tradition of doing half-ass implementations, only support data URIs smaller than 32 kilobytes. That might sound like a lot, but naturally it becomes a stick in your eye when you have larger images. For instance, in the web site I work on now, I have two images that were too large as Data URIs for IE 8, so I needed to include those two specific files exclusively for IE 8.</p>
<p>What about Internet Explorer versions older than IE 8 then? Actually, interestingly enough they support <a href="http://en.wikipedia.org/wiki/MHTML">the MHTML format</a>, which is an alternative way to accomplish the same thing for older IE versions. Stoyan Stefanov, also of Yahoo!, have written about this approach in <a href="http://www.phpied.com/mhtml-when-you-need-data-uris-in-ie7-and-under/">MHTML &#8211; when you need data: URIs in IE7 and under</a> and related problems in Vista and Windows 7 in <a href="http://www.phpied.com/data-uris-mhtml-ie7-win7-vista-blues/">Data URIs, MHTML and IE7/Win7/Vista blues</a>.</p>
<p>There is some serious trickery, and limitations, when it comes to getting MHTML working. I know a number of people who used it, but in my tests, I actually never got it to work properly. Looking at general web site statistics, though, IE 6 and IE 7 usage steadily decreases all the time. If you want to solve it with MHTML, absolutely, but for me personally, I believe with offering the Data URI solution to all of the above-mentioned supported web browsers, I will still reach a good majority of the market, and, importantly, future web browsers.</p>
<h3>Tools for encoding</h3>
<p>There are a number of terminal-based tools to convert your images into the base64-encoded format, and you also have the option of <a href="http://www.dailycoding.com/Utils/Converter/ImageToBase64.aspx">online image to base64 converters</a>. However, doing all this conversion (fairly) manually and then pasting the code into your code is quite tedious. There has to be a better way, right?</p>
<p>Right! Nicholas Zakas has created the outstanding tool <a href="http://github.com/nzakas/cssembed">CSSEmbed</a>, which takes a CSS file as input, goes through it and encodes all image references to base64. This means that the action of changing all your image references in your CSS file to base64-encoded is a matter of seconds!</p>
<p>Just <a href="http://github.com/nzakas/cssembed/downloads">download the cssembed JAR file</a>, put it wherever you like (placed in the same directory as the CSS file below for simplicity) and then call it like this:</p>
<pre class="brush: html">java -jar cssembed-0.3.2.jar styles.css > styles-base64.css</pre>
<p>This creates a new file named <code>myStylesheet-base64.css</code> where all image references have become base64-encoded. Awesome, right? It also supports conversion for MHTML for targeting older versions of Internet Explorer. Nicolas has written more about it and how it works in <a href="http://www.nczonline.net/blog/2009/11/03/automatic-data-uri-embedding-in-css-files/">Automatic data URI embedding in CSS files</a>.</p>
<h2>High-traffic web sites using Data URIs</h2>
<p>By now, I hope you are as excited as me about this! Imagine removing about 2/3 of all your HTTP requests in a second, thanks to CSSEmbed! And this practice is not some future technology that we might use in five years, it&#8217;s here today! Just take a look at the thumbnails in <a href="http://www.google.com/search?q=monkeys">a Google search for monkey</a> and the search button in <a href="http://search.yahoo.com/">Yahoo! Search</a>, for instance, and you will see what I&#8217;m talking about.</p>
<p>Therefore, I hope this have inspired you to get faster web pages without compromising one bit with the content!</p>
<h2>Acknowledgements</h2>
<p>Great thanks to <a href="http://www.nonblocking.io/">Malte Ubl</a> for suggestions and help, and to <a href="http://novemberborn.net/">Mark Wubben</a> for discussing base64-encoding alternatives.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=pIPY99e4bA0:fUSjKjzEFgw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=pIPY99e4bA0:fUSjKjzEFgw:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=pIPY99e4bA0:fUSjKjzEFgw:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=pIPY99e4bA0:fUSjKjzEFgw:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/01/15/how-to-reduce-the-number-of-http-requests/feed/</wfw:commentRss>
		<slash:comments>208</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2010/01/15/how-to-reduce-the-number-of-http-requests/</feedburner:origLink></item>
		<item>
		<title>CSS background transparency without affecting child elements, through RGBa and filters</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/Dsj9mHGmaps/</link>
		<comments>http://robertnyman.com/2010/01/11/css-background-transparency-without-affecting-child-elements-through-rgba-and-filters/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 10:57:21 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Developing]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web browsers]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1577</guid>
		<description><![CDATA[Looking at the design of most web pages today, almost exclusively all of them include some semi-transparency of elements. However, getting the desired effect in CSS is harder than one might think.
The problem
If we want an element to have a semi-transparent background, and let whatever is behind it shine through, we have two options:

Using CSS [...]]]></description>
			<content:encoded><![CDATA[<p>Looking at the design of most web pages today, almost exclusively all of them include some semi-transparency of elements. However, getting the desired effect in CSS is harder than one might think.</p>
<h2>The problem</h2>
<p>If we want an element to have a semi-transparent background, and let whatever is behind it shine through, we have two options:</p>
<ul>
<li>Using CSS and opacity</li>
<li>Creating a 24-bit PNG background image</li>
</ul>
<p>The problem with using opacity in CSS, besides <a href="http://robertnyman.com/2008/09/16/you-want-css-opacity-to-go-with-that-well-suit-yourself/">the annoying syntax to cater to all web browsers</a>, is that not only the background of the element will have transparency, but all of its child elements as well. This means that any text within will have the same opacity, which I would dare to venture is <em>very seldom</em> the result one wants. You can cater to this problem with creating redundant elements, some tricky CSS positioning and such, but really, it&#8217;s a mess.</p>
<p>The problem with PNG images is, beside a superfluous HTTP request, that images are way, way more larger in file size than one or two lines of CSS code &#8211; especially considering that the image has to be a bit larger to avoid <a href="http://robertnyman.com/2009/05/26/serious-memory-leak-issue-with-24-bit-png-images-with-alpha-transparency-in-internet-explorer/">serious memory leak issues with 24-bit PNG images with alpha transparency in Internet Explorer</a>.</p>
<h2>The solution!</h2>
<p>Therefore, I can happily offer an alternative for you: <a href="http://en.wikipedia.org/wiki/RGBA_color_space">RGBa colors</a>. The beauty in this is that you declare the normal RGB values + values for the level of transparency you want, resulting in a very easy way to declare transparency for a color. Making this happen with CSS, with a fallback for those web browsers that doesn&#8217;t support it, would look like this:</p>
<pre class="brush: html">
	.alpha60 {
		/* Fallback for web browsers that doesn't support RGBa */
		background: rgb(0, 0, 0);
		/* RGBa with 0.6 opacity */
		background: rgba(0, 0, 0, 0.6);
	}
</pre>
<p>The transparency will only be applied to the background &#8211; fantastic, isn&#8217;t it?! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h3>A little caveat</h3>
<p>Shockingly enough (erm), no version of Internet Explorer supports RGBa colors (i.e. not IE 6, IE 7 or IE 8 at the time of this writing). However, and lucky for us, in year 2000 Microsoft went crazy with implementing various filters in IE. One of them are <a href="http://msdn.microsoft.com/en-us/library/ms532997(VS.85).aspx">the gradient filter</a>, and what we can do is use that and just define the same start and end color. &#8220;Ok, but how do I get the transparency&#8221;, you might be thinking now. The answer to that is that you will declare that as part of the color hex value. A CSS gradient filter achieving the same effect as the CSS code above would look like this:</p>
<pre class="brush: html">
	.alpha60 {
		filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);
	}
</pre>
<p>As you can see, it is actually declared as part of an 8-digit hex value, where the first two numbers is the alpha hex value, the next two is Red, and so on. The difference between how we do it with RGBa is that the hex value will range from 0 to 255, just as any color value. So, how do we convert an alpha level of <code>0.6</code> to its hex value?</p>
<p>This where a little Math comes in the picture. Basically, we take our desired alpha level, <code>0.6</code>, and multiplies it with 255 &#8211; then we convert that result into hex. One very easy way to do this is make use of <a href="http://www.google.com/help/features.html">Google&#8217;s Search Features</a>, and just <a href="http://www.google.se/search?q=0.6+*+255+in+hex">search google for 0.6 * 255 in hex</a>. Unfortunately, though, Google&#8217;s calculator seems to only handle integers, hence <a href="http://www.google.se/search?q=0.3+*+255+in+hex">0.3 * 255 in hex</a> won&#8217;t give you a result.</p>
<p>An alternative, or quicker way altogether, is to use the beauty of JavaScript. Just open up Firebug and type this into the console:</p>
<pre class="brush: js">
	// Replace 0.6 with your desired alpha level
	Math.floor(0.6 * 255).toString(16);
</pre>
<p>99 is then corresponding to 0.6, and becomes the first two digits of the start and end colors for the gradient filter.</p>
<h2>Combining it all</h2>
<p>With all techniques learned above, let&#8217;s put it together in a working CSS rule:</p>
<pre class="brush: html">
	.alpha60 {
		/* Fallback for web browsers that doesn't support RGBa */
		background: rgb(0, 0, 0);
		/* RGBa with 0.6 opacity */
		background: rgba(0, 0, 0, 0.6);
		/* For IE 5.5 - 7*/
		filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);
		/* For IE 8*/
		-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";
	}
</pre>
<p>NOTE! In addition to this, you have to declare <code>background: transparent</code> for IE web browsers, preferably served via conditional comments or similar!</p>
<h2>Web browser support</h2>
<p>RGBa support is available in:</p>
<ul>
<li>Firefox 3+</li>
<li>Safari 2+</li>
<li>Opera 10</li>
</ul>
<p>Filters in Internet Explorer are available since Internet Explorer 5.5.</p>
<p>This means that this will work for virtually everyone!</p>
<h3>Acknowledgements</h3>
<p>Thanks to <a href="http://css-tricks.com/rgba-browser-support/">RGBa Browser Support</a> and <a href="http://leaverou.me/2009/02/bulletproof-cross-browser-rgba-backgrounds/">Bulletproof, cross-browser RGBA backgrounds, today</a> for the information and inspiration.</p>
<p>Thanks to <a href="http://friendlybit.com/">Emil Stenström</a> and <a href="http://kodfabrik.se/">Pelle Wessman</a> for coming up with countless alternatives for hex conversion, and explaining basic math to stupid me. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=Dsj9mHGmaps:_oD8sqb4IZU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=Dsj9mHGmaps:_oD8sqb4IZU:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=Dsj9mHGmaps:_oD8sqb4IZU:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=Dsj9mHGmaps:_oD8sqb4IZU:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2010/01/11/css-background-transparency-without-affecting-child-elements-through-rgba-and-filters/feed/</wfw:commentRss>
		<slash:comments>38</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2010/01/11/css-background-transparency-without-affecting-child-elements-through-rgba-and-filters/</feedburner:origLink></item>
		<item>
		<title>Thank you for 2009 – Happy New Year!</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/yxhFGSexnRA/</link>
		<comments>http://robertnyman.com/2009/12/30/thank-you-for-2009-happy-new-year/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 22:23:32 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[Geek Meet]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Personal/life]]></category>
		<category><![CDATA[Speaking]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[Web browsers]]></category>
		<category><![CDATA[eumozcamp09]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1573</guid>
		<description><![CDATA[I hope you are all having some nice time off; I just wanted to take the time to reflect on 2009 and what it was like for me.
Speaking and travel
I think career- and experience-wise, the biggest thing I did this year was starting to travel around and speak at conferences. And while the idea of [...]]]></description>
			<content:encoded><![CDATA[<p>I hope you are all having some nice time off; I just wanted to take the time to reflect on 2009 and what it was like for me.</p>
<h2>Speaking and travel</h2>
<p>I think career- and experience-wise, the biggest thing I did this year was starting to travel around and speak at conferences. And while the idea of it had been brewing in my head for a while, it it is really one person I owe a big thanks of gratitude too, and that is <a href="http://blog.reybango.com/">Rey Bango</a> for pushing me over the brink.</p>
<p>Mozilla were to organize a large event in March in Berlin, and he contacted me and suggested that I should give a presentation about developing Firefox extensions (like a live version of my <a href="http://robertnyman.com/2009/01/24/how-to-develop-a-firefox-extension/">How to develop a Firefox extension</a> article). What he also did was encourage me that I could do it and that I should be brave about it, and as a result, it opened up a year of traveling in Europe giving presentations. Thank you Rey!</p>
<p><a href="http://www.flickr.com/photos/68898616@N00/3391540639/" title="Robert Nyman by patrickf33, on Flickr"><img src="http://farm4.static.flickr.com/3640/3391540639_f5bf365b56.jpg" width="500" height="375" alt="Robert Nyman" class="align-center"></a></p>
<p>Read more about it in <a href="http://robertnyman.com/2009/03/31/the-trip-to-berlin-and-the-mozilla-add-ons-workshop-2009/">The trip to Berlin and the Mozilla Add-Ons Workshop 2009</a>. Berlin was really a starting point for my relationship with Mozilla, and I gave presentations at two more Mozilla conferences this year and was also a part of a panel about HTML5 at the Mozilla Camp Europe.</p>
<p>My next presentation in line was thanks to the trust of <a href="http://unclescript.blogspot.com/">Peter Svensson</a> who asked me to speak at the Scandinavian Web Developer Conference, where I was the only Swede presenting, and had quite a good time. Same week ended with me speaking at a joint event between Mozilla and Nokia (the Maemo division) in Copenhagen in Denmark, and it was also a great time, and a chance to meet my friend <a href="http://roderick.dk/">Morgan Roderick</a> for the first time in person.</p>
<p><a href="http://www.flickr.com/photos/68898616@N00/3591593967/" title="Robert Nyman by patrickf33, on Flickr"><img src="http://farm4.static.flickr.com/3602/3591593967_63f7353608.jpg" width="500" height="281" alt="Robert Nyman" class="align-center"></a></p>
<p>Week after that, I spoke at the Mozilla Swedish Community Meetup, where Mozilla came to Stockholm and treated us to a nice Mozilla evening. Following that, summer was calm and easy, and it didn&#8217;t really start again till the beginning of October, now with Mozilla Camp Europe, this year taking place in Prague. I wasn&#8217;t scheduled to speak, but due to some openings, at least I partook as a panelist discussing HTML5 with the audience, other panel members and prominent people in the Firefox team &#8211; it&#8217;s all summed up in <a href="http://robertnyman.com/2009/10/07/travel-stories-and-session-recaps-from-mozilla-camp-europe-prague-3-4-october-2009/">Travel stories and session recaps from Mozilla Camp Europe Prague, 3-4 October 2009</a>.</p>
<p><a href="http://www.flickr.com/photos/nitot/3983431330/" title="HTML 5 round table by nitot, on Flickr"><img src="http://farm4.static.flickr.com/3501/3983431330_e23bf1dfa8.jpg" width="500" height="375" alt="HTML 5 round table" class="align-center"></a></p>
<p>A few weeks rest, and then in November it really started taking off. With four speaking performances at major conferences within a month, I started to remotely imagine what it must feel like to be <a href="http://www.wait-till-i.com/">Chris Heilmann</a>. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://www.flickr.com/photos/manssandstrom/4132454413/" title="Robert Nyman by Måns Sandström, on Flickr"><img src="http://farm3.static.flickr.com/2675/4132454413_35740b1348.jpg" width="500" height="334" alt="Robert Nyman" class="align-center"></a></p>
<p>First out the door was Øredev, where I got to share the stage and then hassle (read: befriend) two of my major inspirations: Douglas Crockford and Steve Souders &#8211; <a href="http://robertnyman.com/2009/11/16/the-%C3%B8redev-2009-conference-adventure/">The Øredev 2009 Conference adventure</a>. Just three days later, the first instance of JSConf.eu took place in Berlin, and although I felt my own presentation was mediocre at best (I did much better at the other events), it was quite a good place to meet a lot of JavaScript people &#8211; <a href="http://robertnyman.com/2009/11/18/the-jsconf-eu-conference-and-my-visit-to-berlin/">The JSConf.eu conference and my visit to Berlin</a>.</p>
<p><a href="http://www.flickr.com/photos/blank22763/4089932006/" title="hblank-JSConfeu_091108-42 by holgerblank, on Flickr"><img src="http://farm3.static.flickr.com/2666/4089932006_f4579172ae.jpg" width="500" height="332" alt="hblank-JSConfeu_091108-42" class="align-center"></a></p>
<p><a href="http://www.flickr.com/photos/remysharp/4125332306/" title="Robert Nyman by Remy Sharp, on Flickr"><img src="http://farm3.static.flickr.com/2591/4125332306_d2f767dcef.jpg" width="332" height="500" alt="Robert Nyman" class="align-center"></a></p>
<p>Following that was a conference that I had known about for quite some time, and given the setting of UK and the outstanding speakers that had been invited, I really wanted to make it a good one &#8211; and I think I did! What I&#8217;m talking about is Full Frontal, and I believe it was a personal highlight for me as a speaker this year (at least one of the top three) &#8211; <a href="http://robertnyman.com/2009/11/25/my-full-frontal-09-escapades-the-javascript-conference/">My Full Frontal ‘09 escapades – The JavaScript conference</a>.</p>
<p><a href="http://www.flickr.com/photos/songo/4162212891/" title="Love Bears and IE .. a match by David Ramalho, on Flickr"><img src="http://farm3.static.flickr.com/2744/4162212891_d80ee777c6.jpg" width="500" height="282" alt="Love Bears and IE .. a match" class="align-center"></a></p>
<p>Rounding off this conference year was a nice trip to Lisbon in Portugal, and a great time at the Codebits conference &#8211; <a href="http://robertnyman.com/2009/12/08/my-trip-to-lisbon-portugal-and-the-codebits-conference/">My trip to Lisbon, Portugal, and the Codebits conference</a>.</p>
<p>And just to make things better, December 23rd I received an invitation from Mozilla to the <a href="http://www.fosdem.org/2010/">FOSDEM</a> (Free and Open Source Software Developers&#8217; European Meeting) in February! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>So, thanks everyone for your trust and letting me speak at your conference, and thank you to Mozilla for believing in me!</p>
<h2>Honorable mentions</h2>
<p>The absolutely wonderful thing about conferences is the the fantastic people you get to meet, and the places and cultures you get to experience. I&#8217;ve met so many great people this year, too many to mention here, and without a doubt, my feeble mind is probably forgetting a number of you just right now. What I wanted to bring up, though, was a few names that I have met at more than one conference this year and have spent some considerable time together with.</p>
<h3><a href="http://somethin-else.org/">William Quiviger</a></h3>
<p><a href="http://www.flickr.com/photos/robertnyman/3985387400/" title="William Quiviger by Robert Nyman, on Flickr"><img src="http://farm4.static.flickr.com/3528/3985387400_63e508ce82.jpg" width="500" height="333" alt="William Quiviger" class="align-center"></a></p>
<p>William is, amongst other things, an event organizer for Mozilla, and his out-of-this-world ability to handle pressure and make sure things work out, while at the same time sincerely caring about everyones&#8217; wishes and needs, is extremely impressive. </p>
<h3><a href="http://patrickfinch.net/">Patrick Finch</a></h3>
<p>Patrick is the European Marketing Manager for Mozilla, a fantastic and friendly guy, a Brit expat residing in Sweden, and, at least in my world, he sounds and looks like Remington Steele. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://www.flickr.com/photos/robertnyman/3985413272/" title="Patrick Finch by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2580/3985413272_7ce4d85505.jpg" width="500" height="333" alt="Patrick Finch" class="align-center"></a></p>
<h3><a href="http://brian.kingsonline.net/talk/">Brian King</a></h3>
<p>Our first meeting was in Berlin, and then at every other Mozilla event this year. Brian is doing a lot of work for Mozilla in general, and add-on development in particular, and his friendly way and always being there to help has been highly appreciated by me, and I hope to meet him again many more times (a feeling I hope is mutual <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ).</p>
<p><a href="http://www.flickr.com/photos/robertnyman/3984628527/" title="Brian King by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2541/3984628527_5363e89eae.jpg" width="500" height="333" alt="Brian King" class="align-center"></a></p>
<h3><a href="http://remysharp.com/">Remy Sharp</a></h3>
<p><a href="http://www.flickr.com/photos/robertnyman/4166681332/" title="Remy Sharp - Speakers' dinner - Codebits conference by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2733/4166681332_e833226701.jpg" width="500" height="333" alt="Remy Sharp - Speakers' dinner - Codebits conference" class="align-center"></a></p>
<p>I think Remy and I share some kind of record on being at the same place at the same time this year. We met at SWDC in May, Geek Meet in June, then Øredev, JSConf.eu, Full Frontal and Codebits. Needless to say, he&#8217;s probably mighty sick of me by now, but for me, it has been great to meet him throughout the year, since he is both friendly and very talented (although his work/web dedication is sometimes a bit frightening, even to me).</p>
<h3><a href="http://www.molly.com/">Molly Holzschlag</a></h3>
<p>I had the pleasure of meeting Molly first at the Scandinavian Web Developer Conference in May, and then have her over for Geek Meet in October. She&#8217;s a truly fantastic person, and even though how well-known she is, I really appreciate her taking the time to listen to everyone.</p>
<p><a href="http://www.flickr.com/photos/robertnyman/4030987991/" title="Molly - Easy Access Point by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2716/4030987991_b8df659991.jpg" width="500" height="333" alt="Molly - Easy Access Point" class="align-center"></a></p>
<h3><a href="http://roderick.dk/">Morgan Roderick</a></h3>
<p><a href="http://www.flickr.com/photos/remysharp/4102954132/" title="Shock! by Remy Sharp, on Flickr"><img src="http://farm3.static.flickr.com/2626/4102954132_f57e286ba7.jpg" width="500" height="375" alt="Shock!" class="align-center"></a></p>
<p>I&#8217;ve known Morgan for a few years, but this year was the first time we got to meet &#8211; first in Copenhagen and then in Berlin. Morgan is extremely caring and I always act like a child around him, since he is just the nice guy that takes care of things. He seems to love Berlin, but who knows, one day we might even meet in Sweden? <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h3>Søren Skrøder</h3>
<p><a href="http://www.flickr.com/photos/robertnyman/3985323102/" title="Søren Skrøder by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2456/3985323102_51e4d2d16b.jpg" width="500" height="333" alt="Søren Skrøder" class="align-center"></a></p>
<p>Søren is a Dane working with localization for Mozilla, and we first met in Copenhagen and then did a Prague city walkabout together in October. He is a very nice guy, and if you ever cared about beards, Søren has one to kill for!</p>
<h3><a href="http://novemberborn.net/">Mark Wubben</a></h3>
<p>Mark is also someone I have known for a number of years, but met for the first time this year when he spoke at Geek Meet in February. He then came to the Scandinavian Web Developer Conference followed by the Mozilla event in Copenhagen. For fun, I named him a stalker of mine, and haven&#8217;t seen him since&#8230; <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://www.flickr.com/photos/robertnyman/3899972230/" title="Mozilla Maemo Danish Weekend, Copenhagen, May 2009 by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2500/3899972230_a627774dc7.jpg" width="375" height="500" alt="Mozilla Maemo Danish Weekend, Copenhagen, May 2009" class="align-center"></a></p>
<h3><a href="http://my.opera.com/chrismills/blog/">Chris Mills</a></h3>
<p>Ah, Chris Mills. Chris is the crazy heavy metal Brit working with developer relations for Opera, and he spoke at Geek Meet in June and then we meet at Full Frontal in Brighton in November. Extremely nice fellow, crazy stories, but I believe I actually made him flush at the Full Frontal after-party! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://www.flickr.com/photos/remysharp/3405978121/" title="Opera Rocker by Remy Sharp, on Flickr"><img src="http://farm4.static.flickr.com/3633/3405978121_c03d01561f.jpg" width="375" height="500" alt="Opera Rocker" class="align-center"></a></p>
<h2>Conference information and presentation slides</h2>
<p>Here are all the links to the events mentioned above and also to my presentation slides:</p>
<h3>Mozilla Add-Ons Workshop, Berlin [Germany] &#8211; March 28th</h3>
<p>
	Presentation: <a href="http://presentation-slides.googlecode.com/files/how-to-write-your-first-extension-berlin.pdf">How to write your first extension (PDF 1.6 MB)</a><br />
	Event information: <a href="https://wiki.mozilla.org/MAOW:2009:Berlin:en">Mozilla Add-Ons Workshop Berlin, March 28th</a>
</p>
<h3>Scandinavian Web Developer Conference 2009, Stockholm [Sweden] &#8211; May 25th</h3>
<p>
	Presentation: <a href="http://www.slideshare.net/robnyman/modern-web-development">Modern Web Development (View/Download on SlideShare)</a><br />
	Event information: <a href="http://www.swdc2009.com/index_en.html">Scandinavian Web Developer Conference 2009</a>
</p>
<h3>Mozilla/Maemo Danish Weekend, Copenhagen [Denmark] &#8211; May 30th-31st</h3>
<p>
	Presentation: <a href="http://www.slideshare.net/robnyman/how-to-write-your-first-firefox-extensio">How to write your first extension (View/Download on SlideShare)</a><br />
	Event information: <a href="http://wiki.maemo.org/MozillaMaemoDanishWeekend">Mozilla/Maemo Danish Weekend</a>
</p>
<h3>Mozilla Swedish Community Meetup, Stockholm [Sweden] &#8211; June 2nd</h3>
<p>
	Presentation: <a href="http://www.slideshare.net/robnyman/how-to-write-your-first-firefox-extensio">How to write your first extension (View/Download on SlideShare)</a><br />
	Event information: <a href="https://wiki.mozilla.org/SwedishMeetup">Mozilla Swedish Community Meetup</a>
</p>
<h3>Øredev 2009, Malmö [Sweden] &#8211; November 4th</h3>
<p>
	Presentation: <a href="http://www.slideshare.net/robnyman/javascript-from-birth-to-closure">JavaScript &#8211; From Birth to Closure (View/Download on SlideShare)</a><br />
	Event information: <a href="http://www.oredev.org/">Øredev 2009</a>
</p>
<h3>JSConf.eu 2009, Berlin [Germany] &#8211; November 7th</h3>
<p>
	Presentation: <a href="http://www.slideshare.net/robnyman/javascript-from-birth-to-closure">JavaScript &#8211; From Birth to Closure (View/Download on SlideShare)</a><br />
	Event information: <a href="http://jsconf.eu/2009/">JSConf.eu 2009</a>
</p>
<h3>Full Frontal JavaScript Conference 2009, Brighton [United Kingdom] &#8211; November 20th</h3>
<p>
	Presentation: <a href="http://www.slideshare.net/robnyman/javascript-from-birth-to-closure">JavaScript &#8211; From Birth to Closure (View/Download on SlideShare)</a><br />
	Event information: <a href="http://2009.full-frontal.org/">Full Frontal JavaScript Conference 2009</a>
</p>
<h3>Codebits 2009, Lisbon [Portugal] &#8211; December 3rd</h3>
<p>
	Presentation: <a href="http://www.slideshare.net/robnyman/javascript-from-birth-to-closure">JavaScript &#8211; From Birth to Closure (View/Download on SlideShare)</a><br />
	Event information: <a href="http://codebits.eu/">Codebits 2009</a>
</p>
<h2>The year of people dying</h2>
<p>It seems like 2009 was a year when a lot of people died, especially on a celebrity level. Reading <a href="http://www.bowlofserial.com/2009/09/03/famous-people-whove-died-in-2009-so-far/">Famous People Who’ve Died in 2009 (so far) </a> and delving deeper in <a href="http://www.whosdatedwho.com/celebrities/people/list/celebrity-categories.asp?FD=yod">Celebrities who died in: 2009 (page 1)</a> it makes you wonder what was really going on.</p>
<p>Naturally, of all the people that passed away, Michael Jackson was by far the most famous one.</p>
<p>I just hope everyone will get to rest in peace.</p>
<h2>All my posts in 2009</h2>
<p>I first thought of picking out a few of my blog posts that I liked this year, but then again, it seems like everyone have their own favorite. Instead, I thought I&#8217;d list all of my posts in 2009 below for you to skim through them, and re-read the ones you like, or perhaps find one you missed the first time around.</p>
<h3><a href='http://robertnyman.com/2009/12/' title='December 2009'>December 2009</a></h3>
<ul class="postspermonth">
<li>22: <a href='http://robertnyman.com/2009/12/22/merry-christmas-happy-holidays-2009/' title='Merry Christmas, Happy Holidays!'>Merry Christmas, Happy Holidays!</a></li>
<li>18: <a href='http://robertnyman.com/2009/12/18/releasing-inline-code-finder-as-a-google-chrome-extension/' title='Releasing Inline Code Finder as a Google Chrome extension'>Releasing Inline Code Finder as a Google Chrome extension</a></li>
<li>17: <a href='http://robertnyman.com/2009/12/17/testing-object-oriented-css-oocss-for-easier-css-development/' title='Testing Object-Oriented CSS (OOCSS) for easier CSS development'>Testing Object-Oriented CSS (OOCSS) for easier CSS development</a></li>
<li>14: <a href='http://robertnyman.com/2009/12/14/content-management-systems-are-a-dying-breed/' title='Content Management Systems are a dying breed'>Content Management Systems are a dying breed</a></li>
<li>08: <a href='http://robertnyman.com/2009/12/08/the-death-of-a-friend/' title='The death of a friend'>The death of a friend</a></li>
<li>08: <a href='http://robertnyman.com/2009/12/08/my-trip-to-lisbon-portugal-and-the-codebits-conference/' title='My trip to Lisbon, Portugal, and the Codebits conference'>My trip to Lisbon, Portugal, and the Codebits conference</a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/11/' title='November 2009'>November 2009</a></h3>
<ul class="postspermonth">
<li>30: <a href='http://robertnyman.com/2009/11/30/speaking-at-codebits-in-lisbon-portugal/' title='Speaking at Codebits in Lisbon, Portugal'>Speaking at Codebits in Lisbon, Portugal</a></li>
<li>27: <a href='http://robertnyman.com/2009/11/27/the-html5-syntax-options-problem/' title='The HTML5 syntax options problem'>The HTML5 syntax options problem</a></li>
<li>25: <a href='http://robertnyman.com/2009/11/25/my-full-frontal-09-escapades-the-javascript-conference/' title='My Full Frontal &#039;09 escapades  - The JavaScript conference'>My Full Frontal &#8216;09 escapades  &#8211; The JavaScript conference</a></li>
<li>18: <a href='http://robertnyman.com/2009/11/18/the-jsconf-eu-conference-and-my-visit-to-berlin/' title='The JSConf.eu conference and my visit to Berlin'>The JSConf.eu conference and my visit to Berlin</a></li>
<li>17: <a href='http://robertnyman.com/2009/11/17/a-faster-web-with-resource-packages-mozilla-suggestion-to-have-just-one-http-request/' title='A faster web with Resource Packages - Mozilla suggestion to have just one HTTP request'>A faster web with Resource Packages &#8211; Mozilla suggestion to have just one HTTP request</a></li>
<li>16: <a href='http://robertnyman.com/2009/11/16/the-%c3%b8redev-2009-conference-adventure/' title='The Øredev 2009 Conference adventure'>The Øredev 2009 Conference adventure</a></li>
<li>09: <a href='http://robertnyman.com/2009/11/09/firefox-turns-five-years-old-today-congratulations/' title='Firefox turns five years old today - congratulations!'>Firefox turns five years old today &#8211; congratulations!</a></li>
<li>02: <a href='http://robertnyman.com/2009/11/02/this-just-in-speaking-at-jsconf-eu-november-7th-8th-2009/' title='This just in: Speaking at JSConf.eu November 7th-8th 2009!'>This just in: Speaking at JSConf.eu November 7th-8th 2009!</a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/10/' title='October 2009'>October 2009</a></h3>
<ul class="postspermonth">
<li>29: <a href='http://robertnyman.com/2009/10/29/apple-to-patent-css-transformations-and-animations/' title='Apple to patent CSS transformations and animations'>Apple to patent CSS transformations and animations</a></li>
<li>27: <a href='http://robertnyman.com/2009/10/27/releasing-firefinder-1-01-now-with-support-for-8-languages/' title='Releasing Firefinder 1.01 - now with support for 8 languages'>Releasing Firefinder 1.01 &#8211; now with support for 8 languages</a></li>
<li>26: <a href='http://robertnyman.com/2009/10/26/speaking-at-full-frontal-javascript-conference-20th-november-2009/' title='Speaking at Full Frontal - JavaScript Conference - 20th November 2009'>Speaking at Full Frontal &#8211; JavaScript Conference &#8211; 20th November 2009</a></li>
<li>21: <a href='http://robertnyman.com/2009/10/21/web-browser-market-share-and-rounding-errors/' title='Web browser market share and rounding errors'>Web browser market share and rounding errors</a></li>
<li>14: <a href='http://robertnyman.com/2009/10/14/an-introduction-to-html5/' title='An introduction to HTML5'>An introduction to HTML5</a></li>
<li>13: <a href='http://robertnyman.com/2009/10/13/speaking-at-%c3%b8redev-2009-developer-conference-november-4th-2009/' title='Speaking at &Oslash;redev 2009 Developer Conference, November 4th 2009'>Speaking at &Oslash;redev 2009 Developer Conference, November 4th 2009</a></li>
<li>08: <a href='http://robertnyman.com/2009/10/08/help-making-firefox-better-share-your-thoughts/' title='Help making Firefox better - share your thoughts!'>Help making Firefox better &#8211; share your thoughts!</a></li>
<li>07: <a href='http://robertnyman.com/2009/10/07/travel-stories-and-session-recaps-from-mozilla-camp-europe-prague-3-4-october-2009/' title='Travel stories and session recaps from Mozilla Camp Europe Prague, 3-4 October 2009'>Travel stories and session recaps from Mozilla Camp Europe Prague, 3-4 October 2009</a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/09/' title='September 2009'>September 2009</a></h3>
<ul class="postspermonth">
<li>28: <a href='http://robertnyman.com/2009/09/28/invited-to-mozilla-camp-europe-prague-3-4-october-2009/' title='Invited to Mozilla Camp Europe Prague, 3-4 October 2009'>Invited to Mozilla Camp Europe Prague, 3-4 October 2009</a></li>
<li>23: <a href='http://robertnyman.com/2009/09/23/google-chrome-frame-google-wave-not-supporting-any-version-of-internet-explorer/' title='Google Chrome Frame &amp; Google Wave not supporting any version of Internet Explorer'>Google Chrome Frame &#038; Google Wave not supporting any version of Internet Explorer</a></li>
<li>22: <a href='http://robertnyman.com/2009/09/22/one-million-downloads-for-getelementsbyclassname/' title='One million downloads for getElementsByClassName'>One million downloads for getElementsByClassName</a></li>
<li>21: <a href='http://robertnyman.com/2009/09/21/geek-meet-october-2009-molly-holzschlag-will-present-about-html-5-and-other-goodies/' title='Geek Meet October 2009 - Molly Holzschlag will present about HTML 5 and other goodies'>Geek Meet October 2009 &#8211; Molly Holzschlag will present about HTML 5 and other goodies</a></li>
<li>18: <a href='http://robertnyman.com/2009/09/18/the-passing-of-patrick-swayze/' title='The passing of Patrick Swayze'>The passing of Patrick Swayze</a></li>
<li>15: <a href='http://robertnyman.com/2009/09/15/apples-app-store-and-installing-what-you-like-on-an-iphone/' title='Apple&#039;s App Store and installing what you like on an iPhone'>Apple&#8217;s App Store and installing what you like on an iPhone</a></li>
<li>11: <a href='http://robertnyman.com/2009/09/11/getting-caught-for-speeding/' title='Getting caught for speeding'>Getting caught for speeding</a></li>
<li>09: <a href='http://robertnyman.com/2009/09/09/fuck-ie-gently/' title='Fuck IE gently'>Fuck IE gently</a></li>
<li>07: <a href='http://robertnyman.com/2009/09/07/firefinder-1-0-released-code-collaboration-with-the-friendlyfire-feature-better-integration-with-firebug-and-more/' title='Firefinder 1.0 released - code collaboration with the FriendlyFire feature, better integration with Firebug and more'>Firefinder 1.0 released &#8211; code collaboration with the FriendlyFire feature, better integration with Firebug and more</a></li>
<li>02: <a href='http://robertnyman.com/2009/09/02/apple-mac-os-x-versions-named-after-german-tanks/' title='Apple Mac OS X versions named after German tanks?'>Apple Mac OS X versions named after German tanks?</a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/08/' title='August 2009'>August 2009</a></h3>
<ul class="postspermonth">
<li>31: <a href='http://robertnyman.com/2009/08/31/35/' title='35'>35</a></li>
<li>28: <a href='http://robertnyman.com/2009/08/28/when-the-wiimote-nintento-wii-remote-stops-working/' title='When the Wiimote (Nintento Wii Remote) stops working'>When the Wiimote (Nintento Wii Remote) stops working</a></li>
<li>27: <a href='http://robertnyman.com/2009/08/27/how-do-you-value-an-experience/' title='How do you value an experience?'>How do you value an experience?</a></li>
<li>26: <a href='http://robertnyman.com/2009/08/26/hi-ho-silver-im-back/' title='Hi Ho Silver - I&#039;m back!'>Hi Ho Silver &#8211; I&#8217;m back!</a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/07/' title='July 2009'>July 2009</a></h3>
<ul class="postspermonth">
<li>05: <a href='http://robertnyman.com/2009/07/05/summer-break-2009/' title='Summer break 2009'>Summer break 2009</a></li>
<li>01: <a href='http://robertnyman.com/2009/07/01/firefox-35-is-released-information-about-having-multiple-firefox-versions-and-web-developer-extension-compatibility/' title='Firefox 3.5 is released - information about having multiple Firefox versions and web developer extension compatibility'>Firefox 3.5 is released &#8211; information about having multiple Firefox versions and web developer extension compatibility</a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/06/' title='June 2009'>June 2009</a></h3>
<ul class="postspermonth">
<li>30: <a href='http://robertnyman.com/2009/06/30/pictureslides-20-highly-customizable-option-to-create-javascript-slideshows/' title='PictureSlides 2.0 - highly customizable option to create JavaScript slideshows'>PictureSlides 2.0 &#8211; highly customizable option to create JavaScript slideshows</a></li>
<li>26: <a href='http://robertnyman.com/2009/06/26/the-death-of-michael-jackson/' title='The death of Michael Jackson'>The death of Michael Jackson</a></li>
<li>25: <a href='http://robertnyman.com/2009/06/25/microsofts-recent-marketing-campaigns/' title='Microsoft&#039;s recent marketing campaigns'>Microsoft&#8217;s recent marketing campaigns</a></li>
<li>24: <a href='http://robertnyman.com/2009/06/24/review-of-acdc-at-ullevi-stadium-june-21st-2009/' title='Review of AC/DC at Ullevi Stadium June 21st 2009'>Review of AC/DC at Ullevi Stadium June 21st 2009</a></li>
<li>23: <a href='http://robertnyman.com/2009/06/23/opera-unite-some-questions-and-answers/' title='Opera Unite - some questions and answers'>Opera Unite &#8211; some questions and answers</a></li>
<li>18: <a href='http://robertnyman.com/2009/06/18/swedish-midsummer-celebrations/' title='Swedish Midsummer celebrations'>Swedish Midsummer celebrations</a></li>
<li>18: <a href='http://robertnyman.com/2009/06/18/new-javascript-features-with-native-json-support-and-javascript-181-additions/' title='New JavaScript features with native JSON support and JavaScript 1.8.1 additions'>New JavaScript features with native JSON support and JavaScript 1.8.1 additions</a></li>
<li>16: <a href='http://robertnyman.com/2009/06/16/do-you-take-notes/' title='Do you take notes?'>Do you take notes?</a></li>
<li>15: <a href='http://robertnyman.com/2009/06/15/thoughts-on-microsofts-move-to-ship-windows-7-without-internet-explorer-in-europe/' title='Thoughts on Microsoft&#039;s move to ship Windows 7 without Internet Explorer in Europe'>Thoughts on Microsoft&#8217;s move to ship Windows 7 without Internet Explorer in Europe</a></li>
<li>11: <a href='http://robertnyman.com/2009/06/11/impossible-to-uninstall-safari-4-in-mac-os-x-apple-pretty-much-follows-suit-with-microsoft/' title='Impossible to uninstall Safari 4 in Mac OS X - Apple pretty much follows suit with Microsoft'>Impossible to uninstall Safari 4 in Mac OS X &#8211; Apple pretty much follows suit with Microsoft</a></li>
<li>10: <a href='http://robertnyman.com/2009/06/10/store-information-on-the-client-side-with-dom-storageweb-storage-plenty-of-improvements-available/' title='Store information on the client side with DOM Storage/Web Storage - plenty of improvements available'>Store information on the client side with DOM Storage/Web Storage &#8211; plenty of improvements available</a></li>
<li>09: <a href='http://robertnyman.com/2009/06/09/my-thoughts-on-twitter/' title='My thoughts on Twitter'>My thoughts on Twitter</a></li>
<li>08: <a href='http://robertnyman.com/2009/06/08/poll-which-javascript-library-do-you-use/' title='Poll: which JavaScript library do you use?'>Poll: which JavaScript library do you use?</a></li>
<li>05: <a href='http://robertnyman.com/2009/06/05/geek-meet-charity-june-4th-2009-was-a-success/' title='Geek Meet Charity June 4th 2009 was a success!'>Geek Meet Charity June 4th 2009 was a success!</a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/05/' title='May 2009'>May 2009</a></h3>
<ul class="postspermonth">
<li>28: <a href='http://robertnyman.com/2009/05/28/getters-and-setters-with-javascript-code-samples-and-demos/' title='Getters and setters with JavaScript - code samples and demos'>Getters and setters with JavaScript &#8211; code samples and demos</a></li>
<li>27: <a href='http://robertnyman.com/2009/05/27/four-years/' title='Four years'>Four years</a></li>
<li>26: <a href='http://robertnyman.com/2009/05/26/serious-memory-leak-issue-with-24-bit-png-images-with-alpha-transparency-in-internet-explorer/' title='Serious memory leak issue with 24-bit PNG images with alpha transparency in Internet Explorer'>Serious memory leak issue with 24-bit PNG images with alpha transparency in Internet Explorer</a></li>
<li>20: <a href='http://robertnyman.com/2009/05/20/mozillamaemo-danish-weekend-may-30th-31st-addition-to-my-two-weeks-of-speak/' title='Mozilla/Maemo Danish Weekend May 30th-31st - addition to my two weeks of speak'>Mozilla/Maemo Danish Weekend May 30th-31st &#8211; addition to my two weeks of speak</a></li>
<li>15: <a href='http://robertnyman.com/2009/05/15/as-we-were/' title='As we were'>As we were</a></li>
<li>14: <a href='http://robertnyman.com/2009/05/14/invasion-of-my-public-privacy/' title='Invasion of my public privacy'>Invasion of my public privacy</a></li>
<li>13: <a href='http://robertnyman.com/2009/05/13/mozilla-swedish-community-meetup-in-stockholm-june-2nd-2009/' title='Mozilla Swedish Community Meetup in Stockholm June 2nd 2009'>Mozilla Swedish Community Meetup in Stockholm June 2nd 2009</a></li>
<li>12: <a href='http://robertnyman.com/2009/05/12/firefinder-for-firebug-an-extension-to-quickly-find-elements-matching-your-css-selectors-or-xpath-expressions/' title='Firefinder for Firebug - an extension to quickly find elements matching your CSS selectors or XPath expressions'>Firefinder for Firebug &#8211; an extension to quickly find elements matching your CSS selectors or XPath expressions</a></li>
<li>11: <a href='http://robertnyman.com/2009/05/11/mozilla-prism-brings-power-to-stand-alone-web-applications/' title='Mozilla Prism brings power to stand-alone web applications'>Mozilla Prism brings power to stand-alone web applications</a></li>
<li>07: <a href='http://robertnyman.com/2009/05/07/the-alt-attribute-is-not-for-tooltips/' title='The alt attribute is NOT for tooltips'>The alt attribute is NOT for tooltips</a></li>
<li>05: <a href='http://robertnyman.com/2009/05/05/metallica-live-may-4th-2009-at-the-globe-arena-in-stockholm-sweden/' title='Metallica live May 4th 2009 at the Globe arena in Stockholm, Sweden'>Metallica live May 4th 2009 at the Globe arena in Stockholm, Sweden</a></li>
<li>04: <a href='http://robertnyman.com/2009/05/04/geek-meet-charity-june-4th-2009-chris-mills-and-remy-sharp-speaking/' title='Geek Meet Charity June 4th 2009 - Chris Mills and Remy Sharp speaking'>Geek Meet Charity June 4th 2009 &#8211; Chris Mills and Remy Sharp speaking</a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/04/' title='April 2009'>April 2009</a></h3>
<ul class="postspermonth">
<li>30: <a href='http://robertnyman.com/2009/04/30/my-father-would-have-turned-70-today/' title='My father would have turned 70 today'>My father would have turned 70 today</a></li>
<li>29: <a href='http://robertnyman.com/2009/04/29/moving-to-new-host-working-out-the-kinks/' title='Moving to new host, working out the kinks'>Moving to new host, working out the kinks</a></li>
<li>27: <a href='http://robertnyman.com/2009/04/27/introduction-test-cases-and-web-browser-compatibility-tables-for-javascript-16-javascript-17-javascript-18/' title='Introduction, test cases and web browser compatibility tables for JavaScript 1.6, JavaScript 1.7 &amp; JavaScript 1.8'>Introduction, test cases and web browser compatibility tables for JavaScript 1.6, JavaScript 1.7 &#038; JavaScript 1.8</a></li>
<li>24: <a href='http://robertnyman.com/2009/04/24/d-a-d-at-klubben-stockholm-april-4th-2009-concert-review/' title='D-A-D at Klubben, Stockholm April 4th 2009 - concert review'>D-A-D at Klubben, Stockholm April 4th 2009 &#8211; concert review</a></li>
<li>21: <a href='http://robertnyman.com/2009/04/21/speaking-at-the-swedish-web-developer-conference-2009-may-25th/' title='Speaking at the Swedish Web Developer Conference 2009, May 25th'>Speaking at the Swedish Web Developer Conference 2009, May 25th</a></li>
<li>20: <a href='http://robertnyman.com/2009/04/20/easier-source-control-management-with-distributed-version-control-system-and-mercurial/' title='Easier Source Control Management with Distributed Version Control System and Mercurial'>Easier Source Control Management with Distributed Version Control System and Mercurial</a></li>
<li>15: <a href='http://robertnyman.com/2009/04/15/a-heading-solution-you-havent-seen-before/' title='A heading solution you haven&#039;t seen before'>A heading solution you haven&#8217;t seen before</a></li>
<li>03: <a href='http://robertnyman.com/2009/04/03/mozilla-labs-online-code-editor-bespin/' title='Mozilla Labs&#039; online code editor Bespin'>Mozilla Labs&#8217; online code editor Bespin</a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/03/' title='March 2009'>March 2009</a></h3>
<ul class="postspermonth">
<li>31: <a href='http://robertnyman.com/2009/03/31/the-trip-to-berlin-and-the-mozilla-add-ons-workshop-2009/' title='The trip to Berlin and the Mozilla Add-Ons Workshop 2009'>The trip to Berlin and the Mozilla Add-Ons Workshop 2009</a></li>
<li>26: <a href='http://robertnyman.com/2009/03/26/search-smugmug-photos-easily-with-smug-search-ubiquity-command/' title='Search SmugMug photos easily with smug-search Ubiquity command'>Search SmugMug photos easily with smug-search Ubiquity command</a></li>
<li>23: <a href='http://robertnyman.com/2009/03/23/bob-dylan-club-gig-at-berns-in-stockholm-march-22nd-2009/' title='Bob Dylan club gig at Berns in Stockholm March 22nd 2009'>Bob Dylan club gig at Berns in Stockholm March 22nd 2009</a></li>
<li>20: <a href='http://robertnyman.com/2009/03/20/an-evening-with-microsoft/' title='An evening with Microsoft'>An evening with Microsoft</a></li>
<li>16: <a href='http://robertnyman.com/2009/03/16/your-end-users-shouldnt-have-to-know-technology/' title='Your end users shouldn&#039;t have to know technology'>Your end users shouldn&#8217;t have to know technology</a></li>
<li>13: <a href='http://robertnyman.com/2009/03/13/what-to-know-what-to-learn/' title='What to know, what to learn'>What to know, what to learn</a></li>
<li>10: <a href='http://robertnyman.com/2009/03/10/speaking-at-mozilla-add-ons-workshop-maow-in-berlin-march-29th-2009/' title='Speaking at Mozilla Add-Ons Workshop (MAOW) in Berlin March 29th 2009'>Speaking at Mozilla Add-Ons Workshop (MAOW) in Berlin March 29th 2009</a></li>
<li>09: <a href='http://robertnyman.com/2009/03/09/adobe-air-15-issue-solution-and-support-experience/' title='Adobe AIR 1.5 issue - solution and support experience'>Adobe AIR 1.5 issue &#8211; solution and support experience</a></li>
<li>02: <a href='http://robertnyman.com/2009/03/02/adobe-flash-pros-and-cons/' title='Adobe Flash - pros and cons'>Adobe Flash &#8211; pros and cons</a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/02/' title='February 2009'>February 2009</a></h3>
<ul class="postspermonth">
<li>26: <a href='http://robertnyman.com/2009/02/26/headhunters/' title='Headhunters'>Headhunters</a></li>
<li>23: <a href='http://robertnyman.com/2009/02/23/review-of-acdc-at-the-globe-arena-stockholm-february-20th-2009/' title='Review of AC/DC at the Globe Arena, Stockholm February 20th 2009'>Review of AC/DC at the Globe Arena, Stockholm February 20th 2009</a></li>
<li>20: <a href='http://robertnyman.com/2009/02/20/reviews-of-the-nominated-movies-for-best-motion-picture-in-the-oscar-academy-awards/' title='Reviews of the nominated movies for Best Motion Picture in the Oscar Academy Awards'>Reviews of the nominated movies for Best Motion Picture in the Oscar Academy Awards</a></li>
<li>17: <a href='http://robertnyman.com/2009/02/17/handle-duplicate-content-indexing-for-seo-with-the-relcanonical-attribute/' title='Handle duplicate content indexing for SEO with the rel=&quot;canonical&quot; attribute'>Handle duplicate content indexing for SEO with the rel=&#8221;canonical&#8221; attribute</a></li>
<li>16: <a href='http://robertnyman.com/2009/02/16/ie-8-standards-compliancy-goes-back-to-being-an-opt-in/' title='IE 8 - standards compliancy goes back to being an opt-in'>IE 8 &#8211; standards compliancy goes back to being an opt-in</a></li>
<li>12: <a href='http://robertnyman.com/2009/02/12/companies-and-social-networking/' title='Companies and social networking'>Companies and social networking</a></li>
<li>09: <a href='http://robertnyman.com/2009/02/09/stop-developing-for-internet-explorer-6/' title='Stop developing for Internet Explorer 6'>Stop developing for Internet Explorer 6</a></li>
<li>05: <a href='http://robertnyman.com/2009/02/05/new-version-of-inline-code-finder-with-event-filtering-and-a-download-record/' title='New version of Inline Code Finder, with event filtering - and a download record'>New version of Inline Code Finder, with event filtering &#8211; and a download record</a></li>
<li>04: <a href='http://robertnyman.com/2009/02/04/how-to-solve-first-child-css-bug-in-ie-7/' title='How to solve :first-child CSS bug in IE 7'>How to solve :first-child CSS bug in IE 7</a></li>
<li>03: <a href='http://robertnyman.com/2009/02/03/opera-web-standards-curriculum-article-handling-events-with-javascript/' title='Opera Web Standards Curriculum article: Handling events with JavaScript'>Opera Web Standards Curriculum article: Handling events with JavaScript</a></li>
<li>02: <a href='http://robertnyman.com/2009/02/02/contribute-to-the-stockholm-sweden-twestival-charity-event/' title='Contribute to the Stockholm Sweden Twestival charity event '>Contribute to the Stockholm Sweden Twestival charity event </a></li>
</ul>
<h3><a href='http://robertnyman.com/2009/01/' title='January 2009'>January 2009</a></h3>
<ul class="postspermonth">
<li>30: <a href='http://robertnyman.com/2009/01/30/what-was-your-first-hex-code/' title='What was your first hex code?'>What was your first hex code?</a></li>
<li>29: <a href='http://robertnyman.com/2009/01/29/geek-meet-february-2009-with-mark-wubben/' title='Geek Meet February 2009, with Mark Wubben'>Geek Meet February 2009, with Mark Wubben</a></li>
<li>26: <a href='http://robertnyman.com/2009/01/26/microsoft-force-installs-firefox-extension/' title='Microsoft force-installs Firefox extension'>Microsoft force-installs Firefox extension</a></li>
<li>24: <a href='http://robertnyman.com/2009/01/24/how-to-develop-a-firefox-extension/' title='How to develop a Firefox extension'>How to develop a Firefox extension</a></li>
<li>22: <a href='http://robertnyman.com/2009/01/22/flickr-gallery-plus-better-photo-set-viewing-with-firefox-extension-and-greasemonkey-userscript/' title='Flickr Gallery Plus! - better photo set viewing with Firefox extension and Greasemonkey userscript'>Flickr Gallery Plus! &#8211; better photo set viewing with Firefox extension and Greasemonkey userscript</a></li>
<li>19: <a href='http://robertnyman.com/2009/01/19/extending-web-browser-functionality-greasemonkey-for-all-web-browsers/' title='Extending web browser functionality - Greasemonkey for all web browsers'>Extending web browser functionality &#8211; Greasemonkey for all web browsers</a></li>
<li>
<li>05: <a href='http://robertnyman.com/2009/01/05/apple-macworld-expo-keynote-predictions/' title='Apple Macworld Expo keynote predictions'>Apple Macworld Expo keynote predictions</a></li>
</ul>
<h2>Happy New Year!</h2>
<p>With that, I&#8217;d like to thank you for 2009, and here&#8217;s to a great 2010!</p>
<p>Happy New Year!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=yxhFGSexnRA:1RnBrH4vjAw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=yxhFGSexnRA:1RnBrH4vjAw:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=yxhFGSexnRA:1RnBrH4vjAw:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=yxhFGSexnRA:1RnBrH4vjAw:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2009/12/30/thank-you-for-2009-happy-new-year/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2009/12/30/thank-you-for-2009-happy-new-year/</feedburner:origLink></item>
		<item>
		<title>Merry Christmas, Happy Holidays!</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/pX6AukFZwc4/</link>
		<comments>http://robertnyman.com/2009/12/22/merry-christmas-happy-holidays-2009/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 11:43:23 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Personal/life]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1569</guid>
		<description><![CDATA[It&#8217;s that time of year that should be spent with your loved ones no work, no obligations, just share some happiness with people who are special to you.
I would just like to sincerely thank you for reading, for putting up with me and for all the knowledge and good thoughts you share with me. I [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s that time of year that should be spent with your loved ones no work, no obligations, just share some happiness with people who are special to you.</p>
<p>I would just like to sincerely thank you for reading, for putting up with me and for all the knowledge and good thoughts you share with me. I truly appreciate it! I plan to write a little longer post before New Years, summarizing this year.</p>
<p>I thought I&#8217;d accompany my wishes with one of the best pictures taken of my family:</p>
<p><a href="http://www.flickr.com/photos/robertnyman/4205999772/" title="Best portrait ever of my family by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2494/4205999772_a4ca21e0bb.jpg" width="500" height="333" alt="Best portrait ever of my family" class="align-center"></a></p>
<p>Merry Christmas, Happy Holidays! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=pX6AukFZwc4:Sqkrp5nhYaQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=pX6AukFZwc4:Sqkrp5nhYaQ:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=pX6AukFZwc4:Sqkrp5nhYaQ:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=pX6AukFZwc4:Sqkrp5nhYaQ:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2009/12/22/merry-christmas-happy-holidays-2009/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2009/12/22/merry-christmas-happy-holidays-2009/</feedburner:origLink></item>
		<item>
		<title>Releasing Inline Code Finder as a Google Chrome extension</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/Yqif-r0I2Do/</link>
		<comments>http://robertnyman.com/2009/12/18/releasing-inline-code-finder-as-a-google-chrome-extension/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 10:18:23 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[Firefox extensions]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Reviews/tests]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web browsers]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1567</guid>
		<description><![CDATA[I put a lot of time into ensuring web interface code quality, both for code in projects I work in and in doing code audits for other web sites. One of the best ways to find undesired inline styles, inline JavaScript events and javascript: links, I believe, is my Inline Code Finder extension and now [...]]]></description>
			<content:encoded><![CDATA[<p>I put a lot of time into ensuring web interface code quality, both for code in projects I work in and in doing code audits for other web sites. One of the best ways to find undesired inline styles, inline JavaScript events and <code>javascript:</code> links, I believe, is my <a href="http://robertnyman.com/inline-code-finder/">Inline Code Finder extension</a> and now it&#8217;s available for Google Chrome as well!</p>
<h2>What it does</h2>
<p><img src="http://www.robertnyman.com/images/inline-code-finder/stand-alone-google.png" alt="A picture of Inline Code Finder having been run on google.com, displaying inline styling, inline JavaScript events and javascript: links" class="align-center"></p>
<p>Inline Code Finder traverses through all elements in a web page, and if it finds a HTML element with any of these, it will highlight them:</p>
<ul>
<li>Inline JavaScript events</li>
<li>Inline style</li>
<li><code>javascript:</code> links</li>
</ul>
<p>The idea is to help separating content (HTML) from presentation (CSS) and interaction (JavaScript), and also for performance, to make sure HTML pages are as lightweight as possible to load while all styling and JavaScript code should be kept in separate files so they can be cached and reused.</p>
<p>I strongly encourage you use it to improve your interface code: <a href="https://chrome.google.com/extensions/detail/lfllandeffkmadbndfckhdbkekdfahom">Download Inline Code Finder for Google Chrome.</a></p>
<p>NOTE: To be able to install extensions, on Windows/Linux you need to have <a href="http://www.google.com/landing/chrome/beta/">Google Chrome for Windows/Linux from the beta channel</a>. For Mac users, you need to <a href="http://www.chromium.org/getting-involved/dev-channel#TOC-Mac">install Google Chrome from the Dev channel for Mac</a>. Unfortunately, though, at the time of this writing, extensions are turned off in the Mac version, but instead you can use <a href="http://build.chromium.org/buildbot/snapshots/chromium-rel-mac/?C=M;O=D">Chromium for Mac</a> (the base for Google Chrome) to use it (I have heard they will soon be enabled in Google Chrome for Mac as well).</p>
<h2>What it&#8217;s like writing an extension for Google Chrome</h2>
<p>Coming from a background of having written a number of extensions for Firefox and Firebug, I was eager to offer my functionality in another web browser, and also evaluate the developer experience of the Google Chrome extension model. I have to say that, so far, it has been extremely pleasant writing an extension for Google Chrome! It seems like they have carefully studied in what areas Firefox have succeeded, and also its problem areas, and just made sure that extension development goes as smooth as possible.</p>
<p>It literally just takes a few minutes to get your first extension loaded into Google Chrome, and from there on, there&#8217;s a <a href="http://code.google.com/chrome/extensions/">good documentation</a> for achieving most things you would probably want to do when developing an extension. For instance, one thing&#8217;s that&#8217;s quite cool is using the HTML5 <code>localStorage</code> for storing options for your extension.</p>
<p>To share your extension with the world, or just find other extensions you might be interested in, Google have launched the <a href="https://chrome.google.com/extensions">Google Chrome Extensions gallery</a>. What&#8217;s quite nice here is that as a developer, unless you try to access you try to access the user&#8217;s files on disk or use certain APIs in your extension, there&#8217;s no review process! This means that I can deploy, and update, my extension at any time I want to and it will be live immediately! People who have gotten used to waiting with the review processes of Apple&#8217;s App store or <a href="https://addons.mozilla.org/">Mozilla&#8217;s add-ons</a> will absolutely love this!</p>
<p>I for one just hope that they can manage to keep it this way, but at the same time, I&#8217;m a bit wary that it will maybe only be like this until Google Chrome will suffer from some serious exploit, and then they will have reviewing queues just like anyone else. Only the future can tell, I guess.</p>
<p>Both with developing extensions, and getting rid of the review process for most extension types, I think Google have gotten many many things right. I sure hope the work with <a href="https://jetpack.mozillalabs.com/">Jetpack for Mozilla</a>, which is planned in practice be the future extension model of Firefox, will achieve similar results &#8211; so far it looks very promising with existing and upcoming API support, and jQuery being included by default in Jetpack.</p>
<p>The dream, which will most likely only remain a dream for some time, would naturally be to have identical extension models for as many web browsers as possible, so any developer can offer their extensions to everyone, no matter the web browser.</p>
<p>For now, though, I&#8217;m quite happy with the extension development process for Google Chrome, and I hope to release more extensions for it soon. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=Yqif-r0I2Do:XR9Uk-UEez8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=Yqif-r0I2Do:XR9Uk-UEez8:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=Yqif-r0I2Do:XR9Uk-UEez8:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=Yqif-r0I2Do:XR9Uk-UEez8:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2009/12/18/releasing-inline-code-finder-as-a-google-chrome-extension/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2009/12/18/releasing-inline-code-finder-as-a-google-chrome-extension/</feedburner:origLink></item>
		<item>
		<title>Testing Object-Oriented CSS (OOCSS) for easier CSS development</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/Iblk2NhYfV0/</link>
		<comments>http://robertnyman.com/2009/12/17/testing-object-oriented-css-oocss-for-easier-css-development/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 10:41:08 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Developing]]></category>
		<category><![CDATA[Reviews/tests]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1564</guid>
		<description><![CDATA[Let&#8217;s face it: developing CSS that should work across various web browsers and platforms is hard, and could prove to be quite a challenge. This is where Object-Oriented CSS (OOCSS) steps in.
What it is
OOCSS is being developed by Nicole Sullivan, with a background at Yahoo!, who now consults for Facebook. The objective is to make [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s face it: developing CSS that should work across various web browsers and platforms is hard, and could prove to be quite a challenge. This is where <a href="http://wiki.github.com/stubbornella/oocss">Object-Oriented CSS (OOCSS)</a> steps in.</p>
<h2>What it is</h2>
<p>OOCSS is being developed by <a href="http://www.stubbornella.org/content/">Nicole Sullivan</a>, with a background at Yahoo!, who now consults for Facebook. The objective is to make CSS development as stable, modular and, very importantly, <em>predictable</em> as possible.</p>
<p>There are a number of different modules, where the most important parts are good CSS resetting (taken from Yahoo!), template and grid handling. However, there are also parts for tabs, talk bubbles, content media etc. The best way to see it in action is to go to the <a href="http://wiki.github.com/stubbornella/oocss">OOCSS page at GitHub</a> to watch and download the examples.</p>
<h2>What I like</h2>
<p>I have been working with the base files for my current project, to evaluate it and also make things easier for me. Having a good framework for your basic CSS is vital in any web site you will ever build. You will get a consistent result, and instead of building the same things over and over, you can put your time and effort into what will make that specific web site into the best possible.</p>
<p>OOCSS is extremely easy to use, has overall worked flawlessly, and extending the good base is very simple. I also like it being very light-weight (my combination of resetting, template &amp; grids weighs in just under 5 kb), which means my own web site-specific CSS becomes much easier to write, and it becomes much smaller because of not having to write redundant CSS.</p>
<h2>What I don&#8217;t like</h2>
<p>As you might be aware of, using good semantics is very important to me, and when it comes to both elements being used as well as the naming of CSS classes, I believe it should contain a meaning for what it will contain. OOCSS contains class names like <code>.leftCol</code>, <code>.rightCol</code>, <code>.body</code>, <code>.h1</code>, <code>.h2</code> etc. And to me, and what I believe is to be in line with the notion of the semantic web, is that one of the fundamentals with CSS class names is to <em>not</em> use class names which describes the actual presentation/layout, but rather what it will contain.</p>
<p>And fair enough, I think one of the choices behind this was to make it easy to beginners, but still, when you end up with code like <code>&lt;h1 class="h2"&gt;</code>, that&#8217;s just wrong to me. No class name should ever be named after an actual element name if you ask me (especially not the name of another element).</p>
<p>I got to meet Nicole at <a href="http://jsconf.eu/2009/">JSConf.eu</a>, and naturally had to ask her about her choices for class names. She said that she thought it was ok to also use &#8220;visual semantics&#8221;, i.e. class names that would describe how it would actually be presented. Trying to be open and understandable, I could somewhat see where she was coming from with this.</p>
<p>But, I suggested using other names that would have more meaning <em>and</em> be easy to understand at the same time, like <code>.main-heading</code>, <code>.complementary</code> etc. The reply I got was that she had tried it, but &#8220;It was too hard for people to remember it&#8221;. And that I&#8217;m mot just buying. Sure, <code>.rightCol</code> might be a tad easier to remember, but just going the easiest route time doesn&#8217;t always make it right.</p>
<p>So, in my files, I use class names that convey actual meaning.</p>
<h2>Conclusion</h2>
<p>Despite my little rant on class names (which you can easily change to whatever you want), OOCSS is quite exciting, and so far I have experienced good results with, and the possibility for me to focus on more important things! I definitely recommend you try it out, and give Nicole any input or feedback you might have.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=Iblk2NhYfV0:rVKlAigG6N0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=Iblk2NhYfV0:rVKlAigG6N0:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=Iblk2NhYfV0:rVKlAigG6N0:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=Iblk2NhYfV0:rVKlAigG6N0:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2009/12/17/testing-object-oriented-css-oocss-for-easier-css-development/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2009/12/17/testing-object-oriented-css-oocss-for-easier-css-development/</feedburner:origLink></item>
		<item>
		<title>Content Management Systems are a dying breed</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/dZGkEGwSNLE/</link>
		<comments>http://robertnyman.com/2009/12/14/content-management-systems-are-a-dying-breed/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 10:19:21 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1561</guid>
		<description><![CDATA[Based on my experience and thoughts over the years, and feedback from a number of very smart and talented people, I believe that Content Management Systems (CMS) are far from the promised savior, but rather the bane of web sites.
Background
Back at the end of the 1990s, people wanted to start controlling content creation on the [...]]]></description>
			<content:encoded><![CDATA[<p>Based on my experience and thoughts over the years, and feedback from a number of very smart and talented people, I believe that Content Management Systems (CMS) are far from the promised savior, but rather the bane of web sites.</p>
<h2>Background</h2>
<p>Back at the end of the 1990s, people wanted to start controlling content creation on the web. They were offered all kinds of hacks, and to be gentle, let&#8217;s just say they were &#8220;a bit varying in their quality&#8221;. Most of the time, there were no support or documentation (since developers just want to code, right?).</p>
<p>To fix this situation and bring some stability to the market, a number of CMSs were developed, and to this day, they keep on popping up around every corner &#8211; I bet of majority of the developers out there has, at one time or another in their career, worked on building their own CMS. The initial idea with them are good, trying to collect knowledge and experience, but all of them, without exception, fail sooner or later in some aspect.</p>
<h2>&#8220;One size fits all&#8221;</h2>
<p>The problem with any CMS is that it tries to accommodate to as many needs as it can, both from a developer, business and editor perspective. This also goes for a market filled with a vast array of different ideas, hopes and desires. Basically, common sense tells us that the result, at the very best, will only become decent.</p>
<p>Virtually any web site that is sold as CMS-controlled is easily set up and installed, and then months, or even years, are spent &#8220;configuring&#8221; it &#8211; and by configuring, I mean patching, fixing, mending and hacking it to remotely meet the usage wanted by the customer.</p>
<p>What I rather suggest is that it is our responsibility as professionals to not just throw a CMS at our customers, and then have editors and developers alike being miserable, but rather to <em>listen to our customers&#8217; actual needs</em> and then custom build what will be best for them. It is also inline with working in an agile manner, developing what should be there, instead of wasting money and time on a CMS filled to the brim with bulky features that most people don&#8217;t need nor want.</p>
<h2>&#8220;Don&#8217;t reinvent the wheel&#8221;</h2>
<p>&#8220;No, no, don&#8217;t reinvent the wheel, don&#8217;t brings us back to the wild west-mentality of before!&#8221; I hear you cry out. That is very far from what I am suggesting. Instead, I think the scale of developers&#8217; choices look something like this:</p>
<ul>
<li>A poor developer uses only one CMS, and recommends it over and over, no matter what the customers ask for.</li>
<li>A decent developer knows about the options, and chooses a CMS he/she thinks will be the best (rather, bring the least amount of implementation and maintenance pain to everyone).</li>
<li>A good developer doesn&#8217;t choose a CMS, but rather cherry-picks the best components out there and binds them together in an optimal result, custom-tailored for their customer.</li>
</ul>
<p>What I mean with components are specific things, that could be found as parts of an existing CMS, but function stand-alone as well. We&#8217;re talking WYSIWYG editors, data saving, friendly URLs, tree controls etc etc. What you will get from this is choosing the best tool for the job, <em>for each specific part</em>. You can scour the market until you find exactly what you need, and if you do a responsible choice, you can find the best for a certain task not only out of code and maintenance perspective, but also in regards to community involvement, support, proper documentation and a huge number of other people working with the same thing.</p>
<p>Your part will be more like a conductor directing an orchestra, binding all small and independent things into the best and optimal end result. Naturally, and this is very important, apart from delivering this to the customer, you should also offer support for your part in this, tying all this together in a beautiful architecture.</p>
<p>It will also give the customer the option to, in the long run, just change or upgrade the components they wish to change, instead of the enormous undertaking of upgrading an entire CMS. Think one part out of all isn&#8217;t optimal? Just get a new one, while doing it in a very cost-effective manner!</p>
<h2>They will be around</h2>
<p>CMSs will, no doubt, be around for quite some time. But my belief is that instead of focusing on products, it&#8217;s vital both for our customers and the climate of the web, that we start taking some pride in building the best possible things we can, instead of just having our hands tied behind our backs by a CMS.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=dZGkEGwSNLE:Za2YL3B0Yyk:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=dZGkEGwSNLE:Za2YL3B0Yyk:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=dZGkEGwSNLE:Za2YL3B0Yyk:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=dZGkEGwSNLE:Za2YL3B0Yyk:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2009/12/14/content-management-systems-are-a-dying-breed/feed/</wfw:commentRss>
		<slash:comments>40</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2009/12/14/content-management-systems-are-a-dying-breed/</feedburner:origLink></item>
		<item>
		<title>The death of a friend</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/VgTX1LeNLSM/</link>
		<comments>http://robertnyman.com/2009/12/08/the-death-of-a-friend/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 20:19:38 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Personal/life]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1558</guid>
		<description><![CDATA[Tonight a friend of mine and my family passed away.
When I was growing up and throughout my entire life, he was around as a friend of my parents. Anyone close to your parents, in time, naturally becomes a friend of yours as well, and I have quite a number of memories of him throughout varying [...]]]></description>
			<content:encoded><![CDATA[<p>Tonight a friend of mine and my family passed away.</p>
<p>When I was growing up and throughout my entire life, he was around as a friend of my parents. Anyone close to your parents, in time, naturally becomes a friend of yours as well, and I have quite a number of memories of him throughout varying times in my life.</p>
<p>Some time ago, not long, he got cancer. A couple of weeks ago, I visited him at the hospital because I wanted to see him, support him, do anything I could to make him feel a little better, if just for a short moment. But I couldn&#8217;t really pull it through. I just sat there crying, tried to collect myself, said a few words again, and again the tears welled up.</p>
<p>He fell asleep on and off during my visit, and I remember one of those times when I looked out his window, through the rain. Just across the street was the delivery unit, where a few years ago we had went, first for the birth of our first daughter, and then for the birth of our second. And knowing that while life was being created, becoming real, all the time just across the street, while someone else in the very room I was standing was close to his last moments in life, felt too heavy, too much of an inevitable destiny that I could bear. Again, I cried.</p>
<p>Tonight he passed away. At least I got to say my good-bye at that time in the hospital, in my own way.</p>
<p>If there&#8217;s anything he ever taught me, it was in his behavior. He was always, always, always happy and incredibly helpful to anyone. Not selfish one bit, but just aiming to make everyone else feel good. </p>
<p>Seeing the wonderful examples he set, and to honor him, I must change my ways, be more friendly to other people, try to understand them and where they are coming from. I sincerely have to genuinely start appreciating the wonderful gift of life.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=VgTX1LeNLSM:v7c6dTYOQkA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=VgTX1LeNLSM:v7c6dTYOQkA:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=VgTX1LeNLSM:v7c6dTYOQkA:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=VgTX1LeNLSM:v7c6dTYOQkA:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2009/12/08/the-death-of-a-friend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2009/12/08/the-death-of-a-friend/</feedburner:origLink></item>
		<item>
		<title>My trip to Lisbon, Portugal, and the Codebits conference</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/Iy04Dk5Atgo/</link>
		<comments>http://robertnyman.com/2009/12/08/my-trip-to-lisbon-portugal-and-the-codebits-conference/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 23:25:08 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Speaking]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1556</guid>
		<description><![CDATA[I had the pleasure of spending last week in Lisbon, Portugal, for the Codebits conference.
Arriving in Lisbon
It was my first time in Portugal, so I made sure to arrive one day early to have time to do some sightseeing and catch a view of Lisbon. Last Tuesday, December 1st, I arrived in Lisbon after a [...]]]></description>
			<content:encoded><![CDATA[<p>I had the pleasure of spending last week in Lisbon, Portugal, for the <a href="http://codebits.eu/">Codebits</a> conference.</p>
<h2>Arriving in Lisbon</h2>
<p>It was my first time in Portugal, so I made sure to arrive one day early to have time to do some sightseeing and catch a view of Lisbon. Last Tuesday, December 1st, I arrived in Lisbon after a four and a half hour flight with TAP Portugal from Stockholm. First time ever, I had a complementary pick-up service by the event organizers, and a nice driver by the name of Gonsalo.</p>
<p>Got to the hotel, Hotel Vila Galé Opera, checked in, and got online to check in with some people and do some minor research before my Lisbon touring. Got out to find a grocery store, but with my luck, it had closed three minutes before I got there&#8230;</p>
<p>Got back to the hotel again, and treated myself to a nice two-meal dinner in their restaurant. And granted, I was famished by then, but I thought the food was extremely good &#8211; especially my starter with Chèvre cheese. Got back to my room, checked some things and then got to bed reasonably early.</p>
<h2>Lisbon sightseeing</h2>
<p>I got up pretty early, ate breakfast and started my excursion. There was a light drizzle and a gale blowing outside, but I had high hopes when I started my walk from the Ponte 25 de Abril bridge and moved further into the Belém area. After about half an hour, the rain just started pouring down. Luckily, there was a ticket station for ferries where I could take cover and wait it out.</p>
<p><a href="http://www.flickr.com/photos/robertnyman/4166670172/" title="Padrão dos Descobrimentos by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2696/4166670172_c60dfd9d03.jpg" width="500" height="333" alt="Padrão dos Descobrimentos" class="align-center"></a></p>
<p>After the rain had stopped, I continued my journey and came upon the Padrão dos Descobrimentos, a monument to celebrate the Portuguese explorers. After that I crossed the street and decided to enter the Mosteiro dos Jerónimos, which is a totally beautiful monastery and a cloister &#8211; I&#8217;ve seen many churches and monasteries during my travels, but I have to say I really loved the colors, ambience and overall feel of this place!</p>
<p><a href="http://www.flickr.com/photos/robertnyman/4166682926/" title="Mosteiro dos Jerónimos by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2781/4166682926_985545604b.jpg" width="500" height="333" alt="Mosteiro dos Jerónimos" class="align-center"></a></p>
<p>The next stop was the probably most famous landmark in Lisbon, Torre de Belém, which was built as a gateway and defensive tower, located at the entrance of the Tagus river. Quite an impressive building, with some very narrow pathways in places. It was also possible to walk the five floors to the top, to get a beautiful view of Lisbon.</p>
<p><a href="http://www.flickr.com/photos/robertnyman/4165964045/" title="Torre de Belém by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2606/4165964045_6179d08ba1.jpg" width="500" height="333" alt="Torre de Belém" class="align-center"></a></p>
<p>Kept on wandering around in the area for a while, and then got to the Belém train station to take the train to the downtown area and the Cais do Sodré station. Once there, I looked at some places, like Praça do Comércio, before walking through Arco de Rua Augusta and getting some late lunch. Strolled around in the city and walked up to, and around, Praça do Rossio.</p>
<p>Then it was time for some serious uphill hiking to get to Castelo de São Jorge. However, it was well worth it, with lots of nice places to see, a huge great preserved castle and a fantastic view of Lisbon!</p>
<p><a href="http://www.flickr.com/photos/robertnyman/4166789374/" title="Castelo de São Jorge by Robert Nyman, on Flickr"><img src="http://farm5.static.flickr.com/4040/4166789374_1e598b7bf0.jpg" width="500" height="333" alt="Castelo de São Jorge" class="align-center"></a></p>
<p>After an hour up there, I got down again, across where I had been before and on into the Bairro Alto area, old town of Lisbon. Did a little sightseeing there until I, completely tired, sat down in a café where I had an ice-cream and some water. Through the magic of text messaging, I managed to decide a meet-up place with some friends at the Praça Luís de Camões.</p>
<p>Once there, under the neon heart, I met up with the Dutch crew: <a href="http://twitter.com/mikedeboer">Mike de Boer</a>, <a href="http://twitter.com/liekejav">Lieke Arends</a>, <a href="http://twitter.com/javruben">Ruben Daniels</a> and <a href="http://twitter.com/rikarends">Rik Arends</a>. I had the pleasure of meeting Mike and Lieke in Brighton for Full Frontal, and now two more from <a href="http://www.javeline.com/#home">Javeline</a>, the company behind <a href="http://www.ajax.org/">Ajax.org</a>.</p>
<p><a href="http://www.flickr.com/photos/robertnyman/4166830286/" title="Praça Luís de Camões by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2593/4166830286_2a9c40b39b.jpg" width="500" height="333" alt="Praça Luís de Camões" class="align-center"></a></p>
<p>We wandered around a little, and had the luck of coming by the gorgeous Largo do Carmo and Convento do Carmo. Just a little after that, we found a nice restaurant had a good meal with two meals, and my Dutch friends were nice enough to treat me to it. Bedankt! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://www.flickr.com/photos/robertnyman/4166831946/" title="Largo do Carmo by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2799/4166831946_7c363ce9b4.jpg" width="500" height="333" alt="Largo do Carmo" class="align-center"></a></p>
<p>Some more serious texting going on, back to Praça Luís de Camões and to meet <a href="http://remysharp.com/">Remy Sharp</a> and <a href="http://www.glennjones.net/">Glenn Jones</a>, who had gotten in to Lisbon a few hours earlier. We did a desperate attempt to find a bar that one person (no names) in our company had vague memories about, but it ended up with us just walking further and further away from anything remotely close to a bar. In the end, we took a couple of taxis back to the hotel, and sat down in the hotel bar instead.</p>
<p><a href="http://www.flickr.com/photos/robertnyman/sets/72157622954165016/">All of my sightseeing pictures of Lisbon.</a></p>
<h2>Codebits conference, day 1</h2>
<p>I decided to sleep in a little, then got up so I was at the venue at around 10.30 or so. Once there, I registered and got a lot of nice giveaways, and then met up with Remy, Glenn and <a href="http://twitter.com/briansuda">Brian Suda</a>.</p>
<p>During all day, free pizza, coke (the drink), M&amp;Ms and other assorted candy and drinks was on offer &#8211; basically, all the nutrition a geek needs. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h3>Presentations I attended</h3>
<p><a href="http://www.flickr.com/photos/27388320@N04/4158080614/"><img src="http://farm3.static.flickr.com/2643/4158080614_5924784ce4.jpg" alt="A picture of me giving my presentation" class="align-center"></a></p>
<p class="text-align-center"><a href="http://www.flickr.com/photos/27388320@N04/4158080614/"><i>Picture taken by AmmggMartins</i></a></p>
<dl>
<dt>Keynote</dt>
<dd>We decided to catch the keynote, but unfortunately, it was held in Portuguese. Or, well, thinking so, we left after about ten minutes. Then we saw on the web site that all presentations would be broadcasted live on the web site, and when I got in there, we got to see that they were speaking English by then&#8230;</dd>
<dt><a href="http://codebits.eu/intra/s/session/82">Think before you develop!</a> &#8211; Kai Seidler</dt>
<dd>Kai, working for Sun and behind XAMPP, amongst other things, gave a nice introduction to different languages and approaches, and their respective problems and benefits. He virtually used a slide for each sentence, and later told me he had over 400 slides. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </dd>
<dt><a href="http://codebits.eu/intra/s/session/60">HTML5 JavaScript APIs (+video of the talk!)</a> &#8211; Remy Sharp</dt>
<dd>I saw Remy do a talk very similar talk to this at JSConf.eu in Berlin earlier this year, but I have to say this version/performance was in my opinion better. Remy seemed more calm and in harmony with the material and it is a good API walk-through for JavaScripters.</dd>
<dt><a href="http://codebits.eu/intra/s/session/57">Optional is required (+video of the talk!)</a> &#8211; Brian Suda</dt>
<dd>I envy Brian, and that is because his talks seemed to be just leaps between things that amused him, complemented by beautiful slides. It was quite entertaining, and I was a bit worried to go on after him.</dd>
<dt><a href="http://codebits.eu/intra/s/session/87">JavaScript: From Birth to Closure (+video of the talk!)</a> &#8211; Robert Nyman</dt>
<dd>My talk. Once I got started, I felt relaxed, and it seemed to go down well with the audience &#8211; feels especially good when people seem to get my sense of humor. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  My <a href="http://www.slideshare.net/robnyman/javascript-from-birth-to-closure">slides are available at SlideShare</a>.</dd>
<dt><a href="http://codebits.eu/intra/s/session/75">Working with Canvas</a> &#8211; Diogo Antunes</dt>
<dd>After a talk, it is a lot about winding down, dealing with feedback etc. Nevertheless, I wanted to catch Diogo&#8217;s presentation, both for the content and that it would be his first presentation in English. I&#8217;m quite proud for him being brave enough to take that step, and when it comes to the content, I believe it was a good introduction to what you can do with canvas.</dd>
<dt><a href="http://codebits.eu/intra/s/session/98">Pond &#8211; The social network aggregator and publisher</a> &#8211; Pedro Couto e Santos and Gustavo Carvalho</dt>
<dd>Didn&#8217;t see this entire presentation, and listened with just one ear doing other stuff, but Pond seems to be an interesting aggregator of content from different web sites/services, and also offer it to all kinds of mobile phones.</dd>
</dl>
<p><a href="http://www.flickr.com/photos/robertnyman/4166695234/" title="Codebits conference by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2793/4166695234_017d095a84.jpg" width="500" height="333" alt="Codebits conference" class="align-center"></a></p>
<h3>Speakers&#8217; dinner</h3>
<p>At around 20.00 in the evening, all speakers were invited to a joint dinner, and we all went on a chartered bus to an, I think, Italian restaurant at the far end of the city. I can&#8217;t actually remember if there were a starter (at least we had bread with olives on the side), but we got some good Sangria and then a main course with meat and rice, followed by a nice desert. Got some nice chats with Glenn, Ruben, Remy and Brian Suda.</p>
<p><a href="http://www.flickr.com/photos/robertnyman/4165917995/" title="André Luís &amp; Brian Suda - Speakers' dinner - Codebits conference by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2782/4165917995_f0a9ea7de4.jpg" width="500" height="333" alt="André Luís &amp; Brian Suda - Speakers' dinner - Codebits conference" class="align-center"></a></p>
<p>It was also here that I finally got to talk a little to <a href="http://andr3.net/">André Luís</a>. André and I first got in touch back in 2006, so it was really great to finally get the chance to meet in real life! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>After dinner, we spent some short time at the venue (read: free WiFi to check some things), and then got back to the hotel to get some sleep at about midnight. So far, not really any late evening. Good for being rested, but unusual for a conference.</p>
<h2>Codebits conference, day 2</h2>
<p>Got up fairly early because I wanted to catch the first presentation of the day: Rik of Ajax.org.</p>
<h3>Presentations I attended</h3>
<dl>
<dt><a href="http://codebits.eu/intra/s/session/86">Beholding the giant pyramid of application development; why Ajax applications are its natural top layer (+video of the talk!)</a> &#8211; Rik Arends</dt>
<dd>The first half of Rik&#8217;s talk was more philosophical/theoretical and dealed with the background of development and different layers. Personally, I preferred the second half, since then he started to show code and demos of some cool things they have been working on with Ajax.org.</dd>
<dt><a href="http://codebits.eu/intra/s/session/79">Re-using social media data</a> &#8211; Glenn Jones</dt>
<dd>Got to Glenn&#8217;s talk a little late, but it was quite interesting in the sense about reusing already existing data about people on the web. His <a href="http://identengine.com/">Ident Engine</a> seems quite cool!</dd>
<dt><a href="http://codebits.eu/intra/s/session/71">PhoneGap: Mobile App Developer Zero to Hero (+video of the talk!)</a> &#8211; Brian LeRoux</dt>
<dd>Poor Brian was jetlagged out of his mind, so he missed his actual slot. No worries, it got postponed, and once he gave it, it was an interesting view into the state of development for mobile phones, and also about what <a href="http://phonegap.com/">PhoneGap</a> can offer in that area.</dd>
</dl>
<p>Between Glenn&#8217;s and Brian LeRoux&#8217;s talk, the extremely friendly <a href="http://twitter.com/dicode">Diogo Antunes</a> took me in his car across the Ponte 25 de Abril bridge so I would get the chance to see the Monumento ao Cristo Rei and get a good view of the city from across the river. The monument was quite high, and we took an elevator up to the foot of the actual statue, where the vista in all directions was quite nice!</p>
<p><a href="http://www.flickr.com/photos/robertnyman/4166083907/" title="View from Monumento ao Cristo Rei by Robert Nyman, on Flickr"><img src="http://farm5.static.flickr.com/4002/4166083907_f64a691c3d.jpg" width="500" height="333" alt="View from Monumento ao Cristo Rei" class="align-center"></a></p>
<p>I also took the time to watch the cool 3D printer in action, which were sometimes printing in plastic, sometimes in chocolate. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://www.flickr.com/photos/robertnyman/sets/72157622829666275/">All of my pictures of the Codebits conference</a>.</p>
<h3>Dinner &amp; party</h3>
<p>In the evening, a few of us decided to go out and get some dinner before the night&#8217;s events. It ended up with me, <a href="http://westcoastlogic.com/">Brian Leroux</a>, Glenn and Remy having a couple of beers and some burgers and fries at a café situated just by the river. It was really a pleasant dinner, with both some interesting and sometimes appalling conversations. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://www.flickr.com/photos/robertnyman/4165939445/" title="Brian Leroux, Remy Sharp &amp; Glenn Jones - Codebits conference by Robert Nyman, on Flickr"><img src="http://farm3.static.flickr.com/2546/4165939445_714da94434.jpg" width="500" height="333" alt="Brian Leroux, Remy Sharp &amp; Glenn Jones - Codebits conference" class="align-center"></a></p>
<p>We then got back to the venue to see a few songs of the band playing, Pornophonique, before we headed downtown. First it was us in the dinner-company + <a href="http://oswaldism.de/">Kai Sedler</a>, and we found a great pub in the Bairro Alto area. You&#8217;d buy your drink within the pub and then stand in a narrow street drinking it, and the street was totally packed (and yet, got even more crowded as the night went along).</p>
<p>Again, some texting, and we were joined by Mike de Boer, Ruben, Lieke and Rik, to form quite a big group of people hanging out and chatting. The interesting part, though, was that cars insisted on driving down this road, and it was almost impossible for them to come past all the people standing there drinking. At first, we thought it was due to some general GPS error/misinformation, but when a number of taxis came down that way too, it seemed like it would have to be the best option for them out of a number must-be poor ones.</p>
<p>Let me just tell you, when a garbage truck decided to drive down that street as well, chaos almost broke out&#8230;</p>
<p>At about two in the morning, I felt I <em>really</em> had to get back to the hotel to get a few hours of sleep before going home. Got back to the hotel room, packed, and slept maybe three hours, before I got up at six in the morning to go to the airport.</p>
<p>My driver, Antonio (I think), was really a nice guy and given the time of day, he was quite chatty. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  We had some interesting conversations and discussed values, before I arrived at the airport.</p>
<p>After such a great time in Lisbon with lots of nice people, it was a bit disheartening to see the Lisbon airport in action. <em>Everything</em> had a long line and seemed to go extremely slow: check-in, baggage drop, security, just buying something in <em>any</em> store&#8230; Anyway, since my plane was a bit late, I got enough time to endure the queueing and bought some gifts for my family.</p>
<p>Got some random sleep on the plane, and then finally I was home again.</p>
<p>Till next time Lisbon: thanks for a great conference!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=Iy04Dk5Atgo:etmZn0OqlVs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=Iy04Dk5Atgo:etmZn0OqlVs:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=Iy04Dk5Atgo:etmZn0OqlVs:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=Iy04Dk5Atgo:etmZn0OqlVs:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2009/12/08/my-trip-to-lisbon-portugal-and-the-codebits-conference/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2009/12/08/my-trip-to-lisbon-portugal-and-the-codebits-conference/</feedburner:origLink></item>
		<item>
		<title>Speaking at Codebits in Lisbon, Portugal</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/8uEHSQJ4VMg/</link>
		<comments>http://robertnyman.com/2009/11/30/speaking-at-codebits-in-lisbon-portugal/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 10:18:15 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Speaking]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1554</guid>
		<description><![CDATA[Next stop on my little European tour is Codebits in Lisbon, Portugal!
I will be speaking at the conference, giving my presentation JavaScript &#8211; From Birth to Closure. It seems like it&#8217;s going to be quite an exciting conference!
Tomorrow I will get on the plane there, and it is also my first time in Portugal and [...]]]></description>
			<content:encoded><![CDATA[<p>Next stop on my little European tour is <a href="http://codebits.eu/">Codebits</a> in Lisbon, Portugal!</p>
<p>I will be speaking at the conference, giving my presentation JavaScript &#8211; From Birth to Closure. It seems like it&#8217;s going to be quite an exciting conference!</p>
<p>Tomorrow I will get on the plane there, and it is also my first time in Portugal and Lisbon, so if anyone have any advice to what to see, it would be appreciated! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=8uEHSQJ4VMg:Uh1oeQ-OPfk:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=8uEHSQJ4VMg:Uh1oeQ-OPfk:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=8uEHSQJ4VMg:Uh1oeQ-OPfk:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=8uEHSQJ4VMg:Uh1oeQ-OPfk:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2009/11/30/speaking-at-codebits-in-lisbon-portugal/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2009/11/30/speaking-at-codebits-in-lisbon-portugal/</feedburner:origLink></item>
		<item>
		<title>The HTML5 syntax options problem</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/DZIvoUsUykI/</link>
		<comments>http://robertnyman.com/2009/11/27/the-html5-syntax-options-problem/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 10:27:25 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[HTML5/HTML/XHTML]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1550</guid>
		<description><![CDATA[Usually blog posts with the words &#8220;problem, &#8220;considered harmful&#8221; and similar are just crying foul, but I would like to bring up something I actually believe is/will become a real problem: HTML5 syntax options.
Available syntax options
In strict XHTML, we needed lowercase tag names, quoting our attributes, and an attribute had to have a value (e.g. [...]]]></description>
			<content:encoded><![CDATA[<p>Usually blog posts with the words &#8220;problem, &#8220;considered harmful&#8221; and similar are just crying foul, but I would like to bring up something I actually believe is/will become a real problem: HTML5 syntax options.</p>
<h2>Available syntax options</h2>
<p>In strict XHTML, we needed lowercase tag names, quoting our attributes, and an attribute had to have a value (e.g. <code>selected="selected"</code>). We also needed to close all empty elements, e.g. <code>meta</code>, <code>input</code>, <code>img</code> etc, like this: <code>&lt;input type="text" /&gt;</code>.</p>
<p>But in HTML5, all this goes:</p>
<ul>
<li>Uppercase tag names</li>
<li>Quotes are optional for attributes</li>
<li>Attribute values are optional</li>
<li>Closing empty elements are optional</li>
</ul>
<p>All of these examples are valid HTML5:</p>
<pre class="brush: html">&lt;DIV&gt;Hello Friday&lt;/DIV&gt;
&lt;p id=abstract&gt;Welcome to this blog post!&lt;/p&gt;	

&lt;input type=text&gt;
&lt;input type="text"&gt;
&lt;input type="text" /&gt;</pre>
<p>Also, some people are under the impression that the closing of elements etc (basically, XML-formatting rules), only apply if you serve a web page as <code>application/xhtml+xml</code> or <code>application/xml</code>. <em>This is not true!</em>. XML-style syntax is just as allowed in regular <code>text/html</code>, and some people prefer that syntax.</p>
<h2>The choice of the syntax</h2>
<p>I believe the <a href="http://www.whatwg.org/">WHATWG</a> did the probably only viable choice, and decided to allow all the general syntax variations. When it comes to XML syntax or not, if they had chosen just one path, it would severely hinder the adoption amongst those who wouldn&#8217;t agree with it. When it comes to allowing uppercase tag names, no quoting of attributes etc, I believe it&#8217;s there to accommodate to code generated by CMSs and other tools.</p>
<p>And, at the end of the day, web browsers will generate the same DOM no matter what syntax one prefers.</p>
<h2>The problem</h2>
<p>As you can see with all these options, though, it is very hard to ensure that a consistent syntax is used for all HTML code, and we miss out on rigor and code quality. Basically, it is very hard to make something fail validation under these rules; we end up with an &#8220;Anything goes&#8221;-scenario. And after all these years of fighting for stricter syntax, better code practices etc, this is naturally not a good evolvement.</p>
<h2>How do we get stricter syntax?</h2>
<p>There are a few options to try and accommodate to this problem:</p>
<dl>
<dt>Change the spec</dt>
<dd>We could change the specification to say that XML-syntax is only allowed for <code>application/xhtml+xml</code>, and HTML-syntax, strict-style, otherwise. However, as mentioned above, I believe in people choosing the syntax type they prefer.</dd>
<dt>Evangelism</dt>
<dd>We could all try to evangelize a better syntax, just as we have done all these years. However, I believe this will never be enough: people will evangelize for different syntaxes, and whatever web developers choose in the end will validate (even a mix of syntaxes will).</dd>
<dt>Offering tools with different validation options</dt>
<dd>There could be an offering of tools, and the validator itself, to have options for a stricter syntax. Therefore, rather helping developers by code auditing, than forbidding things through a specification.</dd>
</dl>
<p>I believe the last option here is the only realistic one we could choose. Also, let me point out that I do <em>not</em> put an equal sign between a strict validation option and XML-syntax. For some it is, but for others it&#8217;s not. Stricter for me personally means good HTML 4-style: lowercase tag names, quotes and values mandatory for attributes and closing of all non-empty elements (i.e. all elements that have en end tag). Maybe there should be more than one option in the validator.</p>
<p>But is this enough? Can we continue to fight for sensible and best practices syntax where tools/validator options are sufficient? Or, have just (re)opened Pandora&#8217;s Box for the web?</p>
<h4>Related reading</h4>
<p><a href="http://robertnyman.com/2009/10/14/an-introduction-to-html5/">An Introduction to HTML5</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=DZIvoUsUykI:7hjBOORQnq8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=DZIvoUsUykI:7hjBOORQnq8:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=DZIvoUsUykI:7hjBOORQnq8:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=DZIvoUsUykI:7hjBOORQnq8:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2009/11/27/the-html5-syntax-options-problem/feed/</wfw:commentRss>
		<slash:comments>52</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2009/11/27/the-html5-syntax-options-problem/</feedburner:origLink></item>
		<item>
		<title>My Full Frontal ‘09 escapades  – The JavaScript conference</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/scpZtemzPpA/</link>
		<comments>http://robertnyman.com/2009/11/25/my-full-frontal-09-escapades-the-javascript-conference/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 14:40:55 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Speaking]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[Web browsers]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1542</guid>
		<description><![CDATA[I&#8217;m (almost) just back from Full Frontal 09, and man, did I have a good time!  
Conference takes
First of all, I have to say that I genuinely believe that Full Frontal 09 was absolutely fantastic! As I kept on telling people afterwards, all of the other speakers really stepped up and delivered, and everyone [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m (almost) just back from <a href="http://2009.full-frontal.org/">Full Frontal 09</a>, and man, did I have a good time! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h2>Conference takes</h2>
<p>First of all, I have to say that I genuinely believe that Full Frontal 09 was absolutely fantastic! As I kept on telling people afterwards, all of the other speakers really stepped up and delivered, and everyone made fantastic performances. I feel very privileged to get to share this experience with everyone there, and honored to have been a part of this line-up and first time around for this event.</p>
<p><a href="http://www.flickr.com/photos/remysharp/4125332306/"><img src="http://robertnyman.com/images/0911/full-frontal/me-presenting.jpg" alt="A picture of me during my presentation" class="align-center"></a></p>
<p class="text-align-center">
	<a href="http://www.flickr.com/photos/remysharp/4125332306/"><i>Picture by Danny Hope</i></a>
</p>
<h3>What made it so good?</h3>
<p>Asides from the speakers really doing a god job, I think factors like an absolutely awesome crowd &#8211; laughing, interacting, being on board for every detail &#8211; together with being in a cinema with oh-so-comfortable chairs really contributed it. Also, having just one track kept everyone a lot more focused on what was currently being presented, and also resulting in less running in doors etc. For speakers, it&#8217;s great to get this focus, and for attendees they <em>know</em> what they will be about to see, and won&#8217;t hesitate about missing out on some other presentation.</p>
<p>Only thing missing, I&#8217;d say, was some sort of joint lunch so everyone could mingle and talk about the morning&#8217;s presentations and network in general.</p>
<h2>Speakers&#8217; dinner and pre-party</h2>
<p>The speakers were invited to a dinner the night before the conference at the restaurant In Vino Veritas in Brighton, and I thought it was a really nice evening with great food! All speakers bar Stuart Langridge were there (because he was flying in Friday morning), plus <a href="http://remysharp.com/">Remy Sharp</a>, Julie Sharp and <a href="http://natbat.net/">Natalie Downe</a>.</p>
<p>After the dinner, we joined the pre-party/pub crawl, and met some quite nice people! For instance, fellow Swede <a href="http://unclescript.blogspot.com/">Peter Svensson</a>, <a href="http://twitter.com/lizardqueen">Liz Warner</a> and also <a href="http://www.mikedeboer.nl/">Mike de Boer</a> and <a href="http://twitter.com/liekejav">Lieke Arends</a> of <a href="http://ajax.org/">Ajax.org</a>.</p>
<p>After the last pub closing, some of us &#8211; Chris Heilmann, Mike de Boer, Lieke and Peter Svensson &#8211; decided to go down to the sea-front and, by chance, the <a href="http://travel.yahoo.com/p-travelguide-2896745-_doughnut_the_brighton-i">Doughnut</a>. I got an idea to walk all the way out on the pier and look at the water, when a couple of exceedingly high waves came in and totally sprayed me with water. Dried most of it off, but still felt like the sticky floor of a movie theater on the way back to the hotel, with a salty taste haunting me&#8230;</p>
<h2>The conference and talks</h2>
<p><a href="http://www.flickr.com/photos/remysharp/4125318924/"><img src="http://robertnyman.com/images/0911/full-frontal/me-and-chris-heilmann.jpg" alt="A picture of me and Chris Heilmann just before the conference started" class="align-center"></a></p>
<p class="text-align-center">
	<i><br />
		<a href="http://www.flickr.com/photos/remysharp/4125318924/">Picture by Danny Hope</a><br />
	</i>
</p>
<dl>
<dt><a href="http://www.wait-till-i.com/">Christian Heilmann</a> &#8211; <a href="http://www.slideshare.net/cheilmann/frontloaded-and-zipped-up-the-full-frontal-keynote">Frontloaded and zipped up &#8211; do loose types sink ships? (slides on SlideShare)</a></dt>
<dd>Christian opened the day in a splendid manner, talking about the potential with JavaScript, and made the important move of pointing out that most problems and security issues aren&#8217;t actually because of JavaScript at all.</dd>
<dt>Robert Nyman &#8211; <a href="http://www.slideshare.net/robnyman/javascript-from-birth-to-closure">JavaScript: From Birth to Closure (slides on SlideShare)</a></dt>
<dd>I think my presentation about JavaScript history and then more advanced topics went really well! I was relaxed and excited about talking, and was in a really good state of mind + the fantastic crowd really helped in making me enjoying it! Sure, some parts could always be better, but overall I was quite pleased.</dd>
<dt><a href="http://www.quirksmode.org/">Peter-Paul Koch</a> &#8211; <a href="http://www.slideshare.net/pp.koch/the-mobile-web-full-frontal-2009">W3C Widgets (slides on SlideShare)</a></dt>
<dd>As most of know, PPK must have some kind of sadistic streak in him with his endless testing of web browsers, and in this case, mobile phones and their web browsing capabilities. Great tests, although at the time, it really scares me about doing more focused development for mobile web sites.</dd>
<dt><a href="http://www.kryogenix.org/days/">Stuart Langridge</a> &#8211; New things that HTML5 provides to JavaScript hackers</dt>
<dd>Due to a late lunch, I missed the beginning of Stuart&#8217;s talk, but managed to see the latter half. He gave a good introduction to the cool things you can know do in most web browsers, and also inspired about working with the open technologies, as opposed to closed-in solutions like Silverlight and Flash (which he compared to the Death Star in Star Wars).</dd>
<dt><a href="http://twitter.com/toddkloots">Todd Kloots</a> &#8211; <a href="http://www.kloots.net/presentations/full-frontal-2009.zip">More accessible user interfaces with ARIA (slides in a ZIP file)</a></dt>
<dd>Todd was talking about using ARIA in ways to improve the accessibility of a web user interface, and also talked about the very important fact that most assistive devices do have JavaScript enabled, and that we need to think more about keyboard navigation options in web pages.</dd>
<dt><a href="http://www.jakearchibald.com/">Jake Archibald</a> &#8211; <a href="http://www.slideshare.net/jaffathecake/optimising-where-it-hurts-jake-archibald">Optimising where it hurts (slides on SlideShare)</a></dt>
<dd>Jake was absolutely awesome! I love humor in presentations, which he had aplenty, and he also complemented it with very interesting facts about performance. Something he also brought up was questioning things most people seem to take for granted, but shouldn&#8217;t &#8211; everyone should test themselves to see how things actually work. Amongst all great presentations, Jake stole the day in my eyes.</dd>
<dt><a href="http://simonwillison.net/">Simon Willison</a> &#8211; Surprise presentation (<a href="http://simonwillison.net/2009/Nov/23/node/">Simon&#8217;s blog post about his talk</a>)</dt>
<dd>Simon got really inspired by <a href="http://nodejs.org/">Node.js</a>, and just three days before the conference, he decided to do a completely other talk. It was an impressive demonstration in using virtually no slides, moving around in virtual desktops, terminal and web browser windows.</dd>
</dl>
<p>Before my talk, I was very happy to see my friend <a href="http://twitter.com/Icaaq">icaaq</a> being there, and  during lunch I also got the chance to meet my old friend <a href="http://dev.opera.com/author/974138">Chris Mills</a>, who I was meeting the second time this year!</p>
<p><a href="http://www.flickr.com/photos/codepo8/4127033185/"><img src="http://robertnyman.com/images/0911/full-frontal/me-and-chris-mills.jpg" alt="A picture of me and Chris Mills" class="align-center"></a></p>
<p class="text-align-center">
	<i><br />
		<a href="http://www.flickr.com/photos/codepo8/4127033185/">Picture by Chris Heilmann</a><br />
	</i>
</p>
<h2>The after-party</h2>
<p>At the after-party, I got the pleasure of first having dinner at the same table as <a href="http://softwareas.com/">Michael Mahemoff</a> (of books and Ajaxian fame). Then, my friend <a href="http://eatyourgreens.org.uk/">Jim O’Donnell</a> had come down to Brighton just for the party, which was great! I also spent some considerable time talking to the very nice <a href="http://jlix.net/">Sander Aarts</a> and <a href="http://wnas.nl/">Wilfred Nas</a>, and at least I got the chance to talk about a minute with <a href="http://adactio.com/journal/">Jeremy Keith</a>.</p>
<p><a href="http://blog.whatfettle.com/">Paul Downey</a> also showed me his <em>completely wonderful</em> notes of the talks, and we spoke very briefly.</p>
<p><a href="http://www.flickr.com/photos/psd/4123236978/"><img src="http://robertnyman.com/images/0911/full-frontal/paul-downeys-note-book.jpg" alt="A picture of a page in Paul Downey's note book" class="align-center"></a></p>
<p class="text-align-center"><a href="http://www.flickr.com/photos/psd/4123236978/"><i>Picture by Paul Downey</i></a></p>
<p>Just before she left the party, <a href="http://www.iheni.com/">Henny Swahn</a> came by to say hi, and said that she read my blog. Tired, confused (and any other attribute applicable), I thought she said she &#8220;read my <em>book</em>&#8220;, so I eagerly tried to convince her I haven&#8217;t written any book with repeating &#8220;no book, no book&#8221;. Sorry Henny, please don&#8217;t stop reading my blog! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>After saying our good-byes to everyone, which took a long time, Chris Heilmann and I slowly made our way back to the hotel again.</p>
<h2>People I never got to see</h2>
<p>There were also a number of people I had hoped to meet, but unfortunately missed out on: <a href="http://www.splintered.co.uk/">Patrick H. Lauke</a>, who got ill and missed the after-party, <a href="http://www.addedbytes.com/">Dave Child</a>, who had to go back to work after half the day, <a href="http://webreflection.blogspot.com/">Andrea Giammarchi</a>, who couldn&#8217;t make it to the event and <a href="http://www.danwebb.net/">Dan Webb</a>, who was there, but I apparently just missed. Next time, guys!</p>
<h2>Going home</h2>
<p>Getting up fairly early morning, I was getting ready to take the train up to London, Victoria Station, and then on to Heathrow to catch my flight. I decided to leave Brighton 4 hours before my flight was due to take off to have good time and no stress.</p>
<p>It started in the ticket line in Brighton, which took some time, so I missed the &#8220;fast&#8221; train, and had to take the &#8220;slow&#8221; train instead. And boy, slow really meant SLOW! It stopped everywhere, and the hordes getting on at the Gatwick station with all their bags didn&#8217;t make it better; the train was completely packed. Once we finally reached Victoria Station, it took, I kid you not, 25 minutes just to get a ticket to the tube! Trying to get to the subway trains also proved to be harder than I thought: there were only two ticket entrances, and one of them was out of order, so there was a long line to get through. About three persons before I reached it, the other one went out of order too! So, literally no way to get in! Luckily I managed to climb it, and got the help from someone catching my suit case (yes, without stealing it).</p>
<p>Getting slightly stressed now, with a slow train and slow ticket sales for the tube, it felt good to at least be on the tube on the way to Heathrow. Or so I thought. Halfway there, there was an announcement that the tube train had broken down and that we had to get off (luckily at a station), and wait for the next train. People swearing, and me really starting to get worried. Called home to Fredrika to make sure what Terminal to go to at least, so I could save time on any potential mistake there.</p>
<p>Once we arrived at Heathrow, the <em>long</em> automatic walking thing (you know, like a horizontal escalator, sort of) was broken, so we all had to walk/run a pretty long distance. Then I reached an escalator, but it was broken too, so I had to run up the stairs. Totally panicking about missing my flight now, it really took me by surprise when check-in, baggage drop, boarding card check, security and then passport check altogether took 15 minutes. Go Heathrow!</p>
<p>Therefore, I took some time buying gifts for my children, wandering around, and buying a couple of chicken and bacon wraps and a couple of bottles of water, to have a quick lunch. Saw that I was to take off from gate 9, and according to the signs, it seemed to be close. So, I decided to have my lunch, and then 20 minutes before take-off, walk to my gate. Finished eating, just looked up and on the screens it read GATE CLOSING. NOOOO!!!!!! From panic, to having time, to missing the flight on the gate closing extremely early! This could not be happening!</p>
<p>Started to desperately run towards gate 1-9, according to the signs. Ran uphill, and suddenly only gate 3 and 5-7 were options. What? Managed to stop someone with a badge to ask where the hell gate 9 was, and got pointed back just the way I came. Ran down the small slope again, and there it was, no marking whatsoever and looked like a janitor&#8217;s closet. Being the last one, I managed to just board before they closed the gate&#8230;</p>
<p>It seems like this gate-closing business was in relation to the plane staff wanting to get home early, because when we landed in Stockholm it was 35 minutes before the scheduled arrival! Oh well, home sweet home. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=scpZtemzPpA:YHBY2ssIn4k:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=scpZtemzPpA:YHBY2ssIn4k:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=scpZtemzPpA:YHBY2ssIn4k:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=scpZtemzPpA:YHBY2ssIn4k:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2009/11/25/my-full-frontal-09-escapades-the-javascript-conference/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2009/11/25/my-full-frontal-09-escapades-the-javascript-conference/</feedburner:origLink></item>
		<item>
		<title>The JSConf.eu conference and my visit to Berlin</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/rcZOOt7dZWY/</link>
		<comments>http://robertnyman.com/2009/11/18/the-jsconf-eu-conference-and-my-visit-to-berlin/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 17:13:05 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Speaking]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1537</guid>
		<description><![CDATA[About a week and a half ago, I had the pleasure of speaking at JSConf.eu!
Background
Inspired by JSConf in the US,  Jan Lehnardt, Malte Ubl and Holger Blank, decided to organize JSConf.eu. They gathered a stunning line-up of speakers, and I&#8217;m just happy I got to be one too!
My travel there
I got to the Arlanda [...]]]></description>
			<content:encoded><![CDATA[<p>About a week and a half ago, I had the pleasure of speaking at <a href="http://jsconf.eu/2009/">JSConf.eu</a>!</p>
<h2>Background</h2>
<p>Inspired by <a href="http://jsconf2009.com/">JSConf in the US</a>,  <a href="http://twitter.com/janl">Jan Lehnardt</a>, <a href="http://www.nonblocking.io/">Malte Ubl</a> and <a href="http://www.linkedin.com/in/holgerblank">Holger Blank</a>, decided to organize <a href="http://jsconf.eu/2009/">JSConf.eu</a>. They gathered a stunning line-up of speakers, and <a href="http://robertnyman.com/2009/11/02/this-just-in-speaking-at-jsconf-eu-november-7th-8th-2009/">I&#8217;m just happy I got to be one too</a>!</p>
<h2>My travel there</h2>
<p>I got to the Arlanda airport in Stockholm in good time, had already checked in and got through security pretty quickly. Checked the board for my gate, and saw that it was just a couple of hundred meters away. Everything under control (or so I thought). As always when waiting for a flight, I wandered around, looking in shops, buying a couple of bottles of water.</p>
<p>About half an hour before my flight was due to take off, I walked to my gate, 10 C. When I got there, there was no attendant, but just a door to go through. On the other side of the door, the only sign I could see was &#8220;Exit&#8221;. Ok, that couldn&#8217;t be right. Looking the other way, there was an elevator, so I got in and rode it to the bottom floor.</p>
<p>I ended up in something that felt like an aquarium, down on ground level looking out a huge window at the airplanes being packed and tanked. There was a door, but needless to say, it was locked. All I could see was one enormous button, with a label saying that I should press it to get a transfer to Terminal 2 (I was in Terminal 5, from where virtually all international flights go). I pushed the button, a circle lit up around it, and nothing happened. It said that the transfer bus would take ten minutes, tops, to show up &#8211; no bus did.</p>
<p>Looking at the time now, with 25 minutes to take-off, I was starting to get worried. I decided to run up the flights of stairs next to me, and find someone to talk to. It basically went like this:</p>
<blockquote>
<p>
		- How do I get to Terminal 2 the fastest way?<br />
		- Terminal 2? Take the transfer bus.<br />
		- But no bus is coming, and my plan leaves in 25 minutes!<br />
		- Oh.<br />
		- Can you you check where the transfer bus is?<br />
		<i>She called, on an intercom, no less, the transfer bus department, but, surprisingly enough, they knew nothing about transfer buses&#8230;</i>
	</p>
<p>
		- There must be another way to get there, right?<br />
		- Well, you could go out through customs again, run to Terminal 2, go through their own set of security, and run to the gate. But it&#8217;s pretty far, so I&#8217;m not sure you will make it in time.<br />
		- Ok, I&#8217;ll have to try at least. Can you please call them the gate and let them know I will be late?<br />
		- No, sorry, there&#8217;s no way for us to contact the gate.<br />
		<i>WTF?! Really? No way? Highly convinced they could contact them, there was no time for an argument.</i><br />
		- Forget it, I&#8217;ll run then.
	</p>
</blockquote>
<p>Running with my cabin bag on wheels (most of the time, just one of them touching the ground and the other in mid-air), and my overstuffed backpack with computer and lots of other things, I first got through customs and then onwards on my journey to Terminal 2. And let me tell you, Terminal 2 is <em>far</em> away from Terminal 5 at Arlanda. I don&#8217;t know how many doors and long empty corridors I ran through, but I was all drenched in sweat and gasping for air. Every time I felt I wouldn&#8217;t make it, I just pushed a little harder &#8211; I just had to. </p>
<p>Five minutes before take-off I got to security at Terminal 2, where they forced me to leave my water bottles I had bought at the other waiting area, which in theory is correct of them, but it still bothered me at that time, because they&#8217;re both behind security checks. Screw the bottles, I was going to make it, no matter what. Through security, I found my gate and got onboard the plane just in time.</p>
<p>And let me tell you, in the time of a certain flu going around, it is <em>not</em> a good thing to get on the plane, drenched in sweat with a nervous stare &#8211; on top of that, I also started coughing from the panic run. Oh well, no one was leaning over to my seat, at least, I can tell you that&#8230;</p>
<p>Once in Berlin I was sitting waiting around for <a href="http://remysharp.com/">Remy Sharp</a> to show up with his flight from Copenhagen. Interestingly, I flew with Air Berlin, and was there even before time, I think, while Remy flew with the Scandinavian SAS and was late&#8230;</p>
<p>As soon as he had arrived, we got in a cab and went to the hotel. My hotel room looked really nice, although there was this hint of a smell of sewage, and the windows had been left opened. Not a good sign&#8230;</p>
<p><img src="http://robertnyman.com/images/0911/close-to-the-hotel.jpg" alt="A picture of the surroundings close to the hotel I was staying at" class="align-center"></p>
<h2>Friday night dinner</h2>
<p>I was really looking forward to Friday night, because it meant time to meet up with my good Danish friend <a href="http://roderick.dk/">Morgan Roderick</a>, who is now living and working (contracting) for Nokia in Berlin (ironically, he lives in Sweden otherwise, but only places we have met is abroad). Morgan met up with me and Remy close to the subway station near our hotel, and he took us to a great Asian restaurant, which had all kinds of interesting dishes.</p>
<p>Once there, we met his British colleagues Toby and Andy, who were quite nice chaps, and after a while we were joined by one more of Morgan&#8217;s work friends, Magnus, who is from Sweden (and, of course, is very nice too). I really, thoroughly, enjoyed the evening, and it was the first time in quite some time that I actually felt relaxed. After a few hours of dinner, the Brits dropped of while the rest of us went into a cozy corner pub, with a funky interior (especially the bathroom!) and some weird music. Kind of gave the feel of being in Jackie Brown, or some other Tarantino movie.</p>
<p><img src="http://robertnyman.com/images/0911/dinner-in-berlin.jpg" alt="A picture of the restaurant where we had dinner" class="align-center"></p>
<p>After a fantastic evening, we got back to the hotel, and as is my usual fashion, I was doing some panic changes to my slide deck late into the night&#8230;</p>
<h2>The conference, day 1</h2>
<p>JSConf.eu was split up into two days, with lots of talks each day, and for the most of the time, dual tracks going on. Once I got there, I also managed to meet a number of fellow Swedes attending, where my friend <a href="http://www.lissmyr.com/">Martin Lissmyr</a> was one of them, and it is always nice to have Swedes around. For comfort and support, you know. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Below are short takes on the sessions I managed to see.</p>
<h3>Talks I attended</h3>
<dl>
<dt>The Future of Web-Apps &#8211; <a href="http://almaer.com/">Dion Almaer</a></dt>
<dd>Dion was supposed to give this talk with his compadre <a href="http://benzilla.galbraiths.org/">Ben Galbraith</a>, but after Øredev, Ben got so sick that he actually had to cancel and go home to the US. I hope you are better now, Ben! Dion&#8217;s talk consisted of parts of the talk I saw Ben doing at Øredev, but also of other interesting things. I also, finally, got to see the wonderful <a href="http://www.youtube.com/watch?v=8r1CZTLk-Gk">Louis C.K. talk &#8220;Everythings Amazing &amp; Nobody&#8217;s Happy&#8221;</a>, which I had on my hard drive, but had failed to take the time to see. All in all, Dion did a great and inspiring keynote! I&#8217;m just sad that, both at Øredev and JSConf.eu, all I managed to do was say hi to Dion, but never talk.</dd>
<dt>CommonJS &#8211; JavaScript vs. Ruby, Python, Java, etc. &#8211; <a href="http://cixar.com/~kris/">Kris Kowal</a></dt>
<dd>CommonJS is intended to &#8220;&#8230;building up the JavaScript ecosystem for web servers, desktop and command line apps and in the browser.&#8221; I think it&#8217;s great with such an initiative, but at the same time, it&#8217;s not a part of what I&#8217;m personally interested in, so I didn&#8217;t listen that intensely. From what I understood, though, the work with CommonJS is appreciated.</dd>
<dt>Building Desktop-Caliber Web Apps with Capuccino and Atlas &#8211; <a href="http://tolmasky.com/">Francisco Tolmasky</a></dt>
<dd>This was a very interesting demo, and the things they are creating really seem awesome &#8211; some clever minds at work there. They also dropped the idea of using MHTML in Internet Explorer to serve everything in one HTTP request &#8211; quite cool! Part of me can&#8217;t help to wonder about all the generated code, though, but I haven&#8217;t had the time to check it out.</dd>
<dt>HTML5 JavaScript APIs &#8211; Remy Sharp</dt>
<dd>Remy was giving a talk about different APIs and cool features offered with HTML5 and surrounding technologies, and I think the options for developers were alluring &#8211; and if you were just paying attention, there was a  lot of things covered in a short amount of time.</dd>
<dt>JavaScript &#8211; From Birth to Closure &#8211; Robert Nyman</dt>
<dd>Well, yes, naturally I was there &#8211; this was my talk. I realized during this talk that I&#8217;m not a professional speaker, at least not yet. Especially during the beginning of my talk, I let some details get to me that kind of threw my focus off (insignificant details I over-focused on, like weird position for me to stand at, it seemed like people weren&#8217;t getting my first couple of jokes etc). After a while I got a little bit better, but not as good as it felt at Øredev. Oh well, I hope I have learned something, and that people went away from my talk with at least something.</dd>
<dt>Extreme JavaScript Performance &#8211; <a href="http://mir.aculo.us/">Thomas Fuchs</a></dt>
<dd>Having done some performance testing with JavaScript and how web browsers react myself, I think it was a good talk with things to consider in the future for an optimal result.</dd>
<dt>ECMAScript &#8211; Douglas Crockford</dt>
<dd>Douglas gave a stunning talk about the history of ECMAScript, different twists and turns on the way, how IBM seem to be filled with just lawyers who focus on patents rather than offering something actually good etc. It was also about the future of ECMAScript, and how everyone will work together in small steps to make it better. Douglas is a fantastic story-teller, and it is mesmerizing sitting there listening to any of his talks &#8211; and this was the third talk this week for me seeing him!</dd>
</dl>
<p><img src="http://robertnyman.com/images/0911/twitter-fail-whale-at-conference.jpg" alt="A picture of the Twitter fail whale at the conference" class="align-center"></p>
<h2>Saturday night dinner</h2>
<p>After the talks on Saturday, me and the jQuery crew, meaning, <a href="http://ejohn.org/">John Resig</a>, <a href="http://brandonaaron.net/">Brandon Aaron</a>, <a href="http://bassistance.de/">Jörn Zaefferer</a> and Remy Sharp went out for dinner, and ended up at, of all places, an Australian restaurant at Potsdam Plaza in Berlin. Having never been there before, Potsdam Plaza seemed to be a spectacular place, and in the middle of it, there was this huge thing built up for the movie 2012 with waterfalls and all. I tried to get the team to cave in and acknowledge <a href="http://www.domassistant.com/">DOMAssistant</a>&#8217;s superiority, but it didn&#8217;t really happen&#8230; <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><img src="http://robertnyman.com/images/0911/potsdam-plaza.jpg" alt="A picture of Potsdam Plaza" class="align-center"></p>
<h3>Party time</h3>
<p>The event party was maybe a 10 minutes cold walk from Potsdam Plaza, and in there Nokia were sponsoring <em>all</em> alcohol &#8211; it seemed to be appreciated. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
Also there, I got to meet <a href="https://twitter.com/dzschille">David Zschille</a> who I had met my first time in Berlin back in March this year, at a Mozilla event. Unfortunately, the music was a bit loud, so not many conversations were, well, fluent in there.</p>
<p>I shared a cab back to the hotel with my friend <a href="http://kid666.com/">Tom Hughes-Croucher</a> and <a href="http://www.stubbornella.org/">Nicole Sullivan</a>, and got back, well, not <em>too</em> late, I think.</p>
<h2>The conference, day 2</h2>
<p>A bit tired, I got up later, and luckily enough, I got to share a cab to the conference venue with <a href="http://stevesouders.com/">Steve Souders</a> and <a href="http://www.crockford.com/">Douglas Crockford</a>. As I have mentioned before, both these gentlemen have been highly influential to my work and evolvement as a web developer, and having first met them at <a href="http://www.oredev.org/">Øredev</a> and now in Berlin, it was almost half a week of me stalking them, constantly asking questions, desperately hoping that some genius would rub off on me. So, thanks for putting up with me, guys! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h3>Talks I attended</h3>
<dl>
<dt>Loading JS &#8211; even caveman can do it &#8211; <a href="http://getify.com/">Kyle Simpson</a></dt>
<dd>Kyle has being doing some really great work with <a href="http://labjs.com/">LABjs</a>, to tend to the problem of JavaScript loading blocking a web page, parallel loading and similar things. Quite nice!</dd>
<dt>End to End JavaScript &#8211; From Server to Client &#8211; Tom Hughes-Croucher</dt>
<dd>Tom was giving a talk of JavaScript on the server, how to improve the results of calls done with YQL with JavaScript and other things. Interesting, although not really something I personally work with on a day-to-day basis.</dd>
<dt>OOCSS &#8211; Nicole Sullivan</dt>
<dd>Nicole has some really interesting ideas with improving CSS, and she has a lot of experience to back her claims. Overall, I think she has great thoughts, although I&#8217;m not really on board with all her takes. I plan to cover OOCSS &#8211; Object-Oriented CSS &#8211; in a future blog post.</dd>
<dt>Unittesting JavaScript with Evidence &#8211; Tobie Langel</dt>
<dd>Poor Tobie got off to a bad start with a presentation file/program that gave him some grief, and as a fellow presenter, I really felt with him. Once that was sorted out, though, he have an introduction to unit testing with the Evidence framework.</dd>
<dt>JavaScript in Browser Performance &#8211; Steve Souders</dt>
<dd>Steve gave a talk very similar to the one he gave at Øredev, but my impression is that he was more on fire here, and that the crowd seemed to be more onboard with what he was talking about. Always inspiring!</dd>
</dl>
<p><img src="http://robertnyman.com/images/0911/me-and-morgan-at-conference.jpg" alt="A picture of me and Morgan at the conference" class="align-center"></p>
<h3>Going home</h3>
<p>Unfortunately I had to leave before the last talk by John Resig about testing JavaScript to catch my plane home. Proudly, I can say, I managed to have a casual talk in German with the cab driver for a full thirty minutes to the airport. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>JSConf.eu was great, I applaud the initiative, and I sure hope it will happen again next year!</p>
<p>Please also take a look at <a href="http://www.flickr.com/photos/robertnyman/sets/72157622705777709/">My pictures of JSConf.eu 2009 and Berlin</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=rcZOOt7dZWY:zlQT7FvTYHM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=rcZOOt7dZWY:zlQT7FvTYHM:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=rcZOOt7dZWY:zlQT7FvTYHM:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=rcZOOt7dZWY:zlQT7FvTYHM:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2009/11/18/the-jsconf-eu-conference-and-my-visit-to-berlin/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2009/11/18/the-jsconf-eu-conference-and-my-visit-to-berlin/</feedburner:origLink></item>
		<item>
		<title>A faster web with Resource Packages – Mozilla suggestion to have just one HTTP request</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/YZj8_jg4wZQ/</link>
		<comments>http://robertnyman.com/2009/11/17/a-faster-web-with-resource-packages-mozilla-suggestion-to-have-just-one-http-request/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 11:11:32 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[HTML5/HTML/XHTML]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web browsers]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1532</guid>
		<description><![CDATA[One of the most common problem on the web is slow web sites, wasting he time of end users. Now, perhaps, Mozilla has come up with a solution for this, which will be applicable for all web browser vendors.
Background
One of the main problems slowing web sites down is the number of HTTP requests, i.e. the [...]]]></description>
			<content:encoded><![CDATA[<p>One of the most common problem on the web is slow web sites, wasting he time of end users. Now, perhaps, Mozilla has come up with a solution for this, which will be applicable for all web browser vendors.</p>
<h2>Background</h2>
<p>One of the main problems slowing web sites down is the number of HTTP requests, i.e. the number of times a separate file need to be retrieved from the server; e.g. images, CSS and JavaScript files. Depending on web browser, you can only have between 2 and 8 concurrent HTTP requests. There can also be delays between requests, depending on file type asked for, redundant header information sent etc.</p>
<p>You can always combine all CSS files into one and all JavaScript files into one through a clever deployment script, but it&#8217;s still a couple of requests. Then with images, you can use CSS sprites, but that <a href="http://blog.vlad1.com/2009/06/22/to-sprite-or-not-to-sprite/">could affect memory</a>, and there&#8217;s still no solution for inline images in a web page.</p>
<p>So, what if we could combine all HTTP requests into one?</p>
<p><img src="http://robertnyman.com/images/0911/surfing.jpg" alt="A picture of someone surfing a wave" class="align-center"></p>
<p class="text-align-center"><i>Picture from <a href="http://www.flickr.com/photos/73584213@N00/200815386">standing on the break on Flickr</a></i></p>
<h2>Resource Packages</h2>
<p>Alexander Limi of Mozilla has been working on a solution to this, described in detail in <a href="http://limi.net/articles/resource-packages/">Making browsers faster: Resource Packages</a>. The idea is to be able to combine all HTTP requests into one, and have this implemented in all web browsers, <em>and</em> to have it backwards compatible.</p>
<p>Sounds to good to be true, right? <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h3>Implementation</h3>
<p>The idea is to use the ZIP format, which is supported on all platforms, and to package all resources in a web page into one ZIP file. You then instruct the web browser, via a <code>link</code> element, to download that ZIP package of resources. </p>
<pre class="brush: html">
	&lt;link rel="resource-package" type="application/zip"
		href="site-resources.zip"&gt;
</pre>
<p>Note that the <code>type</code> attribute is not needed in HTML5. Also worth mentioning is that the files in the resource package should take precedence over all files included in the page through other elements (e.g. the <code>src</code> attribute on images and <code>script</code> elements). Paths on the resource file will be relative to where the actual resource package exists in the hierarchy.</p>
<p>You can also complement it with a manifest file that list all your files in the resource package, and also be able to use it in conjunction with Offline Resources in HTML5.</p>
<pre class="brush: html">javascript/jquery.js
styles/reset.css
styles/grid.css
styles/main.css
images/save.png
images/info.png</pre>
<p>To make this work for any web site you build, you could either manually, or through a deploy script, zip all the necessary files together for your resource package. And when it comes to inline images in a web page, you could actually let the server just zip it on the fly, first time that page is being requested &#8211; it will be some work for the server, but the performance gain of just one HTTP request is very likely to make it worth it.</p>
<p><img src="http://robertnyman.com/images/0911/cheetah.jpg" alt="A picture of a running cheetah" class="align-center"></p>
<p class="text-align-center"><i>Picture from <a href="http://www.flickr.com/photos/54405024@N00/2913135232">Mast Farm Picnic &#8211; 019 on Flickr</a></i></p>
<h2>Web browser implementations</h2>
<p>What web browser vendors need to do is implement support for a <code>link</code> element to include a resource package, unpack it and then use those files instead of those referenced at other places in a web page. Older web browsers lacking support will just ignore this and work as they always have.</p>
<p>What is really exciting is that this is already to be implemented in Firefox 3.7!</p>
<p>And what is also very encouraging is that Mozilla have been sending this proposal out to other web browser vendors, so everyone can offer it in their respective web browser (the beautiful thing of an organization such as Mozilla <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ). They have been in talks with performance guru <a href="http://stevesouders.com/">Steve Souders</a>, <a href="http://alex.dojotoolkit.org/">Alex Russell</a> of Google and <a href="http://benzilla.galbraiths.org/">Ben Galbraith</a> &amp; <a href="http://almaer.com/">Dion Almaer</a> of Palm to get good feedback from an implementor&#8217;s perspective.</p>
<p>Perhaps the web will actually be fast(er) in the future!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=YZj8_jg4wZQ:3DhI3WjD4kA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=YZj8_jg4wZQ:3DhI3WjD4kA:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=YZj8_jg4wZQ:3DhI3WjD4kA:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=YZj8_jg4wZQ:3DhI3WjD4kA:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2009/11/17/a-faster-web-with-resource-packages-mozilla-suggestion-to-have-just-one-http-request/feed/</wfw:commentRss>
		<slash:comments>41</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2009/11/17/a-faster-web-with-resource-packages-mozilla-suggestion-to-have-just-one-http-request/</feedburner:origLink></item>
		<item>
		<title>The Øredev 2009 Conference adventure</title>
		<link>http://feedproxy.google.com/~r/robertnyman/~3/jNOoB4tK-gQ/</link>
		<comments>http://robertnyman.com/2009/11/16/the-%c3%b8redev-2009-conference-adventure/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 11:27:17 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developing]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Speaking]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://robertnyman.com/?p=1529</guid>
		<description><![CDATA[Week before last, I had the pleasure of attending and speaking at two conferences. With even more conferences in the pipe, last week was pretty intense, work-wise, to cover up for that, but now I thought I&#8217;d take the time to talk about them, starting in this post with the Øredev 2009 conference.
Getting there
Since the [...]]]></description>
			<content:encoded><![CDATA[<p>Week before last, I had the pleasure of attending and speaking at two conferences. With even more conferences in the pipe, last week was pretty intense, work-wise, to cover up for that, but now I thought I&#8217;d take the time to talk about them, starting in this post with the <a href="http://oredev.org/">Øredev 2009 conference</a>.</p>
<h2>Getting there</h2>
<p>Since the Øredev 2009 conference takes place in Malmö, in Sweden, I decided to take the X 2000 train there instead of flying. I could try and say that it was for environmental reasons, which is a good thing, but to be honest, my decision was just based on travel time and making it easier with arriving directly at the station next to my hotel.</p>
<p>In retrospect, though &#8211; and I know how weak this sounds &#8211; the train goes <em>really</em> fast and takes the curves leaning, so instead of me working or reading, I just needed to basically just sit still to avoid starting feeling sick. So even though I like the idea, not sure I will take the train next time &#8211; at least not the high-speed one.</p>
<p>I work out a lot regularly, and I drink protein shakes. So, as a snack/afternoon meal at the train, I wanted to drink one, but didn&#8217;t really feel like preparing it in the toilet sink. Therefore, after some serious smooth-talking, I managed to convince the train conductor to allow me to use his little kitchen which had a sink and faucet. Last thing he said to me before I went in there was: &#8220;Be careful, the train can be a bit jerky in some turns &#8211; just so you know&#8221;.</p>
<p>I though &#8220;Yeah, whatever, I&#8217;m a grown-up now, I can manage&#8221;, filled my shaker with protein powder and water, and started shaking it. After just a few seconds the lid got off the shaker, and I spilled the containing goo all over me and the entire kitchen&#8230; I got some paper and started to clean up as good as I could; the kitchen looked fairly decent at least, but the protein drink stains on my shirt looked like sperm or something&#8230; No bother, only four more shirt-stained hours to go on the train!</p>
<p>So, in my stain misery, all I could do was tweet about it and share the &#8220;joy&#8221; with people. I think the best reply ever was from <a href="http://twitter.com/pekingspring">Jim O&#8217;Donnell</a>, who wondered about me being in a room with the conductor, and a stained shirt, and ultimately asked me if &#8220;Protein shake&#8221; was our safe word! <img src='http://robertnyman.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
<h2>Hotel room</h2>
<p>Eventually I arrived in Malmö, and walked across the bridge from the train station over to the hotel, Elite Hotel Savoy. I checked in and got put in room 626. All well so far, but I got some interesting instructions on how to get to my room.</p>
<blockquote>
<p>Take the lift to the second floor, get off, walk down half a stair, take the corridor to another elevator, take that one to your room.</p>
</blockquote>
<p>Ok&#8230; I always thought room numbers starting with 600 would be on the 6th floor, but apparently my floor seemed to be wedged somewhere between the first and second floor, and elevator number two surely must have been going exclusively horizontal.</p>
<p>Nevertheless, I got a <em>beautiful</em> room with lots of space for all my stuff, and a little envelope with welcoming instructions as well (and even some Swedish car candy!). I unpacked what I had to, and then directly went off to the speakers&#8217; dinner.</p>
<p><img src="http://robertnyman.com/images/0911/oredev/hotel-room.jpg" alt="A picture of my hotel room" class="align-center"></p>
<h2>Speakers&#8217; dinner</h2>
<p>The speakers&#8217; dinner took place at the absolutely gorgeous City Hall in Malmö, which is, especially on the interior, very very nice &#8211; let me tell you, it was the first time as a speaker walking on a red carpet to the welcome room. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Feeling a bit lost and not really knowing any other speaker, I browsed around amongst the other speakers in the mingling room just before the dinner, and luckily I ran into the lovely <a href="http://theresaneil.wordpress.com/">Theresa Neil</a>. Theresa and I both were speakers at the <a href="http://www.swdc2009.com/">Scandinavian Web developer Conference 2009</a> so we got to know each other there, and it was good to see that she once again this year was visiting Sweden!</p>
<p>We were then ushered into another, highly ornamented, room with lots of round tables put up for dinner and enormous chandeliers hanging over our heads. Theresa and I sat down at one table, and we were joined by some people from the conference organizing committee as well as performance guru <a href="http://stevesouders.com/">Steve Souders</a>, <a href="http://www.linkedin.com/pub/cameron-purdy/0/10/23a">Vice President of Development at Oracle Cameron Purdy</a>, interaction designer <a href="http://www.odannyboy.com/">Dan Saffer</a> and <a href="http://www.alexloddengaard.com/">Alex Loddengaard</a>.</p>
<p><img src="http://robertnyman.com/images/0911/oredev/speakers-dinner.jpg" alt="A picture from the speakers' dinner" class="align-center"></p>
<p>It was a nice dinner with some very, eh, interesting dishes, and at the end of it I dared to approach Steve Souders &#8211; he has influenced a lot of my work and it was really good to meet him in person!<br />
After the dinner a few of us went to the official pub of the conference, just next to my hotel, and drank beer, spoke and generally had a good time.</p>
<p>Like before any of my speaking engagements, I was staying up way too late, making last-minute changes and generally panicking&#8230;</p>
<h2>The conference</h2>
<p>I got up pretty early in the morning, and went for a morning walk. Had breakfast, packed all my stuff and then I decided to walk to the venue instead of taking the offered shuttle service &#8211; just to get some fresh air and properly wake up, I thought. And man, did I wake up! It was <em>very</em> brisk outside so I guess the walk served its purpose at least. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>I got my badge, which interestingly read &#8220;Independent&#8221; (probably since I was invited as me, and not just as an employee) &#8211; I liked the notion, though, of being strong and independent. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><img src="http://robertnyman.com/images/0911/oredev/my-badge.jpg" alt="A picture of my badge" class="align-center"></p>
<p>I managed to see some of Marc Lesser&#8217;s keynote &#8220;Accomplishing more by doing less&#8221; (he sure has a name that fits his presentation&#8230;), before I went to where my presentation would be and got ready.</p>
<h3>My presentation</h3>
<p>I gave my presentation <a href="http://www.slideshare.net/robnyman/javascript-from-birth-to-closure">JavaScript &#8211; From Birth to Closure (View/download on SlideShare)</a> and overall I think it went pretty good. I was worked up, in a good mood and I felt I got good some good feedback/reactions from the audience as well. Only regret I have is that I had a dirty joke in the middle of my presentation, just to desperately shock/wake people up. Sure, some people liked it and tweeted about it, but the general feedback after was that it was a bit low and uncalled for, and I believe some even got offended. Please accept my apologies &#8211; the joke is now gone.</p>
<p>Let me also say that it is quite a mental challenge to give a talk on JavaScript with <a href="http://www.crockford.com/">Douglas Crockford</a>, JavaScript Godfather, in the audience. The feedback I got afterwards, though, was that I seemed to have done well. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h3>Presentations</h3>
<p>With nine (!) separate tracks going at the same time, there were quite a number of talks to choose from. The other presentations I attended were:</p>
<dl>
<dt>JavaScript: The Good Parts &#8211; Douglas Crockford</dt>
<dd>I have seen this talk before by Douglas, except for some minor changes, and it is a great presentation, and especially <em>the</em> introduction to have if you are coming to JavaScript from other programming languages like Java, C++ or similar.</dd>
<dt>Even Faster Web Sites &#8211; Steve Souders</dt>
<dd>Steve was talking about how much performance matters, not just for end user experience, but also in conversions, loyalty and revenue, and showed both some interesting techniques as well as numbers to back his claims. First time seeing Steve talk, and it was very inspiring!</dd>
<dt>The JSON Saga</dt>
<dd>Douglas gave his talk about how JSON came to be, and it truly is a saga that has led to where we are today. Besides everything JSON, I also learned that Douglas apparently, at times, likes to design logos. <img src='http://robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </dd>
<dt>Design to Development &#8211; Collaborating and Communicating on Interaction Design &#8211; Theresa Neil</dt>
<dd>Needing a break from code, I decided to see Theresa give her talk about user experience and different approaches to common problems. As a fellow presenter, I also liked her new slide deck design!</dd>
<dt>How Exactly Can Developers Create a Compelling User Experience? &#8211; Ben Galbraith</dt>
<dd>Getting inspired by Theresa&#8217;s talk, I decided to stay for another user experience talk. Ben, (previously with Google, then Mozilla, now Palm), gave a nice presentation about how design and user experience matters, and presented a lot of feedback and quotes from people researching it.</dd>
</dl>
<h3>Evening</h3>
<p>After the conference, the organizers were offering dinner at the venue together with some beer &#8211; I think this is a great idea, to keep everyone around and still mingling even though you are several hundred people! During dinner, <a href="http://remysharp.com/">Remy</a> showed up, since he was due to talk the day after. We had some dinner together, and then later some beers at the pub, but both he and I were quite tired, both from escapades before the conference, as well as upcoming adventures.</p>
<p>Morning after, I left to go home and meet the family, before embarking on my next conference adventure (which I will cover in my next blog post).</p>
<h2>The Øredev Conference review</h2>
<p>It was my first time at Øredev, and I have to say I was extremely satisfied! Everything, down to the last detail, was very well organized, and everything <em>just worked</em>!<br />
Especially as a speaker, it&#8217;s so good when you don&#8217;t need to waste time and effort into administrative details, but instead just focus on your talk, and the web track leader Olof Adell set a great example there!</p>
<p>If I ever get the chance to go again, I would say yes without hesitating! Thanks for everyone making it such a great event, and especially to Michael Tiberg for making this happen!</p>
<p><em>My pictures from the event are available in the <a href="http://www.flickr.com/photos/robertnyman/sets/72157622813991930/">Øredev 2009 conference photo set</a></em></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/robertnyman?a=jNOoB4tK-gQ:U6J5FbDNEkI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=jNOoB4tK-gQ:U6J5FbDNEkI:I2FUP0JpNAM"><img src="http://feeds.feedburner.com/~ff/robertnyman?i=jNOoB4tK-gQ:U6J5FbDNEkI:I2FUP0JpNAM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/robertnyman?a=jNOoB4tK-gQ:U6J5FbDNEkI:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/robertnyman?d=I9og5sOYxJI" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://robertnyman.com/2009/11/16/the-%c3%b8redev-2009-conference-adventure/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://robertnyman.com/2009/11/16/the-%c3%b8redev-2009-conference-adventure/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 1.360 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-02-08 23:17:20 -->
