<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>Christian Vuerings</title>
 <link href="http://denbuzze.com/atom.xml" rel="self"/>
 <link href="http://denbuzze.com/"/>
 <updated>2013-04-12T10:11:48-07:00</updated>
 <id>http://denbuzze.com</id>
 <author>
   <name>Christian Vuerings</name>
   <email>denbuzze@gmail.com</email>
 </author>

 
 <entry>
   <title>Fixing security preferences in OS X Mountain Lion</title>
   <link href="http://denbuzze.com//post/fixing-security-preferences-in-os-x-mountain-lion"/>
   <updated>2012-09-21T00:00:00-07:00</updated>
   <id>http://denbuzze.com//post/fixing-security-preferences-in-os-x-mountain-lion</id>
   <content type="html">&lt;p&gt;When trying to run an application, OS X gave me the following warning:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/img/2012-09-21-osx-warning.png&quot;&gt;&lt;img src=&quot;/img/2012-09-21-osx-warning.png&quot; alt=&quot;OS X Mountain Lion Warning&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;“Application name” can’t be opened because it is from an unidentified developer. Your security preferences allow installation of only apps from the Mac App Store and identified developers.&lt;/p&gt;&lt;/blockquote&gt;

&lt;h3&gt;1) File fix&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Right-click on the application you want to open&lt;/li&gt;
&lt;li&gt;Select &quot;open&quot;&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;This will override the built-in default security settings for this specific file.&lt;/p&gt;

&lt;h3&gt;2) Global fix&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;code&gt;System Preferences &amp;gt; Security &amp;amp; Privacy &amp;gt; General&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Change &lt;code&gt;Allow applications downloaded from&lt;/code&gt; to &lt;code&gt;Anywhere&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;You might need to press the lock icon first and confirm the change.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Managing an open-source project</title>
   <link href="http://denbuzze.com//post/managing-an-open-source-project"/>
   <updated>2011-09-23T00:00:00-07:00</updated>
   <id>http://denbuzze.com//post/managing-an-open-source-project</id>
   <content type="html">&lt;p&gt;As some of you may know, over the last couple of months I've been working &amp;amp; managing a project called &lt;a href=&quot;http://github.com/christianv/jquery-lifestream&quot;&gt;jQuery Lifestream&lt;/a&gt;.
It isn't always that easy and there are just some of the things I've learned along the way.&lt;/p&gt;

&lt;h3&gt;Market your product&lt;/h3&gt;

&lt;p&gt;Most developers don't do any marketing at all.
We worry about the fact that we spam and people won't be interested.&lt;/p&gt;

&lt;p&gt;But if you don't let other people know what you're up to and show them how passionate you are, how will they ever want to join your project?&lt;/p&gt;

&lt;p&gt;Open-source is all about collaboration,
Which in the end allows your project to adapt and improve.
And that's what really matters in the end.&lt;/p&gt;

&lt;h3&gt;Be clear about your goals&lt;/h3&gt;

&lt;p&gt;Each project should have a set of clear goals.
Don't be political about it, be upfront so everyone knows where the project is heading.&lt;/p&gt;

&lt;p&gt;In some occasions people will be upset, because it doesn't align with their goals.
Don't worry about them and don't spend to much time arguing.
If they do want to change the project, they can fork it and do their own thing.&lt;/p&gt;

&lt;h3&gt;Be generous with praise&lt;/h3&gt;

&lt;p&gt;When is the last time you said &quot;Thank You&quot; and really meant it?&lt;/p&gt;

&lt;p&gt;Every time somebody commits time to an open-source project and does it for free, I just want to overwhelm them with praise &amp;amp; gratitude.
They work on it because they want to, you can't force them to do so, it has to come from themselves.&lt;/p&gt;

&lt;h3&gt;Praise publicly&lt;/h3&gt;

&lt;p&gt;Don't only praise in private, let other people know about their efforts as well.
In some occasions, if you do it in public, people are more willing to make further commitments to the project.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Developing jQuery Plug-ins</title>
   <link href="http://denbuzze.com//post/developing-jquery-plugins"/>
   <updated>2011-05-26T00:00:00-07:00</updated>
   <id>http://denbuzze.com//post/developing-jquery-plugins</id>
   <content type="html">&lt;p&gt;Lately I've been developing jQuery plug-ins in my spare time. Definitely
