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

<channel>
	<title>Don't call me DOM &#187; Work environment</title>
	<atom:link href="http://people.w3.org/~dom/archives/category/work-environment/feed/" rel="self" type="application/rss+xml" />
	<link>http://people.w3.org/~dom</link>
	<description>W3C has the DOM, and the Dom ; pick the one you prefer.</description>
	<lastBuildDate>Sat, 07 Nov 2009 11:02:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Prezi vs JessyInk</title>
		<link>http://people.w3.org/~dom/archives/2009/10/prezi-vs-jessyink/</link>
		<comments>http://people.w3.org/~dom/archives/2009/10/prezi-vs-jessyink/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 10:02:38 +0000</pubDate>
		<dc:creator>Dom</dc:creator>
				<category><![CDATA[Work environment]]></category>

		<guid isPermaLink="false">http://people.w3.org/~dom/?p=308</guid>
		<description><![CDATA[A comparison between Prezi and JessyInk, two tools to build 2D-based presentations instead of linear slides.]]></description>
			<content:encoded><![CDATA[<p>I gave a couple of talks over the past month, where I chose not to use the W3C-traditional HTML-based slides (using <a href="http://www.w3.org/Talks/Tools/Slidy/">Slidy</a>), but instead to use a more graphical approach, using two different tools:</p>
<ul>
<li><a href="http://prezi.com/">Prezi</a>, a Flash-based commercial tool that I used for a presentation I gave on <a href="http://prezi.com/143803/view">Web 2.0 and beyond</a></li>
<li><a href="http://code.google.com/p/jessyink/">JessyInk</a>, an open-source extension to the open-source SVG editor <a href="http://www.inkscape.org/">InkScape</a>, with which I built the presentation I gave on <a href="http://www.w3.org/2009/Talks/socialweb-dhm/socialweb.svg">W3C and the Social Web</a>.</li>
</ul>
<p>I&#8217;m summarizing below my experiences with both these tools.</p>
<h2>Prezi</h2>
<p>Prezi is a Flash-based tool, that allows both to build and show 2D-presentations.</p>
<p>I <a href="http://identi.ca/notice/3800441">stumbled upon Prezi</a> a few months ago, and was rather impressed by the type of presentations it allows to build: instead of working on slides that replace each other as you progress in the presentation, it offers an infinite canvas on which you zoom-in and out, translate and rotate during the presentation.</p>
<p>Beyond the rather impressive effects it creates when navigating through the presentation, I found it a rather inspiring writing model too: instead of organizing a presentation as a linear succession of topics that are all on the same level, it encourages thinking of topics as a map where you would focus on some points while keeping the big picture available.</p>
<p>I was rather pleased by what I managed to <a href="http://prezi.com/143803/view">build for my presentation on Web 2.0</a>, and based on the positive feedback I got after the presentations, I think the &#8220;slides&#8221; themselves helped carry the message I wanted to carry &#8211; although I could only really present half of what I wanted at that occasion since my alloted time was cut in half the minute before I went on stage. Of course, on a topic such as &#8220;Web 2.0&#8243;, it certainly helped to add a bit of bells and whistles to the supporting material&hellip;</p>
<p>The editor that Prezi provides is quite good, and I found it fairly simple to learn how to use it after watching a couple of the Prezi-based tutorials provided on the site; there are still some rough edges, and some limitations into what you can do with that editor &#8211; in particular, you cannot animate a specific part of the canvas e.g. to make some information appear as you progress in your presentation. Some of it might be a design decision to keep the tool simple, and I expect the rest might get fixed over time since the company Prezi seems to be getting some good level of funding.</p>
<p>There are unfortunately some pretty big problems with Prezi that makes it difficult for me to consider using it on a long term basis:</p>
<ul>
<li>it&#8217;s Flash-based, which means it relies on a non-standard technology, and for which it is hard to say how long it will remain readable; I don&#8217;t expect that many of my presentations will need to remain readable for a very long time, but it certainly doesn&#8217;t feel good to invest times in things whose lifetime is rather unclear;</li>
<li>the only local export you can get from the tool is a Windows executable; presumably that executable mostly runs a Flash object, but that makes it even less good for interoperability and preservability</li>
<li>since all of it is a blackbox, reusing elements from one presentation to the other, or re-using elements from somebody else presentation won&#8217;t work</li>
<li>I have no idea if anything has been invested to make the resulting Flash accessible, but given the way the editor works, I strongly suspects that it is not; this also means that the content of my presentations have very little chances to be indexed by search engines.</li>
<li>I didn&#8217;t find a way to make links from part of the presentation; while you wouldn&#8217;t necessarily follow links during the presentation itself, I have always found it a great assert for those that choose to look at your slides again after the presentation.</li>
</ul>
<p>All in all, these problems appeared to be sufficiently big for me to explore other solutions that would allow to build the same kind of presentations, but without these limitations.</p>
<h2>JessyInk/InkScape</h2>
<p>The first time I heard about Prezi, I started looking for a possible equivalent in SVG, and I discovered that <a href="http://code.google.com/p/jessyink/">JessyInk</a> was a pretty good candidate: it combines a Javascript library that deals with enabling simple navigation through a SVG document according to some conventions, with an extension to the fantastic <a href="http://www.inkscape.org/">InkScape SVG editor</a> to make it possible to integrate effects, transitions and views from the editor itself.</p>
<p>But it wasn&#8217;t until a few weeks ago that I got confirmation that <a href="http://identi.ca/notice/9651465">JessyInk now provides the tools needed to build Prezi-like effects</a>, and so, when I was invited to talk on &#8220;W3C and the Social Web&#8221; at the <a href="http://www.w3c.it/events/w3citaly@10/">10th anniversary of the W3C Italian office</a> I decided to give it a try to build my presentation.</p>
<p>The <a href="http://www.w3.org/2009/Talks/socialweb-dhm/socialweb.svg">resulting &#8220;slides&#8221;</a> were OK, but they clearly remain much more &#8220;slide-based&#8221; than what I would have  done with Prezi.</p>
<p>A big reason for that is that JessyInk still uses slide as the basic unit for its operations &#8211; slides are based on Inkscape layers across which you can have transitions. This doesn&#8217;t encourage working on a completely 2D-based presentation, even though it allows fairly easily to zoom in and out in a particular slide.</p>
<p>Another problem with JessyInk is that the editing interface it offers is really sub-optimal; InkScape is a great SVG editor, but way too rich for the things you&#8217;re likely to need in a presentation-context &#8211; that said, having all this power at your hands can also help creativity in building diagrams and graphical illustration that you would likely dismiss as too complex in other environments.</p>
<p>The few user interfaces that the JessyInk extension adds to the editor are modal dialogs, with somewhat awkward wording and organization that don&#8217;t really make it intuitive to add effects. I was able to use it without too much trouble, but I don&#8217;t think I would feel comfortable recommending it to someone who doesn&#8217;t like fiddling with computers as much as I do.</p>
<p>I&#8217;m reasonably confident that the resulting slides are more accessible than the Prezi-ones, but I&#8217;m also pretty sure I would need to hand edit the (rather big) resulting SVG file to make it really accessible since again, the editor doesn&#8217;t provide easy ways to annotate the content you put in there. In particular, I&#8217;m not sure how accessible it is to use overlaid layers as based for separating content in slides.</p>
<p>Finally, the resulting slides are not visible for most Internet Explorer users (which cuts off a pretty large population), and I don&#8217;t think most search engines properly index SVG content either at this time.</p>
<p>That said, JessyInk offers the possibility to make local animations &#8211; one of the thing I was missing in Prezi; the interface doesn&#8217;t necessarily help to make the kind of effects I was looking for, but the potential is there and I think I could have gotten there with more time.</p>
<h2>In the future</h2>
<p>Despite the current defects I&#8217;ve found in JessyInk, I think I&#8217;m likely to try using it a few more times for presentations I would have to prepare, trying to force myself into reusing the 2D-concept rather than the easy path of using slides/layers.</p>
<p>I doubt I&#8217;ll find time to make proper bug reports to the JessyInk project on the usability of their interfaces, esp. as I am not sure how much leeway the Inkscape extension framework leaves there &#8211; but here is some hope that I would :)</p>
<p>I think I&#8217;ll look into getting reports on the accessibility of the resulting slides, though, since that&#8217;s clearly an important concern for me.</p>
<p>One thing I&#8217;m considering is turning my existing Prezi presentation into a JessyInk/SVG one, to evaluate how much of Prezi JessyInk can emulate, as well as see if it can help improve it; at the very least, it would provide me with a more reliable alternative of the presentation, but still nicer than the <a href="http://www.w3.org/2009/Talks/witfor-web20/">HTML version</a> I had already built.</p>
<p>I think my ideal future for JessyInk would it for it be based on a more limited editing interface than JessyInk, possibly in a Web-based editor such as the one made possible by <a href="http://code.google.com/p/svg-edit/">svg-edit</a>, which would focus on the actual tasks you&#8217;re likely to consider when composing a presentation.</p>]]></content:encoded>
			<wfw:commentRss>http://people.w3.org/~dom/archives/2009/10/prezi-vs-jessyink/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Validating XHTML Basic 1.1</title>
		<link>http://people.w3.org/~dom/archives/2009/06/validating-xhtml-basic-1-1/</link>
		<comments>http://people.w3.org/~dom/archives/2009/06/validating-xhtml-basic-1-1/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 16:03:23 +0000</pubDate>
		<dc:creator>Dom</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Mobile Web]]></category>
		<category><![CDATA[Work environment]]></category>

		<guid isPermaLink="false">http://people.w3.org/~dom/?p=291</guid>
		<description><![CDATA[As I was trying to validate a large number of XHTML MP 1.2 files (the ones in one of the OMA&#8217;s XHTML MP test suite &#8211; whose welcome page itself ironically is not well-formed), I realized that the tool I was using, based on the WDG HTML validator as packaged by Debian, was making network [...]]]></description>
			<content:encoded><![CDATA[<p>As I was trying to validate a large number of XHTML MP 1.2 files (the ones in one of the <a href="http://testfest.openmobilealliance.org/XHTML_Suite_3/">OMA&#8217;s XHTML MP test suite</a> &#8211; whose welcome page itself ironically is not well-formed), I realized that the tool I was using, based on the <a href="http://htmlhelp.com/tools/validator/">WDG HTML validator</a> as <a href="http://packages.debian.org/en/etch/all/wdg-html-validator">packaged by Debian</a>, was making network access requests when used on these XHTML MP 1.2 files. I then moved to use <code>xmllint</code> with the <code>--valid</code> option, but it had the same behavior.</p>

<p>As one of the W3C Systems team member, I&#8217;m acutely aware <a href="http://www.w3.org/blog/systeam/2008/02/08/w3c_s_excessive_dtd_traffic">how bad is the practice of fetching DTDs over the network</a> over and over again.</p>

<p>Furthermore, the OMA XHTML MP 1.2 DTDs are broken &#8211; they include non-UTF-8 characters in the comments of one of the modules (bug that I have reported a while ago but that still hasn&#8217;t been fixed apparently).</p>

<p>But given that XHTML MP 1.2 is mostly equivalent to XHTML Basic 1.1, I thought I would validate the said files against that DTD &#8211; but I wanted to make sure I wouldn&#8217;t hit the network when doing so.</p>

<p>Unfortunately, the XHTML Basic 1.1 DTD was not installed in my local XML catalog by default as part of the others DTD in the <code>w3c-dtd-xhtml package</code> &#8211; I&#8217;ve filed a <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=533327">bug report</a> in the hope that it will be in the future, along with the XHMTL+RDFa DTD.</p>

<p>So I looked into adding the XHTML Basic 1.1 DTD to my local XML catalog, and marking it as an equivalent of the XHTML MP 1.2 DTD at the same time. Given that this wasn&#8217;t exactly straightforward, I thought I would document here what I did to set that up on my Ubuntu Jaunty install, in the event that someone else would need to do something simiar:</p>
<ul>
<li>first, I added the following lines to my <code>/etc/xml/catalog</code> file:
<pre><code>&lt;delegatePublic publicIdStartString="-//W3C//DTD XHTML Basic 1.1" catalog="file:///etc/xml/w3c-dtd-xhtml.xml"/&gt;
&lt;!-- Making XHTML MP an equivalent of XHTML Basic 1.1 --&gt;
&lt;delegatePublic publicIdStartString="-//OMA//DTD XHTML Mobile 1.2" catalog="file:///etc/xml/w3c-dtd-xhtml.xml"/&gt;</code></pre></li>
<li>I edited <code>/etc/xml/w3c-dtd-xhtml.xml</code> to add the following lines:
<pre><code>&lt;delegatePublic publicIdStartString="-//W3C//DTD XHTML Basic 1.1//EN" catalog="file:///usr/share/xml/xhtml/schema/dtd/basic11/catalog.xml"/>
&lt;!-- Making XHTML MP an equivalent of XHTML Basic 1.1 -->
&lt;delegatePublic publicIdStartString="-//OMA//DTD XHTML Mobile 1.2//EN" catalog="file:///usr/share/xml/xhtml/schema/dtd/basic11/catalog.xml"/>
</code></pre></li>
<li>I created the directory <code>/usr/share/xml/xhtml/schema/dtd/basic11/</code> and put the following files in it (available as a <a href="/~dom/2009/xhtmlbasic11cat.zip">Zip file</a>):
<ul><li><a href="http://www.w3.org/MarkUp/DTD/xhtml-basic11.cat">the SGML Catalog definition of XHTML Basic 1.1</a> &#8211; since I&#8217;m now using <code>xmllint</code> rather than the WDG validator, I&#8217;m not sure if it works or is useful as is</li>
<li><a href="/~dom/2009/catalog.xml">a modified XML Catalog file</a> that points both the XHTML Basic 1.1 FPI (<code>-//W3C//DTD XHTML Basic 1.1//EN</code>) and the XHMTL MP 1.2 FPI (<code>-//OMA//DTD XHTML Mobile 1.2//EN</code>) to the XHTML Basic 1.1 DTD</li>
<li>a <a href="/~dom/2009/xhtml-basic11-f.dtd">corrected version of the flat DTD for XHTML Basic 1.1</a>, that includes all the necessary modules as a single file &#8211; while it was based on an <a href="http://www.w3.org/MarkUp/DTD/xhtml-basic11-f.dtd">old version developed by the XHTML Working Group</a>, I had to update it quite a bit to make it actually represent what the XHTML Basic 1.1 spec says</li>
<li>I have also included other files that I had found in the similar catalog directory for XHTML Basic 1.0, but I think they&#8217;re only useful for SGML-based validation, rather than XML-based &#8211; they are also in the Zip file, but may not be useful</li>
</ul>

<p>With these changes, I&#8217;m now able to validate my XHTML MP/Basic files without hitting the network. But the main lesson for me remains that it isn&#8217;t exactly trivial to add DTDs to a catalog when it isn&#8217;t done by people who actually know what they&#8217;re doing&hellip;</p>]]></content:encoded>
			<wfw:commentRss>http://people.w3.org/~dom/archives/2009/06/validating-xhtml-basic-1-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The beauty of HTMLMediaElement</title>
		<link>http://people.w3.org/~dom/archives/2009/02/the-beauty-of-htmlmediaelement/</link>
		<comments>http://people.w3.org/~dom/archives/2009/02/the-beauty-of-htmlmediaelement/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 13:25:43 +0000</pubDate>
		<dc:creator>Dom</dc:creator>
				<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[Work environment]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://people.w3.org/~dom/?p=247</guid>
		<description><![CDATA[So, while exploring the world of Web video, after having successfully transcribed a one hour long video of one my presentations,
and turned that transcription into an HTML 5 video with subtitles, I started to look in more details as to what HTML 5 brought to the table that made this synchronization possible.
The rather obvious change [...]]]></description>
			<content:encoded><![CDATA[<p>So, while <a href="http://people.w3.org/~dom/archives/2009/02/exploring-the-world-of-web-video/">exploring the world of Web video</a>, after having successfully <a href="http://people.w3.org/~dom/archives/2009/02/diving-in-transcription/">transcribed a one hour long video of one my presentations</a>,
and turned that transcription into <a href="http://people.w3.org/~dom/archives/2009/02/synchronizing-text-and-video/">an HTML 5 video with subtitles</a>, I started to look in more details as to what HTML 5 brought to the table that made this synchronization possible.</p>
<p>The rather obvious change that HTML 5 brings to the table is the <a href="http://dev.w3.org/html5/spec/Overview.html#htmlmediaelement"><code>HTMLMediaElement</code></a> DOM Interface, and in particular the <code>currentTime</code> property, which at any time reflects the part of the media content that is played.</p>
<p>This means that it allows to synchronize any part of your HTML page with the video, as well as navigate through the video by setting the property to the section of the video you want to play!</p>
<p>And since I had already gathered a lot of timing information in the transcript of the video, extracting meaningful timings of the various sequences of the video was again only an XSLT style sheet away, provided I added relevant metadata in the transcription: typically, identifying subsections as <code>&lt;div&gt;</code> in the timedtext transcript, with a <code>ttm:title</code> set (which I achieved directly through my transcribing tool, Transcriber, that has all the needed interfaces to set these metadata).</p>
<p>And so I wrote that <a href="http://www.w3.org/2009/02/presentation-viewer/create-viewer-from-dfxp.xsl">XSLT</a>, added some further out-of-band metadata linking to <a href="http://www.w3.org/2009/02/presentation-viewer/parisweb-topic-slides.xml">slides</a> and additional <a href="http://www.w3.org/2009/02/presentation-viewer/parisweb-topic-notes.xml">notes</a> that I wanted to include in my presentation viewer (<a href="http://www.w3.org/2009/02/presentation-viewer/create-viewer-from-dfxp.xsl">more details on the process involved are available</a>).</p>
<p>The fact that I couldn&#8217;t embed these additional data in TimedText is actually quite disappointing &#8211; that a Web format should be developed without any way to add hyperlinks seems quite wrong! Generally speaking, it&#8217;s not clear to me that timedtext should be anything else than a set of additional timing attributes on top of XHTML &#8211; but I can&#8217;t claim that I have explored that space sufficiently to give much credit to that assertion.</p>
<p>Given that these metadata were not stored in the TimedText file, I ended up having them embedded in the resulting HTML page; it occured to me that the best combination to store them there was to use the <a href="http://www.w3.org/2008/WebVideo/Fragments/wiki/Syntax">extremely experimental media fragment syntax</a> within an <a href="http://www.w3.org/TR/rdfa-syntax/">RDFa description of the table of content</a>, e.g.:</p>
<pre><code>&lt;ul class="toc">
            &lt;li about="http://media.w3.org/2007/11/parisweb-dom.ogv#t=00:00:44.209,00:01:28.432">
               &lt;a target="slides" rel="foaf:depiction"  
                    property="dc:title" 
                    href="http://www.w3.org/2007/Talks/11-parisweb/slide-1.html">
                    Introduction
                &lt;/a>
            &lt;/li>
&lt;/ul></code></pre>
<p>This essentially annotates a given section of the video (<code>#t=00:00:44.209,00:01:28.432</code> meaning between 44.209 seconds after the start of the video and 1 minute 28.432 second after the start) with a title and an illustration (in this case, the accompanying slide) &#8211; I chose <code>foaf:depiction</code> as a property, but it probably isn&#8217;t the best match &#8211; I&#8217;m hoping thet <a href="http://www.w3.org/2008/01/media-annotations-wg.html">Media Annotations Working Group</a> will come up with a useful ontology that could be used in these types of contexts.</p>

<p>These annotations are then parsed by a small <a href="http://www.w3.org/2009/02/presentation-viewer/sync.js">Javascript layer</a> (built on top of JQuery) which reproduces most of what the <a href="http://www.w3.org/2008/12/dfxp-testsuite/web-framework/HTML5_player.js">TimedText javascript player</a> does, but in a much less verbose way&hellip; &#8211; another incitation for hoping that timedtext was really just XHTML.</p>

<p>The <a href="http://www.w3.org/2009/02/presentation-viewer/parisweb2007-dom.html">resulting presentation viewer</a> allows to navigate through the video, with synchronized slides, notes and subtitles, provided your browser supports the <code>HTMLMediaElement</code> interface, as Firefox 3.1 does:</p>
<object  height="347" width="420" type="application/x-shockwave-flash" name="mpl" data="http://dotsub.com/static/players/portalplayer.swf">

<param name="swliveconnect" value="true"  />

<param name="allowFullScreen" value="true" />

<param name="allowScriptAccess" value="always" />

<param name="flashvars" value="mediauri=/media/ed3cbe9c-07d1-45fc-bd76-2d0d58870e0e/m/flv/en&amp;screenshoturi=http://dotsub.com/media/ed3cbe9c-07d1-45fc-bd76-2d0d58870e0e/p&amp;mediaDuration=38000&amp;lang=eng "/>

<object height="347" width="420" type="video/x-flv" data="http://dotsub.com/media/ed3cbe9c-07d1-45fc-bd76-2d0d58870e0e/m/flv/e" ></object>

</object>
<p>(also available as <a href="http://media.w3.org/2009/02/presentation-viewer-screencast.ogv">Ogg/Theora video</a> with a <a href="http://media.w3.org/2009/02/presentation-viewer-screencast.xml">Timed Text transcript</a>.)</p>
<p>It also carries a set of <a href="http://www.w3.org/2007/08/pyRdfa/extract?uri=http%3A%2F%2Fwww.w3.org%2F2009%2F02%2Fpresentation-viewer%2Fparisweb2007-dom.html&amp;format=pretty-xml&amp;warnings=false&amp;parser=lax&amp;host=xhtml&amp;space-preserve=true&amp;submit=Go%21">RDF annotations to the video itself</a>.</p>
<p>(I discovered only today that apparently <a href="http://blog.gingertech.net/2008/09/27/demo-of-new-html5-features/">Ian Hickson made a very similar demonstration</a> a few months ago)</p>
<p>I must confess that I&#8217;m not quite sure that the accessibility of the resulting page is great &#8211; it uses the &lt;object&gt; element to load external pages (the  slides and notes), while it should probably include their content automatically through AJAX, with a pinch of <a href="http://www.w3.org/WAI/intro/aria">WAI ARIA</a> to alert of pages updates.</p>
<p>The AJAX inclusion of content  would be much facilitated by <a href="http://www.w3.org/TR/css-style-attr">scoped style sheets</a>.</p>

<p>My conclusion from this exploration is that clearly the new  <code>HTMLMediaInterface</code> DOM interface is of great importance to really bring video (and similarly audio) into the Web browser; I can see how it could be improved to make it much easier to create synchronization effects:</p>
<ul>
<li><del>using some sort of timer callback interface with a begin and end period &#8211; currently, you have to use the generic <code>setInterval</code> function that polls every tenth of second to check whether you are in a period of the video where something should happen; ideally, you would just say <code>video.setTimer(<var>callback_function</var>,<var>begin</var>,<var>end</var>)</code>, and <code><var>callback_function</var></code> would be called each time the video enters the period of time between <code>begin</code> and <code>end</code>;</del><ins>Err&#8230; it seems that&#8217;s exactly what <a href="http://www.w3.org/TR/2009/WD-html5-20090212/l#dom-media-addcuerange"><code>addCueRange</code></a> is about.&hellip; I guess what I really need is <a href="https://developer.mozilla.org/En/NsIDOMHTMLMediaElement#addCueRange()">having it implemented</a> :)</ins></li>
<li>ensuring that the HTMLMediaInterface is applied to any element where a time-based animation is used: being able to use it on SVG animations, Flash animations, and maybe even animated GIF (!) sounds as useful as on videos and audios; maybe this &#8220;just&#8221; means that the <code>&lt;video&gt;</code> element implementations should support <code>image/svg+xml</code> and <code>image/gif</code> as acceptable media types?</li>
<li>it seems really backward that any JavaScript layer be required at all to run synchronized subtitles, and the <code>&lt;video;gt;</code> element should clearly support linking media content and their transcript in a uniform way;</li>
<li>it would be really neat if the media fragment URIs could be used again directly to go to a particular section of a video included in the page, without the Javascript layer.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://people.w3.org/~dom/archives/2009/02/the-beauty-of-htmlmediaelement/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://media.w3.org/2007/11/parisweb-dom.ogv#t=00:00:44.209" length="85117168" type="video/ogg" />
<enclosure url="http://dotsub.com/media/ed3cbe9c-07d1-45fc-bd76-2d0d58870e0e/m/flv/e" length="2433090" type="video/x-flv" />
<enclosure url="http://media.w3.org/2009/02/presentation-viewer-screencast.ogv" length="688128" type="video/ogg" />
		</item>
		<item>
		<title>Synchronizing text and video</title>
		<link>http://people.w3.org/~dom/archives/2009/02/synchronizing-text-and-video/</link>
		<comments>http://people.w3.org/~dom/archives/2009/02/synchronizing-text-and-video/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 12:31:32 +0000</pubDate>
		<dc:creator>Dom</dc:creator>
				<category><![CDATA[Video]]></category>
		<category><![CDATA[Work environment]]></category>
		<category><![CDATA[XSLT]]></category>

		<guid isPermaLink="false">http://people.w3.org/~dom/?p=235</guid>
		<description><![CDATA[After having visited the land of transcription as my first stop in the world of Web video, the next logical step was to look into how this wonderful transcription of my video could be actually shown along with the video.
Transcriber, the tool I used to generate the captions of the video, saves the transcription into [...]]]></description>
			<content:encoded><![CDATA[<p>After having <a href="http://people.w3.org/~dom/archives/2009/02/diving-in-transcription/">visited the land of transcription</a> as my first stop in the <a href="http://people.w3.org/~dom/archives/2009/02/exploring-the-world-of-web-video/">world of Web video</a>, the next logical step was to look into how this wonderful transcription of my video could be actually shown along with the video.</p>
<p><a href="http://trans.sourceforge.net/en/presentation.php">Transcriber</a>, the tool I used to generate the captions of the video, saves the <a href="http://www.w3.org/2009/02/presentation-viewer/parisweb-transcriber.xml">transcription into its own XML format</a>:</p>
<pre ><code>&lt;Episode program="<span xml:lang="fr">ParisWeb 2007 - Les Bonnes Pratiques du Web Mobile</span>" 
  air_date="2007-11-16">
&lt;Trans scribe="<span xml:lang="fr">Dominique Hazael-Massieux</span>" 
  audio_filename="parisweb" version="5" version_date="090210" xml:lang="fr">
  &lt;Speakers>
    &lt;Speaker id="spk1" name="<span xml:lang="fr">Stéphane Deschamps</span>" 
      check="no" type="male" dialect="native" accent="French" scope="local"/>
    &lt;/Speaker>
  &lt;/Speakers>
  &lt;Section type="report" startTime="0" endTime="44.209">
    &lt;Turn startTime="0" endTime="19.933" speaker="spk1" mode="planned">
      &lt;Sync time="0"/>
      <span xml:lang="fr">Y'a quelque chose auquel on croit beaucoup à ParisWeb,</span>
      &lt;Sync time="3.458"/>
      <span xml:lang="fr">c'est "les standards, c'est bon, mangez-en",</span>
      &lt;Sync time="6.553"/>
      <span xml:lang="fr">c'est pour ça que cette association existe</span>
    &lt;/Turn>
  &lt;/Section>
&lt;/Trans></code></pre>

<p>It offers the possibility to export it in a variety of other formats (including HTML), but for sake of exploring one of the technologies in development in W3C for that precise use-case, <a href="http://www.w3.org/TR/ttaf1-dfxp/">Timed Text DFXP</a>, I started to look into transforming their XML format into Timed Text.</p>
<p>Another motivation for that was that <a href="http://home.gna.org/subtitleeditor/">Subtitle Editor</a>, the other tool I had looked at, is able to import and export timed text data; this also meant that very same tool would allow me to quickly visualize the subtitles superimposed to the video, one of the advantages that it had over Transcriber.</p>
<p>It turned out (unsurprisingly, I suppose) that the conversion between the two formats was really quite easy through <a href="http://www.w3.org/2009/02/presentation-viewer/transcriber2dfxp.xsl">an XSLT style sheet</a>; the main structural difference between the two formats is that Transcriber notes break points as XML elements (<code>&lt;Sync&gt;</code> in the example above), while TimedText wraps the transcripted content into elements (<code>&lt;span&gt;</code> or <code>&lt;p&gt;</code>).</p>
<p>So, now that I had a <a href="http://www.w3.org/2009/02/presentation-viewer/parisweb.xml">Timed Text version of my transcription</a>, how did that help me putting the transcripted video on the Web?</p>
<p>Looking quickly on the Web, it seems that some Video hosting services, including dotSub and dailymotion but not (I think) Youtube, allows publishers to upload subtitles with their videos; as I have verified since, dotSub even supports importing and exporting subtitles in TimedText format.</p>
<p>But I was curious to know how to include these subtitles in a self-hosted video situation; I had little hope to find subtitles support through the classical <code>&lt;object></code> tag in HTML, but I was hoping that the new <a href="http://dev.w3.org/html5/spec/Overview.html#video"><code>&lt;video></code> element in HTML 5</a> would help solve that problem.</p>
<p>Unfortunately, it doesn&#8217;t out of the box as of the draft dated of February 12 :</p>
<blockquote cite="http://www.w3.org/TR/2009/WD-html5-20090212/#video">
<p>[&hellip;] authors are expected to provide alternative media streams and/or to embed accessibility aids (such as caption or subtitle tracks) into their media streams.</p>
</blockquote>
<p>That certainly seemed extremely suboptimal to me &#8211; having to download a whole video to access its transcript doesn&#8217;t sound like a good use of anyone bandwidth. <a href="http://blog.gingertech.net/2008/12/12/attaching-subtitles-to-html5-video/">Discussions on fixing that current state of the HTML 5 spec have apparently started</a>, and brought to my attention the work that my colleague Philippe had started to implement <a href="http://www.w3.org/2008/12/dfxp-testsuite/web-framework/HTML5_player.js">a JavaScript-based TimedText player</a> for HTML 5.</p>
<p>This was exactly what I needed, and I thus started to play with that code to embed subtitles of my video in an HTML page.</p>
<p>And this is what got me started to look into <a href="http://people.w3.org/~dom/archives/2009/02/the-beauty-of-htmlmediaelementthe-beauty-of-htmlmediaelement/">why the new <code>&lt;video&gt;</code> element in HTML 5 is actually a game changer</a>, rather than just a nice wrapper around the existing functionalities in <code>&lt;object&gt;</code> &#8211; which is what my next blog post will look into.</p>]]></content:encoded>
			<wfw:commentRss>http://people.w3.org/~dom/archives/2009/02/synchronizing-text-and-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Diving in transcription</title>
		<link>http://people.w3.org/~dom/archives/2009/02/diving-in-transcription/</link>
		<comments>http://people.w3.org/~dom/archives/2009/02/diving-in-transcription/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 18:28:31 +0000</pubDate>
		<dc:creator>Dom</dc:creator>
				<category><![CDATA[Gnome desktop]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://people.w3.org/~dom/?p=221</guid>
		<description><![CDATA[So, my exploration in world of Web video started in the land of transcription.
As I mentioned previously, one of the requirements for us on the W3C Staff to  be allowed to publishing media content is to make sure it meets some minimal level of accessibility, and in the current (draft) state of affairs, this [...]]]></description>
			<content:encoded><![CDATA[<p>So, my <a href="http://people.w3.org/~dom/archives/2009/02/exploring-the-world-of-web-video/">exploration in world of Web video</a> started in the land of transcription.</p>
<p>As I mentioned previously, one of the requirements for us on the W3C Staff to  be allowed to publishing media content is to make sure it meets some minimal level of accessibility, and in the current (draft) state of affairs, this means providing a transcription of its content. <ins>(Oct 8 2009: that policy is now <a href="http://www.w3.org/2008/06/video-notes">publicly available</a>)</ins></p>
<p>My first reaction to that policy was slightly annoyed: I was afraid this would create too high a barrier on us from publishing multimedia content, which in this age and days seems to be a fairly important expression mechanism.</p>
<p>But the argument was made that we don&#8217;t publish non-valid HTML documents, that we try to maintain some minimum level of accessibility across the W3C site, and that multimedia content had no reason to be treated differently &#8211; and I was convinced.</p>
<p>Convinced, but still preoccupied to the potential barriers it creates; and if it creates barriers for us, in an organization of technophiles with a strong interest in creating accessible content, how great these barriers would be for most of the rest of the world, who primarily wants to share their content, without much direct interest in the technologies behind it?</p>
<p>I figured the best way to evaluate that was to go through the exercise myself; I should note that our policy should be accompanied with a budget so that we don&#8217;t have to do it ourselves, but it still seemed important to make my hand dirty in the transcription process to  understand it better.</p>
<p>While we&#8217;re only required to provide a transcription, I was more interested in providing captions of the <a href="http://www.dailymotion.com/parisweb/parisweb/video/x4lzho_bonnes-pratiques-du-web-mobile_tech">video of my ParisWeb presentation</a> &#8211; given its duration of one hour, I was pretty sure I would get bored by the transcription process if I didn&#8217;t get the nice results of synchronized captions at the end.</p>
<p>So I started looking for tools to create these captions; the first one I found on my <a href="http://www.gnome.org/">Gnome</a> desktop was <a href="http://home.gna.org/subtitleeditor/">Subtitle Editor</a>, which offers a pleasant user interface, showing the video with the subtitles as you write them, and shows also a waveform (i.e. a visual representation) of the audio track to help locate pauses in it.</p>
<p>But it appeared pretty quickly that the tool was more geared towards editing existing subtitles, than creating new ones from scratch: the user interactions to adjust the timing of the subtitles were really overly complex, and not adapted to the setting of what would appear to be 950 synchronization points!</p>
<p>Looking for another tool, I found <a href="http://trans.sourceforge.net/en/presentation.php">Transcriber</a>, available on Windows, Mac and Linux.</p>
<p>While the rather ugly Tcl/Tk interface of the tool and its lack of integration with the audio system in place on my Gnome desktop were a bit annoying, the tool itself and its well-defined keyboard shortcuts made it a much better tool for that captioning process:</p>
<ul>
<li>you load the audio file, from which a waveform is built and displayed in the lower part of the window;</li>
<li>you can then use the <kbd>tab</kbd> key to start and pause the audio track, and jump back and forth in the audio track using the arrow keys;</li>
<li>meanwhile, you can type the transcription and end each line of captions with the enter key</li>
</ul>
<p>I&#8217;ve made a <a href="http://dotsub.com/view/b1691c89-f9cd-474a-b1a2-32dbaf222065">screencast</a> (my latest whim on which I&#8217;ll come back later) showing that rough process of the transcription of the first few seconds of the video:</p>
<object  height="347" width="420" type="application/x-shockwave-flash" name="mpl" data="http://dotsub.com/static/players/portalplayer.swf">

<param name="swliveconnect" value="true"  />

<param name="allowFullScreen" value="true" />

<param name="allowScriptAccess" value="always" />

<param name="flashvars" value="mediauri=/media/b1691c89-f9cd-474a-b1a2-32dbaf222065/em/flv/en&amp;screenshoturi=/media/b1691c89-f9cd-474a-b1a2-32dbaf222065/p&amp;mediaDuration=11000&amp;lang=fre_fr "/>
<object height="347" width="420" type="video/x-flv" data="http://dotsub.com/media/b1691c89-f9cd-474a-b1a2-32dbaf222065/em/flv/en" >
<object height="347" width="420" type="video/ogg" data="http://media.w3.org/2009/02/screencast-transcriber.ogv">
<object height="347" width="420" type="video/avi" data="http://media.w3.org/2009/02/screencast-transcriber.avi">
<img src="/~dom/2009/transcriber.jpg" alt="Screenshot of transcriber in action" width="315" height="305" />
</object>
</object>
</object>
</object>
<p>(also available as <a href="http://media.w3.org/2009/02/screencast-transcriber.ogv">Ogg/Theora</a>, with a <a href="http://media.w3.org/2009/02/screencast-transcriber.xml">Timed Text transcription</a>)</p>

<p>Transcriber is already pretty good as is, but there are two improvements I could see to such a tool that would make it even better:</p>
<ul>
<li>provide auto-completion of words, both from existing dictionaries, and from the words already used in the transcription (probably with a priority to the latter);</li>
<li>work directly with video, and show video with subtitles live, the same way subtitle editor does &#8211; this provides a nice instantaneous feedback that is quite useful in this rather laborious effort;</li>
</ul>
<p>But even with a nice tool, transcription is a very tedious work; the purely transcription part (i.e. typing what you&#8217;re hearing) is probably the worse &#8211; the synchronizing part could almost made fun by turning it into a video game of some sort&hellip;</p>
<p>Clearly, having a speech recognition engine doing a first pass at the transcription would be incredibly useful; I didn&#8217;t find any ready to use (and open source) package to do for a French track, but in the process of looking for one, I stumbled on a few interesting projects:</p>
<ul>
<li><a href="http://www.voxforge.org/home/about">VoxForge</a> which collects free voice samples to create voice profiles that can then be used by open source speech recognition projects; I contributed a couple of French samples, although the Java applet they&#8217;re using kept bugging, making the process much less easy than it should be;</li>
<li>and related to it, <a href="http://librivox.org/">LibriVox</a> which is set to create a free and community-based library of audio books; quite appealing, although I found the process for getting started a bit too intimidating &#8211; I think an even more open system where anyone could contribute any reading from a very large list of possible texts would bring much more content (in a classical <a href="http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/">Cathedral and Bazaar</a> fashion).</li>
</ul>
<p>Back to transcription &#8211; I didn&#8217;t measure how long it took me to transcribe the one hour long track, but at least 3 or 4 times that duration; clearly this is an exercice I&#8217;d do myself again only for much shorter content; but then, people are much more likely to watch much shorter content as well, so that&#8217;s probably a reasonable assumption.</p>
<p>Beyond accessibility, I found the following interesting benefits in transcribing my own presentation</p>
<ul>
<li>first, I re-heard the entirety of it, and it made me look at what had changed since then, what still holds and what doesn&#8217;t any more;</li>
<li>it gave me a chance to analyse my own public speaking; I don&#8217;t know if that&#8217;s really a benefit, because it really highlighted a bunch of annoying speech tics, some twisted sentences, etc. But even if it hurts my ego somewhat, I&#8217;m hoping it can help me reduce some of these bad habits&hellip;</li>
<li>I got a chance to correct in the transcript some rather obvious mistakes I made while talking (using &#8220;computers&#8221; where I meant &#8220;phones&#8221; for instance); I&#8217;m sure there are conventions on how to express this &#8211; I used &#8220;[phones]&#8220;;</li>
<li>generally speaking, having a text transcript of the video offers a bunch of creative usage of that new text for further manipulation; e.g. here is the <a href="http://www.wordle.net/">Wordle</a> of the transcript of the video:<br />
<a href="/~dom/2009/wordle-parisweb.png"><img src="/~dom/2009/wordle-parisweb-sm" alt="Cloud of words taken from the audio track of the video" width="200" height="122" /></a>.</li>
</ul>
<p>And more importantly, this was a trigger for me to look more into the video / text synchronization questions, which will be the <a href="http://people.w3.org/~dom/archives/2009/02/synchronizing-text-and-videosynchronizing-text-and-video/">topic of my next blog entry</a> in this series.</p>]]></content:encoded>
			<wfw:commentRss>http://people.w3.org/~dom/archives/2009/02/diving-in-transcription/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
<enclosure url="http://dotsub.com/media/b1691c89-f9cd-474a-b1a2-32dbaf222065/em/flv/en" length="1058079" type="video/x-flv" />
<enclosure url="http://media.w3.org/2009/02/screencast-transcriber.ogv" length="172032" type="video/ogg" />
<enclosure url="http://media.w3.org/2009/02/screencast-transcriber.avi" length="381882" type="video/x-msvideo" />
		</item>
		<item>
		<title>Exploring the world of Web video</title>
		<link>http://people.w3.org/~dom/archives/2009/02/exploring-the-world-of-web-video/</link>
		<comments>http://people.w3.org/~dom/archives/2009/02/exploring-the-world-of-web-video/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 14:33:20 +0000</pubDate>
		<dc:creator>Dom</dc:creator>
				<category><![CDATA[Mobile Web]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[Work environment]]></category>

		<guid isPermaLink="false">http://people.w3.org/~dom/?p=190</guid>
		<description><![CDATA[A colleague of mine recently pointed me to Michael Wesch&#8217;s great and inspiring anthropological introduction to YouTube, which made me curious about the use of video as an expression mechanism on the Web.
Coupling this with my recent upgrade in the camcorder world to a fully digital device, and the early results of the Video in [...]]]></description>
			<content:encoded><![CDATA[<p>A colleague of mine recently pointed me to <a href="http://www.youtube.com/watch?v=TPAO-lZ4_hU">Michael Wesch&#8217;s great and inspiring <cite>anthropological introduction to YouTube</cite></a>, which made me curious about the use of video as an expression mechanism on the Web.</p>
<p>Coupling this with my recent upgrade in the camcorder world to a fully digital device, and the early results of the <a href="http://www.w3.org/2008/WebVideo/">Video in the Web activity</a> W3C started a year ago, I had to start playing in this area to understand it better.</p>

<p>As a starting point, I thought that I would use the <a href="http://www.dailymotion.com/parisweb/parisweb/video/x4lzho_bonnes-pratiques-du-web-mobile_tech">video of the presentation I made to ParisWeb back in 2007</a> on the Mobile Web Best Practices, also <a href="http://videos.paris-web.fr/2007/">available un-flashed on ParisWeb servers</a> &#8211; usefully made available in a <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed">by-nc-sa Creative Commons license</a>.</p>

<p>One thing that I needed to take into account, but was also a driver for this exploratory work, is that we are about to adopt a W3C internal policy that we can only publish media on-line if we ensure a minimum level of accessibility &#8211; at this time, this minimum level requires providing a full transcript of any material.</p>

<p>This post serves as an introduction to my adventures in the hazardous world of Web videos, where you&#8217;ll find me finding my way:</p>
<ul>
<li>in the <a href="http://people.w3.org/~dom/archives/2009/02/diving-in-transcriptiondiving-in-transcription/">world of transcription, and the tools available to that end on linux</a>,</li>
<li>in the <a href="http://people.w3.org/~dom/archives/2009/02/synchronizing-text-and-videosynchronizing-text-and-video/">formats for publishing and associating the transcripts with the video</a>,</li>
<li>the <a href="http://people.w3.org/~dom/archives/2009/02/the-beauty-of-htmlmediaelementthe-beauty-of-htmlmediaelement/">proposed HTMLMediaElement DOM Interface</a> to make it possible to synchronize events with media playing, adding a pinch of JQuery, RDFa and Media Fragment to taste.</li>
</ul>
<p>At the end of these stories, you will join me in rejoicing in front of a <a href="http://www.w3.org/2009/02/presentation-viewer/parisweb2007-dom.html">synchronized, close-captioned and annotated video and slides presentations viewer for your browser</a> &#8211; if you browser lives sufficiently on the edge, that is (which I think at this time means specifically Firefox 3.1 beta), and if you&#8217;re patient enough to deal with video operations on a 85 MB video. And if you speak or read French.</p>
<p>And if you&#8217;re not patient enough to go past these obstacles, I have prepared a <a href="http://dotsub.com/view/ed3cbe9c-07d1-45fc-bd76-2d0d58870e0e">screencast of the system in action</a>:</p>
<object  height="347" width="420" type="application/x-shockwave-flash" name="mpl" data="http://dotsub.com/static/players/portalplayer.swf">
<param name="swliveconnect" value="true"  />
<param name="allowFullScreen" value="true" />
<param name="allowScriptAccess" value="always" />
<param name="flashvars" value="mediauri=/media/ed3cbe9c-07d1-45fc-bd76-2d0d58870e0e/m/flv/en&amp;screenshoturi=http://dotsub.com/media/ed3cbe9c-07d1-45fc-bd76-2d0d58870e0e/p&amp;mediaDuration=38000&amp;lang=eng "/>
<object height="347" width="420" type="video/x-flv" data="http://dotsub.com/media/ed3cbe9c-07d1-45fc-bd76-2d0d58870e0e/m/flv/e" ></object>
</object>
<p>Transcript:</p>
<blockquote title="Transcript of the screencast of a presentation viewer in HTML">
<p>[the screen shows a Web page in a browser, split in 4 zones]</p>
<p>This is a screencast of a presentation viewer written in HTML and Javascript.</p>
<p>You can see here [on the top left corner] the area where the video will appear,
here [on the top right corner] the slides that will accompany the video presentation,
and there [on the bottom left corner] a table of contents.</p>
<p>If I start the video here [clicking on the play control of the video],
you can see the closed captions appearing below the video.</p>
<p>And then I can navigate in the video and the presentation using the table of content.</p>
<p>And you can see how the video and the slides get updated live,
and I can even have side notes appearing on the side [bottom right corner] of the screen.</p>
</blockquote>
<p>(also available as <a href="http://media.w3.org/2009/02/presentation-viewer-screencast.ogv">Ogg/Theora video</a> with a <a href="http://media.w3.org/2009/02/presentation-viewer-screencast.xml">Timed Text transcript</a>.)</p>]]></content:encoded>
			<wfw:commentRss>http://people.w3.org/~dom/archives/2009/02/exploring-the-world-of-web-video/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://dotsub.com/media/ed3cbe9c-07d1-45fc-bd76-2d0d58870e0e/m/flv/en" length="2433090" type="video/x-flv" />
<enclosure url="http://media.w3.org/2009/02/presentation-viewer-screencast.ogv" length="688128" type="video/ogg" />
		</item>
		<item>
		<title>Microblogging</title>
		<link>http://people.w3.org/~dom/archives/2009/01/microblogging/</link>
		<comments>http://people.w3.org/~dom/archives/2009/01/microblogging/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 03:52:44 +0000</pubDate>
		<dc:creator>Dom</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[Work environment]]></category>

		<guid isPermaLink="false">http://people.w3.org/~dom/?p=168</guid>
		<description><![CDATA[In case it wasn&#8217;t clear from the past three entries posted here, I have started to microblog on Identi.ca &#8211; the open version of Twitter. I&#8217;m still trying to figure out whether I should have my posts also mirrored on twitter, where most of other microbloggers I know are gathered &#8211; oh for openmicroblogging in [...]]]></description>
			<content:encoded><![CDATA[<p>In case it wasn&#8217;t clear from the past three entries posted here, I have <a href="http://identi.ca/dontcallmedom">started to microblog</a> on Identi.ca &#8211; the open version of Twitter. I&#8217;m still trying to figure out whether I should have my posts also mirrored on twitter, where most of other microbloggers I know are gathered &#8211; oh for <a href="http://openmicroblogging.org/">openmicroblogging</a> in Twitter!</p>
<p>I had started aggregating my microblogs on this blog through <a href="http://projects.radgeek.com/feedwordpress/">feedwordpress</a>, but found the results too noisy &#8211; in particular since this blog is syndicated on the <a href="http://www.w3.org/2007/08/w3t-planet/">W3C Team blogs&#8217; galaxy</a> where the microblogs would end up filling all the entries. I&#8217;m still looking into finding a good way to show my microblogs on this site, though; for the time being, they are a link away.</p>
<p>Note that Twitter doesn&#8217;t think my name can contain more than 20 characters &#8211; a curious echo to a <a href="http://www.nimbustier.net/blogs/2008/11/delit-dexces-de-nom-chez-airfrance">similar problem I experienced with Air France</a>.</p>
<p>We&#8217;ll see how that microblogging experiment works out; I had already been using Twitter from time to time on the <a href="http://twitter.com/mobiweb">mobiweb account</a> without much regularity, but from my short experimentation, I think a personal microblog has more chances to get used.</p>]]></content:encoded>
			<wfw:commentRss>http://people.w3.org/~dom/archives/2009/01/microblogging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trying tiny tiny rss as an on-line RSS reader</title>
		<link>http://people.w3.org/~dom/archives/2008/10/trying-tiny-tiny-rss-as-an-on-line-rss-reader/</link>
		<comments>http://people.w3.org/~dom/archives/2008/10/trying-tiny-tiny-rss-as-an-on-line-rss-reader/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 08:15:21 +0000</pubDate>
		<dc:creator>Dom</dc:creator>
				<category><![CDATA[Work environment]]></category>

		<guid isPermaLink="false">http://people.w3.org/~dom/?p=143</guid>
		<description><![CDATA[As an avid RSS feeds user, I have been using Liferea on my desktop for quite a few years, but have always been frustrated that I couldn&#8217;t synchronize seamlessly its state (i.e. the feeds I have read or not, the feeds I have subscribed on unsubscribed to) across my computers, and even less so to [...]]]></description>
			<content:encoded><![CDATA[<p>As an avid RSS feeds user, I have been using <a href="http://liferea.sourceforge.net/">Liferea</a> on my desktop for quite a few years, but have always been frustrated that I couldn&#8217;t synchronize seamlessly its state (i.e. the feeds I have read or not, the feeds I have subscribed on unsubscribed to) across my computers, and even less so to my mobile phone.</p>
<p>Of course, I could have been using an on-line RSS reader and then have had the state preserved on the server-side, but I had always refrained from doing so for two main reasons:</p>
<ul>
<li>I am quite reluctant to share the list of feeds I&#8217;m reading and the news items I&#8217;m most interested in with on-line services with scary privacy policies;</li>
<li>I am using my RSS reader often enough that I feared an on-line application wouldn&#8217;t fit my usage habits, in particular in terms of keyboard navigation through the feeds.</li>
</ul>
<p>The ideal solution for me would be to use Liferea and have it synchronized with an on-line service I could reasonably trust.</p>
<p>I&#8217;m not there quite yet, but my current situation has improved and the future is looking promising.</p>
<p>First, I learnt that one of the Google&#8217;s Summer of Code projects this year was on bringing capabilities to Liferea to synchronize its entire state <a href="http://liferea.blogspot.com/search/label/Google%20Reader">with Google RSS Reader</a>, and it looks like the project was successful and has been integrated in Liferea&#8217;s development branch.</p>
<p>But while I was researching this, I also read the suggestion in a <a href="http://liferea.blogspot.com/2008/09/finished-gsoc-project.html">comment on that success</a> to make it work with Tiny Tiny RSS, which I hadn&#8217;t heard about before.</p>
<p>It turns out that <a href="http://tt-rss.org/">Tiny Tiny RSS</a> is an installable on-line RSS reader (which alleviates any privacy concern I might have had), with a fairly powerful AJAX interface that makes it quite usable on the desktop, and which also provides a mobile-usable interface.</p>
<p>I have been using for the the past three weeks, and I must say I&#8217;m pretty happy about it; the interface isn&#8217;t always as reactive as I would like it to be, and it sometimes messes up the rendering of some entries, so it isn&#8217;t perfect, but it certainly is good enough for me to keep using it for the foreseeable future.</p>
<p>And maybe at some point, synchronization with Tiny Tiny RSS with land in a released version of Liferea, at which point I would probably switch back to it &#8211; unless the javascript performance progress that desktop browsers promise us make this not even useful?</p>]]></content:encoded>
			<wfw:commentRss>http://people.w3.org/~dom/archives/2008/10/trying-tiny-tiny-rss-as-an-on-line-rss-reader/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A bright eclipse</title>
		<link>http://people.w3.org/~dom/archives/2007/07/a-bright-eclipse/</link>
		<comments>http://people.w3.org/~dom/archives/2007/07/a-bright-eclipse/#comments</comments>
		<pubDate>Fri, 06 Jul 2007 07:05:19 +0000</pubDate>
		<dc:creator>Dom</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Work environment]]></category>

		<guid isPermaLink="false">http://people.w3.org/~dom/archives/2007/07/a-bright-eclipse/</guid>
		<description><![CDATA[Most of the Web development I work on is, for good or for worse, using PHP &#8211; my natural preference would go to coding in Python, but PHP is what was and is available on the W3C servers, and I&#8217;ve become much more fluent in it than in any other programming language.

One of the most [...]]]></description>
			<content:encoded><![CDATA[<p>Most of the Web development I work on is, for good or for worse, using PHP &#8211; my natural preference would go to coding in Python, but PHP is what was and is available on the W3C servers, and I&#8217;ve become much more fluent in it than in any other programming language.</p>

<p>One of the most annoying things to me with PHP (at least with PHP4, I haven&#8217;t really worked with PHP5 yet) is how clumsy the object model is and how lame the API appears: after more than 7 years of continuous development in PHP, I still have difficulties remembering the name of very classical functions, or when I do, I can&#8217;t remember the order of the arguments &#8211; the functions dedicated to arrays are a typical example of these, probably because they didn&#8217;t have a well-known C ancestor, and thus were likely designed on the fly by the early PHP creators.</p>

<p>Also, I have only recently started to use <a href="http://www.phpdoc.org/">phpDocumentor</a>, a rather powerful package that allows to create nice documentation for PHP projects, to the (unavoidable) cost of following the classical JavaDoc documentation style. But once this documentation gets created, I felt really disappointed that the effort put in it couldn&#8217;t be used directly while developing without having to navigate through it in my browser.</p>

<p>The obvious answer to these problems is to use an <abbr title='Integrated Development Environment'>IDE</abbr>, but the past few times I had been looking, I didn&#8217;t find anything very exciting for PHP development on linux, and thus have been using Emacs with mod_php for many years.</p>

<p>But my last investigation of the topic, motivated by a few attempts to code in Java for the <a href="http://www.w3.org/2005/MWI/BPWG/Group/TaskForces/Checker/">mobileOK checker new generation</a>, was the good one: the oh-so well-known <a href="http://www.eclipse.org/">Eclipse IDE</a> has a &#8220;PHP perspective&#8221; (in Eclipse jargon, a module to handle PHP development) that just reached version 1.0: <a href="http://www.eclipse.org/pdt/">PDT, standing for PHP Development Tools</a>.</p>

<p>I first tried to get it to run on the version of Eclipse provided with Ubuntu, but quickly ran into dependencies hell &#8211; but given that this attempt just followed the release of a new version of both Eclipse and PDT, I can&#8217;t say, retrospectively that I am too surprised. So I eventually opted for the <a href="http://europa-mirror1.eclipse.org/tools/pdt/downloads/?release=S20070401-RC3">all in one package</a> made available, and have been happily experimenting with it for the past few days.</p>

<p>My general impression is extremely good; I don&#8217;t have to think anymore to remember my function names or my classes definitions, syntax errors are highlighted in a much more reliable fashion than they ever were in Emacs, and the tools to navigate through the code or create documentation are really practical and useful.</p>

<p>I still have to figure how to get better keyboard navigation &#8211; I still have to use the mouse to do e.g. CVS operations, which could be a back-to-zero problem shouldn&#8217;t I find the proper way to configure this. The thing is, there is one commonality between Eclipse and Emacs, they are full-blown operating systems in the guide of editors or IDE&#8230;</p>]]></content:encoded>
			<wfw:commentRss>http://people.w3.org/~dom/archives/2007/07/a-bright-eclipse/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Offline Web cache with Squid</title>
		<link>http://people.w3.org/~dom/archives/2006/09/offline-web-cache-with-squid/</link>
		<comments>http://people.w3.org/~dom/archives/2006/09/offline-web-cache-with-squid/#comments</comments>
		<pubDate>Mon, 18 Sep 2006 13:03:31 +0000</pubDate>
		<dc:creator>Dom</dc:creator>
				<category><![CDATA[Work environment]]></category>

		<guid isPermaLink="false">http://people.w3.org/~dom/archives/2006/09/offline-web-cache-with-squid/</guid>
		<description><![CDATA[One of the nice properties of HTTP as a protocol is that it includes a very well-thought caching protocol, which allows for proxies and caches to serve as intermediary between the authoritative server and the end-user client.
While this is often used either in big proxies set up where one proxy caches results for a large [...]]]></description>
			<content:encoded><![CDATA[<p>One of the nice properties of HTTP as a protocol is that it includes a very well-thought caching protocol, which allows for proxies and caches to serve as intermediary between the authoritative server and the end-user client.</p>
<p>While this is often used either in big proxies set up where one proxy caches results for a large set of clients, or at a micro-level where a given user agent keeps some set of resources in its private cache, I&#8217;ve found it much more useful to set up a full cache for my laptop that allows to do transparently off-line browsing.</p>
<p>What is more irritating than being off-line and not having access to all these pages you access so frequently? Why should I need to be connected to browser the <a href="http://www.w3.org/TR/">W3C specifications</a>, which, once they have reached the Recommendation status, pretty much don&#8217;t change at all?</p>
<p>There are several software packages that can be used as proxy cache, but I have found them to be more often faulty in the way they interact with HTTP than not. I&#8217;ve settled to use <a href="http://www.squid-cache.org/">Squid</a> for the past few months with really good results; by default, Squid is configured to handle the big proxy-cache use case rather than my offline browsing one. So here is my recipe to make Squid a more approriate choice for this use case:</p>
<ol>
<li><del>you probably want some long time to live for the cached objects, so that they don&#8217;t get removed too quickly from your cache: to set the maximum time to live to one year, you need to set the last parameter of <code>refresh_pattern</code> to 525600; my own setting is: <code>refresh_pattern .               0       40%     525600</code> </del><ins>(not a good idea, <a href="http://people.w3.org/~dom/archives/2006/09/offline-web-cache-with-squid/#comment-19161">apparently</a>)</ins></li>
<li>you also need to say how big you want your cache to grow up to; I&#8217;ve set it to 500 Mo with <code>cache_dir ufs /var/spool/squid 500 16 256</code> &mdash; I would have set a higher bar if my disk wasn&#8217;t getting so full already</li>
</p>
<li>Squid has a special mechanism to be used as offline cache, which is activated by the squidclient tool: <kbd>/usr/bin/squidclient mgr:offline_toggle</kbd></li>
<li>by default, that command needs a password; to make this available by anyone on localhost without password, add the line <kbd>cachemgr_passwd none offline_toggle</kbd> in the configuration file</li>
<li>to get Squid in this offline mode automatically when you lose your network connection, I&#8217;ve added in my <code>/etc/network/if-up.d/</code> directory the following script (make sure to make it executable):
<pre><code>#!/bin/sh
# Quit if we're called for the loopback
if [ "$IFACE" = lo ]; then
        exit 0
fi

# make sure the state is OFF
if [ -z "`/usr/bin/squidclient mgr:offline_toggle|grep OFF`" ]
        then /usr/bin/squidclient mgr:offline_toggle ;
fi</code></pre>
and similary in <code>/etc/network/if-down.d/</code>:
<pre><code>#!/bin/sh
# Quit if we're called for the loopback
if [ "$IFACE" = lo ]; then
        exit 0
fi

# make sure the state is ON
if [ -z "`/usr/bin/squidclient mgr:offline_toggle|grep ON`" ]
        then /usr/bin/squidclient mgr:offline_toggle ;
fi</code></pre></li>
</ol>
<p>Et voilà! No more messing with offline and online modes in browsers, no more arcane commands to launch, everything just happens automatically.</p>]]></content:encoded>
			<wfw:commentRss>http://people.w3.org/~dom/archives/2006/09/offline-web-cache-with-squid/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Using a Treo 650 PDA with Debian on a Dell</title>
		<link>http://people.w3.org/~dom/archives/2006/01/using-a-treo-650-pda-with-debian-on-a-dell/</link>
		<comments>http://people.w3.org/~dom/archives/2006/01/using-a-treo-650-pda-with-debian-on-a-dell/#comments</comments>
		<pubDate>Wed, 11 Jan 2006 12:57:56 +0000</pubDate>
		<dc:creator>Dom</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Gnome desktop]]></category>
		<category><![CDATA[Mobile Web]]></category>

		<guid isPermaLink="false">http://people.w3.org/~dom/archives/2006/01/using-a-treo-650-pda-with-debian-on-a-dell/</guid>
		<description><![CDATA[
I just got a brand new PDA-phone last Monday, a Tréo 650 running PalmOS.
I have been reluctant to cell phones for a long while, finding them rather invasive: when you own a cell phone, people expect to be able to reach you on it pretty much all the time and everywhere. At some point, the [...]]]></description>
			<content:encoded><![CDATA[<p class="illustration"><a href="/~dom/wp-content/treo.jpg" title="Larger version of the photo of my treo"><img src="/~dom/wp-content/treo-thumb.jpg" alt="My Treo 650 showing this very web page" width="64" height="120" /></a></p>
<p>I just got a brand new <acronym title="Personal Digital Assistant">PDA</acronym>-phone last Monday, a Tréo 650 running PalmOS.</p>
<p>I have been reluctant to cell phones for a long while, finding them rather invasive: when you own a cell phone, people expect to be able to reach you on it pretty much all the time and everywhere. At some point, the trade off between this cost and the advantage of being able to call some people all the time and everywhere tipped the balance, and I finally decided to get a cell phone for my personal usage.</p>
<p>With this new toy, not only am using now a cell phone for my professional usage (the primary reason behind it), I&#8217;m also jumping into the PDA adventure; again, I&#8217;ve never been really convinced by the need to get a PDA; I organize most of my work using my computer, and even though I move quite a bit for my work, the need to have access to all my data all the time has never appeared so urgent to me.</p>
<p>But even if the primary reason to couple my cell phone with a PDA was to get my hands on some real <a href="http://people.w3.org/~dom/archives/2005/09/new-responsibilities/">Mobile Web</a> experiences [Note to self: this site looks horrible on my PDA], I&#8217;m hoping to also make this an opportunity to give a shot at using a PDA for real, with access to my calendar, my email messages and a Web browser. Maybe the few times I remember having thought &#8220;too bad I can&#8217;t look <var>this</var> up&#8221; combined with the geeky joy of using a new gadget will make me a real adept of the digital life on the move?</p>
<h4>Debian and Bluetooth</h4>
<p>The first step in that direction was to make the said PDA to work well in cooperation with my Dell laptop (Latitude D600) running Debian, and where I keep most of the data relevant to my PDA using Gnome and Evolution.</p>
<p>Some part of this process were fairly easy, but way too many were incredibly difficult compared to the task.</p>
<p>Setting up my laptop to talk to my PDA using bluetooth was really simple, mostly thanks to <a href="http://www.newt.com/debian/treo650.html">Bill Wohler&#8217;s complete description</a> of the steps needed to get Debian to work with the Treo. I guess I hope at some point most of this configuration work could be automated using hardware detection (e.g. <a href="http://freedesktop.org/Software/hal">HAL</a>), but the current cost of editing a few text files is more than acceptable to me.</p>
<p>Getting them to talk together means that:</p>
<ul>
<li>they can detect each other and authorize each other as Bluetooth devices</li>
<li>I can use my laptop as a network gateway for my PDA, thus making it possible to test all the network operations without eating my GPRS paid time</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://people.w3.org/~dom/archives/2006/01/using-a-treo-650-pda-with-debian-on-a-dell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Macroformats</title>
		<link>http://people.w3.org/~dom/archives/2005/12/macroformats/</link>
		<comments>http://people.w3.org/~dom/archives/2005/12/macroformats/#comments</comments>
		<pubDate>Wed, 14 Dec 2005 14:41:08 +0000</pubDate>
		<dc:creator>Dom</dc:creator>
				<category><![CDATA[Work environment]]></category>

		<guid isPermaLink="false">http://people.w3.org/~dom/?p=88</guid>
		<description><![CDATA[While microformats are all about embedding data in HTML, I thought that macroformats could be a good way to talk about transforming existing data into HTML. I hear you say this didn&#8217;t need a name, it existed before; but we all know this is all about naming in the end&#8230;
So, here is on the &#8220;macroformat&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>While microformats are all about embedding data in HTML, I thought that macroformats could be a good way to talk about transforming existing data into HTML. I hear you say this didn&#8217;t need a name, it existed before; but we all know this is all about naming in the end&#8230;</p>
<p>So, here is on the &#8220;macroformat&#8221; technique that I use to keep up to date the list of projects I&#8217;m working on at this time: it&#8217;s based on an iCalendar todo list that I maintain using <a href="http://www.gnome.org/projects/evolution/">Evolution</a>.</p>
<p>The idea is that each of the todo item is in fact a project of mine, and is categorized into a simple HTML page depending on its iCalendar characteristics as either &#8220;Planned&#8221;, &#8220;In Progress&#8221;, &#8220;Some day pile&#8221; or &#8220;Past&#8221;. It relies on <a href="http://www.w3.org/2002/12/cal/ical2rdf.pl">iCal2RDF</a> to parse the iCalendar into RDF, which I then transform into XHTML using a <a href="/~dom/2005/progress.xsl">simple XSLT stylesheet</a>.</p>
<p>To have this happening automatically when I modify the todo list with Evolution, I&#8217;m using <a href="http://freshmeat.net/projects/dnotify/">dnotify</a> to watch the directory where the Todo list sits with the following command: <kbd>dnotify --modify <var>~/.evolution/tasks/local/system/</var> -e <var>~/bin/update-tasks</var></kbd> which is started with my graphical login session. <code>update-tasks</code> is a simple shell script that does the right thing:</p>
<pre><code>/usr/bin/perl ical2rdf.pl -xnames=<var>http://www.example.org/dom-todos/#</var> <var>~/.evolution/tasks/local/system/</var> |
 xsltproc progress.xsl - > <var>InProgress.html</var></code></pre>
<p>and then publishes it to the W3C Web site (in a private area) using CVS.</p>]]></content:encoded>
			<wfw:commentRss>http://people.w3.org/~dom/archives/2005/12/macroformats/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Integrating a new URIs scheme handler to Gnome and Firefox</title>
		<link>http://people.w3.org/~dom/archives/2005/09/integrating-a-new-uris-scheme-handler-to-gnome-and-firefox/</link>
		<comments>http://people.w3.org/~dom/archives/2005/09/integrating-a-new-uris-scheme-handler-to-gnome-and-firefox/#comments</comments>
		<pubDate>Wed, 14 Sep 2005 22:40:22 +0000</pubDate>
		<dc:creator>Dom</dc:creator>
				<category><![CDATA[Gnome desktop]]></category>

		<guid isPermaLink="false">http://people.w3.org/~dom/?p=83</guid>
		<description><![CDATA[As DanC mentioned, we&#8217;ve been playing with configuring Firefox in Gnome to use tel: URIs with our Vonage service; in short, this means you can click on a link à la tel:+1.555.123.4567 and get your Vonage phone calls the said the number. In practice, your phone starts ringing, and once you pick it up, it [...]]]></description>
			<content:encoded><![CDATA[<p>As <a href="http://www.advogato.org/person/connolly/diary.html?start=34">DanC mentioned</a>, we&#8217;ve been playing with configuring Firefox in Gnome to use <code>tel:</code> URIs with our <a href="http://www.vonage.com/">Vonage service</a>; in short, this means you can click on a link à la <a href="tel:+1.555.123.4567">tel:+1.555.123.4567</a> and get your Vonage phone calls the said the number. In practice, your phone starts ringing, and once you pick it up, it dials the said number.</p>
<p>Most of the actual work is done by <a href="https://secure.click2callu.com">Click 2 Call</a> which offers a Web interface to your Vonage line. But getting integrated nicely in your browsing/desktop experience is fun.</p>
<p>So, how do you get a new URI scheme to be handled by Firefox or Gnome?</p>
<p>Well, first, getting a new URI scheme to be handled by Firefox is equivalent as getting it handled for Gnome, since for some reason, Firefox uses the generic <code>gnome-open</code> command to handled unknown URI schemes. I haven&#8217;t been able to find how or why, so I don&#8217;t know if that&#8217;s Debian specific or if this is true for any Firefox running on Linux et al.</p>
<p>Getting a new URI handler in Gnome is not necessarily well-documented, but once you know, it&#8217;s very easy; the set of three commands below is all that&#8217;s needed to get my local script <a href="/~dom/2005/vonage-call">vonage-call</a> to be added as the handler for <code>tel:</code> URIs:</p>
<p><kbd>gconftool-2 -t string -s /desktop/gnome/url-handlers/tel/command "bin/<a href="/~dom/2005/vonage-call">vonage-call %s</a>"</kbd><br />
<kbd>gconftool-2 -s /desktop/gnome/url-handlers/tel/needs_terminal false -t bool</kbd><br />
<kbd>gconftool-2 -t bool -s /desktop/gnome/url-handlers/tel/enabled true</kbd></p>
<p>The same kind of commands allows to add any kind of URI handler, like my <a href="http:////lists.w3.org/Archives/Public/uri/2002Dec/0005.html">MID dereferencer</a>,  my <a href="http://www.nimbustier.net/blogs/2003/04/jdm_5">urn:isbn dereferencer</a> or the <a href="impressive.net/people/gerald/2000/12/edit-bookmarklet.html">x-edit bookmarklet hack</a>.</p>

<p>So, what does this <code>vonage-call</code> script do? Well, most of the actual work is done by a simple curl call to the said Web interface; but I&#8217;ve added a bit of interfacing to be improve the look &amp; feel of the operation, using <code>zenity</code>, Gnome&#8217;s equivalent of xdialog.</p>
<p>So, when you call <code>vonage-call</code> without argument, you&#8217;re asked for a phone number to call:<br />
<img src="/~dom/2005/vonage-call-number2.png" alt="Screenshot of the dialog asking to enter the phone number to be called"  /></p>
<p>Once entered (or directly if you&#8217;ve followed a <code>tel:</code> link), you&#8217;re asked for confirmation :<br />
<img src="/~dom/2005/vonage-call-confirm.png" alt="Screenshot of the dialog asking confirmation for the call" /></p>
<p>And eventually, there is even a progress bar for the few seconds it takes to run the curl command:<br />
<img src="/~dom/2005/vonage-call-dialing.png" alt="Screenshot of the progress bar" /></p>
<p>To finalize the integration of this small script into the desktop, and following <a href="http://developers.sun.com/solaris/articles/integrating_gnome.html">Sun&#8217;s documentation on Gnome integration</a>, I&#8217;ve managed to add an entry in my Applications->Internet menu&#8230; with great pain, I must confess.</p>
<p>The key to be able to use a personalized menu per-User on gnome is to have the following file created
<code>.gnome2/vfolders/applications.vfolder-info</code></p>
<pre><code>
&lt;VFolderInfo>
  &lt;!-- path doesn't understand $HOME or ~/ ; maybe it would understand it as a relative path to $HOME? didn't test --&gt;
  &lt;WriteDir><var>/home/dom/</var>.gnome2/vfolders/applications&lt;/WriteDir>
&lt;/VFolderInfo>
</code></pre>
<p>This basically instructs Gnome that it can write into the said directory &mdash; make sure to actually create it (<kbd>mkdir -p .gnome2/vfolders/applications</kbd>) &mdash; when you try to personalize the menu with Nautilus; otherwise, you get a permission denied error, since Nautilus would try to modify the content of the directory defined at a higher level in <code>/etc/gnome-vfs-2.0/applications-all-users.vfolder-info</code>; once this is done (and despite the complete lack of documentation of this), you can use Nautilus to add (and probably remove) launchers in your menu. This is with Gnome 2.8; I&#8217;ve read that Gnome 2.12 fixes some of the menu-editing difficultiess, so this may be easier if you&#8217;re running a bleeding edge version.</p>
<p>A launcher in Gnome (and KDE) is a simple <code>.desktop</code> file that lists a <a href="http://www.freedesktop.org/wiki/Standards_2fdesktop_2dentry_2dspec">set of well-defined properties</a>; here is what I&#8217;ve used for my little script <code>vonage.desktop</code> that I placed in the directory created above, <code>.gnome2/vfolders/applications</code>:</p>
<pre><code>
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=Vonage caller
Comment=Call phone numbers using Vonage
Exec=<var>/home/dom/</var>bin/vonage-call
Icon=stock_landline-phone.png
Terminal=false
Type=Application
Categories=Application;Internet;
</code></pre>
<p>This can actually be created with the graphical interface, I think: right-click on your desktop, create a new launcher bound to the right command and selecting the right icon; once done, open the &#8220;Applications&#8221; virtual folder in Nautilus (either from the virtual &#8220;Start here&#8221; folder, or using the <code>applications-all-users://</code> URI (sigh!)), and copy your new launcher in it; the right thing should happen:
<img src="/~dom/2005/internet-menu.png" alt="List of items in the Internet menu in Gnome, with the Vonage caller script added" /></p>
<p>Well, that&#8217;s about it; there is still a bit too much of magic for my liking, but the fact that this is doable, and even fairly easy once you know the magic is already pretty sweet!</p>]]></content:encoded>
			<wfw:commentRss>http://people.w3.org/~dom/archives/2005/09/integrating-a-new-uris-scheme-handler-to-gnome-and-firefox/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Setting up a secure remote X session with gdm</title>
		<link>http://people.w3.org/~dom/archives/2005/09/setting-up-a-secure-remote-x-session-with-gdm/</link>
		<comments>http://people.w3.org/~dom/archives/2005/09/setting-up-a-secure-remote-x-session-with-gdm/#comments</comments>
		<pubDate>Wed, 14 Sep 2005 11:44:32 +0000</pubDate>
		<dc:creator>Dom</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Gnome desktop]]></category>

		<guid isPermaLink="false">http://people.w3.org/~dom/?p=85</guid>
		<description><![CDATA[After the video card in my desktop computer fried last week for some reasons unknown to me, I moved to use my laptop as the basis of my daily work environment for a few days. And now that my desktop is back in service, I&#8217;m thinking to move to a laptop-only mode. But this move [...]]]></description>
			<content:encoded><![CDATA[<p>After the video card in my desktop computer fried last week for some reasons unknown to me, I moved to use my laptop as the basis of my daily work environment for a few days. And now that my desktop is back in service, I&#8217;m thinking to move to a laptop-only mode. But this move is pending some hardware complements (e.g. a port replicator), and I decided that I should start using my laptop system right now rather than later; I&#8217;d rather not plug all my existing devices in the laptop since I would have to unplug them too frequently, so I&#8217;ve decided to transform at least temporarily my desktop in a simple X Terminal.</p>
<p>I toyed with the idea of using a solution based on VNC, which allows one to share a unique X Session on two or more computers, especially as Gnome includes a server (vino) easily configurable; but my tests with various clients (xtightvncserver, xvncserver, svncviewer) were quite inconclusive, the resulting experience being always very sluggish (limited by CPU, I think, which on a 1.60 GHz computer would be disappointing), and sometimes buggy (e.g. key press being repeated too many times). I probably should investigate further whether this is to be expected or due to some failure on my part&#8230;</p>
<p>Meanwhile, I decided to took the traditional X-over-the-network approach ; the default and well-deployed solution is to use XDMCP, which is really easy to set up when using Gnome login manager (gdm); the only problem is that XDMCP is really insecure (transmitting passwords on the clear), and although this would be mainly to run on my local wired network, I don&#8217;t want to rely on security through obscurity.</p>
<p>Unfortunately, it appears one cannot run XDMCP through ssh, since it relies on UDP traffic which apparently ssh can&#8217;t tunnel. So securing XDMCP is not directly easy.</p>
<p>I then found about sdm which basically does what I want: it acts as a graphical login manager, which instead of running a traditional X-session starts an ssh connection to your target host and launch your traditional X session manager there.</p>
<p>The only problem with that solution is that I don&#8217;t want to rely on another login manager but gdm, since it&#8217;s well integrated with Gnome; so instead, I quickly reimplemented the equivalent solution for GDM, which proved to be quite easy: I only had to add (in Debian) the two following files to get a new session type available from the GDM session menu under the name &#8220;SSH&#8221;.</p>
<p>The most important file is a simple shell script that will act as the X session manager: it asks graphically which host to connect to, asks the passphrase, connects through ssh and invokes the local x-session-manager. I placed it under <var>/usr/local/bin/ssh-session</var>:</p>
<pre><code>
#!/bin/bash

TARGETHOST=`zenity --title "Host to connect to" --entry --text "Enter the name of the host you want to log in to"`
#@@@ should probably get a user name too; I don't need it so didn't set it up that way
#@@@ should it do an ssh-add so the user doesn't have to enter its passphrase again?
SSH_ASKPASS=/etc/alternative/ssh-askpass /usr/bin/ssh -A -X -T -n "$TARGETHOST" /usr/bin/x-session-manager
</code></pre>
<p>(Ideally, the zenity call should include a list of servers, either taken from <var>.ssh/known_hosts</var>, or from a zeroconf lists of local servers that provide an ssh connection; too bad Zeroconf is still so little implemented on linux, but hopefully <a href="http://www.freedesktop.org/Software/Avahi">Avahi</a> should fix that in the near future)</p>
<p>The other file is the one responsible to linking that session manager from GDM; it&#8217;s a simple .desktop file, which I placed at<br />
<code>/etc/dm/Sessions/ssh.desktop</code>:</p>
<pre><code>
[Desktop Entry]
Encoding=UTF-8
Name=SSH
Comment=This session logs you into a remote host using ssh
Exec=/usr/local/bin/ssh-session
Type=Application
</code></pre>
<p>(Given that it relies on the existing Debian conventions, this should also work to start a remote KDE session through kdm.)</p>
<p>So now I can connect from my desktop directly into my laptop system, and the resulting experience is impressively good with a 100Mbs ethernet connection (on the 11 Mbs wireless connection, the result is much less pleasing) ; it doesn&#8217;t seem to take much CPU at all on the laptop either.</p>
<p><ins datetime="2006-01-17"><strong>Update</strong> (17 Jan 2006): As part of the <a href="http://bugzilla.gnome.org/show_bug.cgi?id=322155">Bug 322155</a> and with lots of helpful comments from Brian Cameron, I have produced a patch to make such a session a built-in in GDM, patch that has been committed to the CVS server.</ins></p>
]]></content:encoded>
			<wfw:commentRss>http://people.w3.org/~dom/archives/2005/09/setting-up-a-secure-remote-x-session-with-gdm/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Worldclock with gdesklets</title>
		<link>http://people.w3.org/~dom/archives/2005/09/wordclock-with-gdesklets/</link>
		<comments>http://people.w3.org/~dom/archives/2005/09/wordclock-with-gdesklets/#comments</comments>
		<pubDate>Thu, 08 Sep 2005 08:55:27 +0000</pubDate>
		<dc:creator>Dom</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Gnome desktop]]></category>

		<guid isPermaLink="false">http://people.w3.org/~dom/?p=81</guid>
		<description><![CDATA[Working with people around the world, I often ask myself what time is it where X is? How long Y will be available? Until when Z will be pestering me? Although there are plenty of web sites that give you that information (I particularly like the worldclock from time and date.com), this kind of information [...]]]></description>
			<content:encoded><![CDATA[<p>Working with people around the world, I often ask myself what time is it where X is? How long Y will be available? Until when Z will be pestering me? Although there are plenty of web sites that give you that information (I particularly like the <a href="http://www.timeanddate.com/worldclock/">worldclock from time and date.com</a>), this kind of information is something I want directly available on my desktop, especially when I&#8217;m using IRC &#8211; our primary mode of instant communication in W3C.</p>
<p>So, using a <a href="http://www.gnome.org/">Gnome desktop</a>, I installed a set of <a href="http://gdesklets.gnomedesktop.org/categories.php?func=gd_show_app&amp;gd_app_id=12">4 clocks on my desktop</a> set on the timezones of the people I work the most often with&#8230; Et voilà !</p>
<p><img src="/~dom/2005/worldclock.png" alt="4 clocks on my desktop" /></p>]]></content:encoded>
			<wfw:commentRss>http://people.w3.org/~dom/archives/2005/09/wordclock-with-gdesklets/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