go and check out
the &lt;a href=&quot;http://christianv.github.com/jquery-lifestream/example.html&quot;&gt;example&lt;/a&gt;
&lt;a href=&quot;http://christianv.github.com/jquery-favicons/example.html&quot;&gt;pages&lt;/a&gt;.
One of the main reasons for doing this is to get a grip of the latest api
changes in jQuery.&lt;/p&gt;

&lt;h3&gt;Plug-ins&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://christianv.github.com/jquery-favicons/&quot;&gt;jQuery Favicons&lt;/a&gt; - Add
favicons to anchor elements on your page.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://christianv.github.com/jquery-lifestream/&quot;&gt;jQuery Lifestream&lt;/a&gt; - Show
a stream of your online activity with jQuery.&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Things I've learned&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Make it chainable&lt;/strong&gt;&lt;br/&gt;
jQuery has many features, one of them is chainability. Which is the ability
to chain one function after the other.
The way to do this is by returning the original jQuery object.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;nx&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;favicons&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;css&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;color&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;#ff0000&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Make it configurable&lt;/strong&gt;&lt;br/&gt;
Default options are OK, but make sure that people can modify the behaviour
without changing the actual code of the plug-in.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;nx&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;#lifestream&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;lifestream&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
  &lt;span class=&quot;s2&quot;&gt;&amp;quot;limit&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;s2&quot;&gt;&amp;quot;list&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;s2&quot;&gt;&amp;quot;service&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;twitter&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;s2&quot;&gt;&amp;quot;user&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;denbuzze&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Make it extendible&lt;/strong&gt;&lt;br/&gt;
If someone do wants to add extra functionality to your plug-in,
make sure they can. One way of doing this is by &lt;em&gt;extending&lt;/em&gt; it.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;nx&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;fn&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;lifestream&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;feeds&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;lastfm&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;obj&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;callback&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;){&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;// ...&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;A great resource is the
&lt;a href=&quot;http://docs.jquery.com/Plugins/Authoring&quot;&gt;jQuery authoring guide&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Comparing Ourselves</title>
   <link href="http://denbuzze.com//post/comparing-ourselves"/>
   <updated>2011-04-16T00:00:00-07:00</updated>
   <id>http://denbuzze.com//post/comparing-ourselves</id>
   <content type="html">&lt;p&gt;When we compare ourselves to other people, we always pick those with whom we have a connection or similarity. For instance when we look at our career, we look at the people around us, like colleagues. We usually don't compare ourselves with a far away miner in China or to Bill Gates.&lt;/p&gt;

&lt;p&gt;In this day and age we live more and more in some kind of meritocracy. Which means that if you have the talent and skill you will get where you want. But, as Alain de Botton puts it so nicely, it also implies that when you don't deserve it, you'll go to the bottom and stay there.&lt;/p&gt;

&lt;p&gt;Measuring ourselves is something most of us do on a regular basis. When we see a coworker getting a promotion or praise we often feel envy. We want to be the best and have the most because we want to be respected and have a feeling of importance.&lt;/p&gt;

&lt;p&gt;But do we need to feel important in order to be happy? It seems like we start to look more and more for instant success or happiness. This resembles taking drugs. It means that we always need our next fix.&lt;/p&gt;

&lt;p&gt;Are you looking for your next fix of happiness?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>The Importance of Failing</title>
   <link href="http://denbuzze.com//post/the-importance-of-failing"/>
   <updated>2011-04-11T00:00:00-07:00</updated>
   <id>http://denbuzze.com//post/the-importance-of-failing</id>
   <content type="html">&lt;p&gt;We are afraid of all kinds of things. It's not only you and me but everyone. It's in our nature to have fear. In fact it's something that keeps us alive. If we wouldn't have fear, we wouldn't survive.&lt;/p&gt;

&lt;p&gt;Sometimes we need to overcome fear in order to succeed. One of our main fears is failing, of not being able to succeed. This is probably one the reasons why people don't want to take initiative. They don't want to be responsible when it goes wrong.&lt;/p&gt;

&lt;p&gt;When you fail you have different ways to respond. Some people have a depression and others see it as a lesson for the future. But failing too often isn't good either. It tears you down and could demoralize one's spirit.&lt;/p&gt;

&lt;p&gt;Failing, not too often but on an occasional basis, is something which you could do. It means that you're trying something, you're not sitting and wondering around doing nothing.&lt;/p&gt;

&lt;p&gt;Many successful startups have people in them who failed 9 times before but have the ability to learn from it and to be persistent.&lt;/p&gt;

&lt;p&gt;Who do you want to be, the person who fails or the one who never attempts to succeed?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Thanks Zach for the Github Love</title>
   <link href="http://denbuzze.com//post/thanks-zach-for-the-github-love"/>
   <updated>2011-03-15T00:00:00-07:00</updated>
   <id>http://denbuzze.com//post/thanks-zach-for-the-github-love</id>
   <content type="html">&lt;p&gt;Ever since my first visit to &lt;a href=&quot;http://good-tutorials.com&quot;&gt;good-tutorials.com&lt;/a&gt; I’ve been following up on what &lt;a href=&quot;http://zachholman.com/&quot;&gt;Zach Holman&lt;/a&gt; has been doing. He gained attention with &lt;a href=&quot;http://facelette.com/&quot;&gt;facelette&lt;/a&gt;, and I just love his down to earth blogposts.&lt;/p&gt;

&lt;p&gt;A few days ago I was watching &lt;a href=&quot;http://zachholman.com/2011/01/automating-inefficiencies/&quot;&gt;his screencast&lt;/a&gt; about automating inefficiencies and was intrigued by his desktop background. I did a quick search but couldn’t find the github logo in any large sizes. So I decided to tweet him:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/2011-03-15-twitter_conversation.png&quot; alt=&quot;Twitter conversation with Zach Holman&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A couple of hours later I got &lt;a href=&quot;http://f.cl.ly/items/0k0q2I433M1u0M292S24/octowhite.png&quot;&gt;his wallpaper&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://f.cl.ly/items/0k0q2I433M1u0M292S24/octowhite.png&quot;&gt;&lt;img src=&quot;/img/2011-03-15-github_wallpaper.png&quot; alt=&quot;Github Wallpaper&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Too be honest I considered it a long shot, but it just shows what a nice guy he is and the kind of power Twitter has.&lt;/p&gt;

&lt;p&gt;If you would like to use it yourself, I also made a &lt;a href=&quot;http://cl.ly/0W3V280r0b2D2Q0z171F&quot;&gt;regular&lt;/a&gt; and &lt;a href=&quot;http://cl.ly/1P18460E0d0Q2f2C3g1e&quot;&gt;inverted&lt;/a&gt; version of the github logo in svg.&lt;/p&gt;

&lt;p&gt;Feel free to use it and spread the github love!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Once You Go Mac</title>
   <link href="http://denbuzze.com//post/once-you-go-mac"/>
   <updated>2011-02-27T00:00:00-08:00</updated>
   <id>http://denbuzze.com//post/once-you-go-mac</id>
   <content type="html">&lt;p&gt;Have you ever dreamed about a PC that you don’t need to shut down. Where you just had to close the lid and when you open it, it only takes about 2 seconds to be ready to use?&lt;/p&gt;

&lt;p&gt;For over a year I’ve been a proud Mac owner and I won’t go back to Windows or any other OS soon.&lt;/p&gt;

&lt;p&gt;Currently I run Windows XP, Ubuntu and Fedora next to the native Mac OS X snow leopard operating system. All of this is made possible through the use of virtual machines. It also means that I can run them all at the same time.&lt;/p&gt;

&lt;h3&gt;Appreciate a Mac&lt;/h3&gt;

&lt;p&gt;In a nutshell, some of the things you could appreciate when using a Mac:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No shutdown needed (except when installing major updates).&lt;/li&gt;
&lt;li&gt;Rotating pictures is so easy (and fun). You open them all in them in the Preview application and turn them with a rotate gesture.&lt;/li&gt;
&lt;li&gt;Multiple operating systems on one machine.&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Where Apple could improve&lt;/h3&gt;

&lt;p&gt;Although Apple tries really hard to make things as easy for the user as they could, but being perfect isn’t really possible. Here’s a list of things which where hard to do or could be improved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Change the default program for a certain extension. If you want to do this for all the files of a specific type, it can be &lt;a href=&quot;http://www.ehow.com/how_4493225_change-programs-mac-os-leopard.html&quot;&gt;cumbersome&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Change the default browser. In or to do this, you need to go &lt;a href=&quot;http://www.tech-recipes.com/rx/722/mac-os-x-change-the-default-web-browser/&quot;&gt;through safari&lt;/a&gt;, which seems a bit weird to me.&lt;/li&gt;
&lt;li&gt;Add more multitouch gestures to iTunes. For instance when you want to go to the first/last songs in the list – a 3 finger up or down sweep.&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Weathery – A Weather Aggregator</title>
   <link href="http://denbuzze.com//post/weathery-a-weather-aggregator"/>
   <updated>2011-02-02T00:00:00-08:00</updated>
   <id>http://denbuzze.com//post/weathery-a-weather-aggregator</id>
   <content type="html">&lt;p&gt;As a sailing instructor it’s important to know as much information about the weather as possible. You need to be able to see how much wind there’s going to be, the height of the waves, the tides, if any storm is approaching, …&lt;/p&gt;

&lt;p&gt;If you do this yourself, you usually have to check several websites. Each website has its advantages and disadvantages. Some are good in predicting the wind, others contain information about tides.&lt;/p&gt;

&lt;h3&gt;Weathery&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://christianv.github.com/weathery/&quot;&gt;Weathery&lt;/a&gt; is a web scraper that retrieves useful weather information from several sites. At this very moment it only gets the information for one specific place in Belgium, Koksijde.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;//img/2011-02-02-weathery_big.png&quot;&gt;&lt;img src=&quot;/img/2011-02-02-weathery_small.png&quot; alt=&quot;Screenshot of weathery&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Currently you can see the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basic weather information from both &lt;a href=&quot;http://www.google.com/&quot;&gt;Google&lt;/a&gt; and &lt;a href=&quot;http://www.wunderground.com/&quot;&gt;Wunderground&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Rainfall radar which is made by &lt;a href=&quot;http://buienradar.nl/&quot;&gt;buienradar.nl&lt;/a&gt;. It allows you to see if any rain is coming.&lt;/li&gt;
&lt;li&gt;A live-stream webcam from &lt;a href=&quot;http://zoetgenot.be/&quot;&gt;‘t Zoetgenot&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Very good &lt;a href=&quot;http://www.windfinder.com/&quot;&gt;wind prediction&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;UV emission prediction, sailing rating and wind information from &lt;a href=&quot;http://www.meteovista.be/&quot;&gt;meteovista&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The background image you’re seeing is randomly generated. It looks at the current weather condition (e.g. cloudy) adds a sea-like term (e.g. beach) and performs a search on &lt;a href=&quot;http://www.flickr.com/&quot;&gt;flickr&lt;/a&gt;. If doesn’t find anything, a grey background is shown.&lt;/p&gt;

&lt;p&gt;Hopefully some of you like it and maybe you’ll be able to use it the next time you jump on boat.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>2011 Resolutions and dreams</title>
   <link href="http://denbuzze.com//post/2011-resolutions-and-dreams"/>
   <updated>2011-01-07T00:00:00-08:00</updated>
   <id>http://denbuzze.com//post/2011-resolutions-and-dreams</id>
   <content type="html">&lt;h3&gt;Resolutions&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Start a website/blog about catamaran sailing that is usable for other people&lt;/li&gt;
&lt;li&gt;Write 2/3 blogposts a week&lt;/li&gt;
&lt;li&gt;Help more people by honest listening / doing chores / …&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Dreams&lt;/h3&gt;

&lt;h4&gt;Travelling&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Australia: &lt;a href=&quot;http://www.flickr.com/photos/jameshannan/490489732/&quot;&gt;Sydney’s Opera House&lt;/a&gt;, &lt;a href=&quot;http://www.flickr.com/photos/24781107@N05/4025451683/&quot;&gt;Ayers Rock&lt;/a&gt; &amp;amp; do some &lt;a href=&quot;http://www.flickr.com/photos/pearson_gj/2852562188/&quot;&gt;surfing&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;China: &lt;a href=&quot;http://www.flickr.com/photos/traveller/461484999/&quot;&gt;Zhangjiajie&lt;/a&gt;, &lt;a href=&quot;http://www.flickr.com/photos/cnmark/4236803560/&quot;&gt;Shanghai&lt;/a&gt; &amp;amp; &lt;a href=&quot;http://www.flickr.com/photos/bensharif/3640756236/&quot;&gt;The Great Wall&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Peru: &lt;a href=&quot;http://en.wikipedia.org/wiki/Machu_Picchu&quot;&gt;Machu Picchu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Sailing&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Organise a free sailing day for children (15-18 years old) that are less fortunate than me&lt;/li&gt;
&lt;li&gt;Own my catamaran&lt;/li&gt;
&lt;li&gt;Sail across the &lt;a href=&quot;http://en.wikipedia.org/wiki/English_Channel&quot;&gt;English Channel&lt;/a&gt; with a regular catamaran (e.g. &lt;a href=&quot;http://www.flickr.com/photos/11435930@N06/5156371587/&quot;&gt;Hobie 16&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Sail with an America’s cup / Extreme 40 boat&lt;/li&gt;
&lt;li&gt;Sail in the America’s cup / Extreme 40&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Living/Working&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Have a house/apartment with a view on the sea/ocean&lt;/li&gt;
&lt;li&gt;Live on a boat for a year and sail around the world&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Stuff I Want&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://kramerknives.com/photos/k-E-10Chef.jpg&quot;&gt;European Kramer 10 inch Chef’s Knife&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://gopro.com/cameras/hd-surf-hero-camera/&quot;&gt;GoPro HD Surf HERO camera&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>My 2010 reflections</title>
   <link href="http://denbuzze.com//post/my-2010-reflections"/>
   <updated>2011-01-05T00:00:00-08:00</updated>
   <id>http://denbuzze.com//post/my-2010-reflections</id>
   <content type="html">&lt;p&gt;The moment just after New Year is always a good time to reflect back on the previous year and set your goals for the year to come.&lt;/p&gt;

&lt;h3&gt;Work&lt;/h3&gt;

&lt;p&gt;2010 was a great year for me. I was able to work at &lt;a href=&quot;http://www.caret.cam.ac.uk/page/home&quot;&gt;Caret&lt;/a&gt;, which is part of the University of Cambridge. My main task was to work on &lt;a href=&quot;http://sakaiproject.org/node/2239&quot;&gt;Sakai OAE&lt;/a&gt;, which is an online learning environment.&lt;/p&gt;

&lt;p&gt;One of the major things I liked about the project is that is was completely open. Everybody can get the project for free, use it themselves and modify if necessary.
Near the end of my stay at Caret, I attended and even presented (many thanks to &lt;a href=&quot;http://lancespeelmon.wordpress.com/&quot;&gt;Lance Speelmon&lt;/a&gt;) at the &lt;a href=&quot;http://eventbrainz.com/events/home/event_id/61&quot;&gt;2010 Sakai conference&lt;/a&gt; in Denver. It was an amazing experience and it felt great to actually meet the people in real life. I worked with quite a lot of them on-line, but never actually saw them.&lt;/p&gt;

&lt;h3&gt;University College Ghent&lt;/h3&gt;

&lt;p&gt;This was probably the hardest decision I had to make in 2010. To decide whether I would go back to study or not is a big deal. But having worked for over a year I decided to study again. Currently I’m studying to become an industrial engineer in informatics at the &lt;a href=&quot;http://english.hogent.be/&quot;&gt;University College Ghent&lt;/a&gt;. It’s a difficult course though, so lets work hard and hope for the best!&lt;/p&gt;

&lt;h3&gt;Sailing&lt;/h3&gt;

&lt;p&gt;For over 2 years now, I am a sailing instructor at &lt;a href=&quot;http://www.sycod.be/&quot;&gt;Sycod&lt;/a&gt; in Oostduinkerke, Belgium. My passion for sailing still increases every time I set foot on a boat. It is hard to describe the feeling but one of the things I like about it is the feeling of surrendering yourself:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;You surrender yourself to the sea with its currents and waves and to the wind with its unpredictable gusts.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;In September I started a course to become what we Belgians call a “sailing initiator”. This is basically a certificate which allows you to teach other people how to sail. I didn’t really need it, since I was already teaching other people, but I still learned quite a lot about boat maintenance, weather conditions and first aid. The main reason I took this course is to try to improve myself, which is something I should never stop doing. So far I’ve passed all the theoretical exams but I still need to do a few days of internship at another club.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Github pages - Free HTML/CSS/JavaScript hosting</title>
   <link href="http://denbuzze.com//post/github-pages-free-html-css-javascript-hosting"/>
   <updated>2011-01-03T00:00:00-08:00</updated>
   <id>http://denbuzze.com//post/github-pages-free-html-css-javascript-hosting</id>
   <content type="html">&lt;p&gt;Quite recently I’ve started to use &lt;a href=&quot;https://github.com/&quot;&gt;github&lt;/a&gt; as a free hosting service for HTML, CSS and JavaScript.&lt;/p&gt;

&lt;p&gt;The way to do this is by using &lt;a href=&quot;http://pages.github.com/&quot;&gt;github pages&lt;/a&gt;. Normally this service is intended to show more information about your project. A bit like an extended readme file. What I’m doing is (ab)using the service for personal use.&lt;/p&gt;

&lt;h3&gt;Advantages&lt;/h3&gt;

&lt;p&gt;It’s free
You’re site is versioned. This means that you can always revert to previous versions and correct mistakes.
It’s open-source. People can fork your code and start doing some awesome things with it themselves.&lt;/p&gt;

&lt;h3&gt;My sites&lt;/h3&gt;

&lt;p&gt;Currently I’ve uploaded all &lt;a href=&quot;http://christianv.github.com/everythingatonce/&quot;&gt;the examples&lt;/a&gt; for my &lt;a href=&quot;/loading-everything-at-once-javascript-html-css&quot;&gt;Everything At Once&lt;/a&gt; blogpost. Apart from that I’m also working on a site to show &lt;a href=&quot;http://christianv.github.com/weathery/&quot;&gt;the latest weather information&lt;/a&gt; in Oostduinkerke, my sailing place in Belgium.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Hacking Around With Userscripts</title>
   <link href="http://denbuzze.com//post/hacking-around-with-userscripts"/>
   <updated>2011-01-02T00:00:00-08:00</updated>
   <id>http://denbuzze.com//post/hacking-around-with-userscripts</id>
   <content type="html">&lt;h3&gt;Lately&lt;/h3&gt;

&lt;p&gt;Lately I’ve been hacking around with userscripts. Those scripts are JavaScript files that can enhance the experience of a user on certain websites. Here’s a list to get you to start thinking:&lt;/p&gt;

&lt;p&gt;Make a site more readable by changing the color of the text.
Add support for keyboard shortcuts.
Remove really annoying ads.
Of course you could think of many more things, the list is literately endless.&lt;/p&gt;

&lt;h3&gt;My scripts&lt;/h3&gt;

&lt;h4&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/89761&quot;&gt;The Piratebay Ad Remover&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;My most popular script so far is an ad remover for &lt;a href=&quot;http://thepiratebay.org/&quot;&gt;thepiratebay.org&lt;/a&gt;. The first version of the script was launched on the 5th of November 2010 and has had 320 downloads so far.&lt;/p&gt;

&lt;h4&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/93984&quot;&gt;Ted.com Alternative Video Player&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;When looking at talks on &lt;a href=&quot;http://www.ted.com/&quot;&gt;ted.com&lt;/a&gt;, the default flash player always annoyed me. The full screen button didn’t work and seeking through the video was buggy. Apart from that, when you go full screen, you still had the flash player controls on the top and bottom of the screen. As an alternative, I wanted to use the open-source &lt;a href=&quot;http://www.longtailvideo.com/&quot;&gt;JW Player&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;&lt;a href=&quot;http://userscripts.org/scripts/show/93041&quot;&gt;mflow Keyboard Shortcuts&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;&lt;a href=&quot;http://mflow.com/&quot;&gt;mflow.com&lt;/a&gt; is a great online music player for discovering new songs. The script ads some basic keyboard shortcuts to pause/resume a song or go to the next one. It was pretty straightforward to do, since I was able to access their JavaScript library.&lt;/p&gt;

&lt;h4&gt;Other scripts&lt;/h4&gt;

&lt;p&gt;You can find some of the other scripts I wrote and a more up to date list on my &lt;a href=&quot;http://userscripts.org/scripts/show/93984&quot;&gt;userscripts.org profile page&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Things to remember&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Don’t use jQuery when you can do it natively.
Both firefox and google chrome support JavaScript quite extensively. As you’ll read further on Chrome also doesn’t support the @require attribute.&lt;/li&gt;
&lt;li&gt;Write plenty of documentation in your code as well as on &lt;a href=&quot;http://userscripts.org/&quot;&gt;userscripts.org&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Google Chrome compatibility issues&lt;/h3&gt;

&lt;p&gt;If you want to make sure that your script also runs in Google Chrome, do the following:&lt;/p&gt;

&lt;h4&gt;@match attribute&lt;/h4&gt;

&lt;p&gt;Next to the @include attribute, also use the &lt;a href=&quot;http://www.chromium.org/developers/design-documents/user-scripts#TOC-Match-Patterns&quot;&gt;@match attribute&lt;/a&gt;. This will make sure that the user who install the userscript will get an appropriate message:
instead of&lt;/p&gt;

&lt;h4&gt;Don’t use the @require attribute.&lt;/h4&gt;

&lt;p&gt;Most of the time you don’t need this, but if you do, create a script element and append it to the head or body.&lt;/p&gt;

&lt;h4&gt;Don’t use the unsafeWindow variable.&lt;/h4&gt;

&lt;p&gt;Greasemonkey allows you to access global JavaScript variables through this variable, but google chrome doesn’t. You can find a workaround in my &lt;a href=&quot;http://userscripts.org/scripts/review/93041&quot;&gt;mflow userscript&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;More information&lt;/h4&gt;

&lt;p&gt;You can find more information about userscripts in google chrome on the &lt;a href=&quot;http://www.chromium.org/developers/design-documents/user-scripts&quot;&gt;chromium userscripts page&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Loading everything at once - HTML, CSS & JavaScript</title>
   <link href="http://denbuzze.com//post/loading-everything-at-once-javascript-html-css"/>
   <updated>2010-04-25T00:00:00-07:00</updated>
   <id>http://denbuzze.com//post/loading-everything-at-once-javascript-html-css</id>
   <content type="html">&lt;p&gt;Some Sakai3 front-end developers had a dream:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;For our widget loading mechanism we want to load the HTML / CSS and JavaScript in one request (without asking the user to use inline CSS or JavaScript)&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;It felt like quite a big challenge and I wondered if it would be possible from a front-end point of view or not. So I &lt;a href=&quot;http://christianv.github.com/everythingatonce/index.html&quot;&gt;gave it a go&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;What we need from the back-end&lt;/h3&gt;

&lt;p&gt;In Nakamura (the Sakai3 back-end) we are using &lt;a href=&quot;http://sling.apache.org/site/index.html&quot;&gt;Apache Sling&lt;/a&gt; in combination with &lt;a href=&quot;http://jackrabbit.apache.org/&quot;&gt;Apache Jackrabbit&lt;/a&gt;. Which means that when we go to a URL like twitter.2.json we get information back about the structure of it’s contents:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:createdBy&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;admin&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:created&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;Mon Apr 19 2010 11:08:18 GMT+0100&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:primaryType&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;sling:Folder&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&amp;quot;css&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:createdBy&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;admin&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:created&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;Mon Apr 19 2010 11:08:18 GMT+0100&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:primaryType&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;sling:Folder&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&amp;quot;twitter.css&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:createdBy&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;admin&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:created&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;Mon Apr 19 2010 11:08:18 GMT+0100&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:primaryType&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;nt:file&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&amp;quot;javascript&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:createdBy&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;admin&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:created&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;Mon Apr 19 2010 11:08:18 GMT+0100&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:primaryType&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;sling:Folder&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&amp;quot;twitter.js&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:createdBy&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;admin&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:created&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;Mon Apr 19 2010 11:08:18 GMT+0100&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:primaryType&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;nt:file&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&amp;quot;twitter.html&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:createdBy&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;admin&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:created&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;Mon Apr 19 2010 11:08:18 GMT+0100&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:primaryType&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;nt:file&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:content&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:lastModifiedBy&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;admin&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;s2&quot;&gt;&amp;quot;:jcr:data&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2465&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:primaryType&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;nt:resource&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:uuid&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;65305673-e757-4ff8-a62a-26f10b11a020&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:mimeType&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;text/html&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;s2&quot;&gt;&amp;quot;jcr:lastModified&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;Mon Apr 19 2010 11:07:54 GMT+0100&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;If we remove all the “jcr:” properties on those nodes, it makes it even more clear:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&amp;quot;css&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&amp;quot;twitter.css&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{}&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&amp;quot;javascript&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&amp;quot;twitter.js&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{}&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&amp;quot;twitter.html&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;We basically get the hierarchical folder structure back for the twitter widget. If we change default GET servlet for sling or if we make a URL to something like twitter.content.json, it would be possible to get something like this back:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&amp;quot;css&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&amp;quot;twitter.css&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;s2&quot;&gt;&amp;quot;content&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;body {background:#000000}&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&amp;quot;javascript&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&amp;quot;twitter.js&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;s2&quot;&gt;&amp;quot;content&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;alert(\&amp;quot;loaded\&amp;quot;);&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&amp;quot;twitter.html&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;s2&quot;&gt;&amp;quot;content&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;lt;html lang=\&amp;quot;en\&amp;quot;&amp;gt;&amp;lt;head&amp;gt;&amp;lt;meta http-equiv=\&amp;quot;Content-type\&amp;quot; content=\&amp;quot;text/html; charset=utf-8\&amp;quot;&amp;gt;&amp;lt;title&amp;gt;Loaded page&amp;lt;/title&amp;gt;&amp;lt;link rel=\&amp;quot;stylesheet\&amp;quot; href=\&amp;quot;css/twitter.css\&amp;quot; type=\&amp;quot;text/css\&amp;quot; /&amp;gt;&amp;lt;script type=\&amp;quot;text/javascript\&amp;quot; src=\&amp;quot;javascript/twitter.js\&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;h1&amp;gt;Testing whether this could actually work&amp;lt;/h1&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;And that, would be genuinely awesome. This would mean that our widget could be loaded into one request! Except for the images – but those could get base64 encoded…&lt;/p&gt;

&lt;h3&gt;About the example&lt;/h3&gt;

&lt;p&gt;Before I send a request to the back-end to have this feature enabled, I want to make sure that we could actually make it work in cross-browser, fast and easy to use way.&lt;/p&gt;

&lt;p&gt;Basically a Sakai3 page process looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Load a sakai3 page with all it’s resources (HTML / CSS / JavaScript / Images)&lt;/li&gt;
&lt;li&gt;When this page is loaded, load all the widgets you embedded on that page.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;The Sakai3 widget process goes a bit deeper:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;For each widget type, send one GET request to it’s path. (e.g. devwidgets/twitter.3.json)&lt;/li&gt;
&lt;li&gt;Run over all the properties in that file and divide it into 3 sections: HTML / CSS and JavaScript.&lt;/li&gt;
&lt;li&gt;Save those 3 sections in separate objects / arrays in the JavaScript memory.&lt;/li&gt;
&lt;li&gt;Remove the original &amp;lt;link&amp;gt; and &amp;lt;script&amp;gt; tags from the widget HTML.&lt;/li&gt;
&lt;li&gt;Add the widget HTML to the container on the Sakai3 page.&lt;/li&gt;
&lt;li&gt;Load the CSS and JavaScript dynamically without doing an extra request.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;So instead of doing a request to an &lt;a href=&quot;http://christianv.github.com/everythingatonce/loaded.html&quot;&gt;HTML file&lt;/a&gt;, a &lt;a href=&quot;http://christianv.github.com/everythingatonce/css/loaded.css&quot;&gt;CSS file&lt;/a&gt; and a &lt;a href=&quot;http://christianv.github.com/everythingatonce/javascript/loaded.js&quot;&gt;JavaScript file&lt;/a&gt;, we would just make one request to a &lt;a href=&quot;http://christianv.github.com/everythingatonce/json/widget.json&quot;&gt;JSON file&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/img/2010-04-25-perf1_b.png&quot;&gt;&lt;img src=&quot;/img/2010-04-25-perf1.png&quot; alt=&quot;Doing the requests separately&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;vs.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/img/2010-04-25-perf2_b.png&quot;&gt;&lt;img src=&quot;/img/2010-04-25-perf2.png&quot; alt=&quot;Doing everything in one request&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Too be honest I got everything working quite fast (+/- 1,5 hour) but it took a bit longer to make everything cross-browser. Especially the last part, loading the JavaScript and CSS dynamically.&lt;/p&gt;

&lt;p&gt;I knew jQuery just recently added the &lt;a href=&quot;http://api.jquery.com/jQuery.getScript/&quot;&gt;$.getScript&lt;/a&gt; but that added an extra Ajax call which I wanted to avoid in the first place. After lurking through the jQuery api and &lt;a href=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js&quot;&gt;source code&lt;/a&gt;, I found out that the &lt;a href=&quot;http://api.jquery.com/jQuery.globalEval/&quot;&gt;$.globalEval&lt;/a&gt; function did exactly what I wanted for the JavaScript part.&lt;/p&gt;

&lt;p&gt;Maybe I didn’t look well enough, but I actually couldn’t find any native jQuery method that would load the CSS dynamically. So I wrote something that is heavily based on &lt;a href=&quot;http://www.phpied.com/dynamic-script-and-style-elements-in-ie/&quot;&gt;a post&lt;/a&gt; by &lt;a href=&quot;http://www.phpied.com/&quot;&gt;Stoyan Stephanov&lt;/a&gt;:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;head&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;document&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;getElementsByTagName&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;head&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;item&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;tag&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;&amp;lt;link/&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;nx&quot;&gt;tag&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;attr&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;attributes&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;tagname&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;style&amp;quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;tag&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;styleSheet&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;){&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;tag&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;styleSheet&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;cssText&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;tag&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;nx&quot;&gt;head&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;appendChild&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;tag&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;All the code that I wrote so far is pretty much WIP and in non-development ready state. For instance at the moment I load all the CSS/JavaScript files I get back from the JSON where I should only use the ones defined in the HTML. That and some other little things still need to be fixed. But those are minor things though and I definitely think I have an awesome proof of concept.&lt;/p&gt;
</content>
 </entry>
 

</feed>