<?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>Lucas&#039; playground</title>
	<atom:link href="http://lucas.maystre.ch/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://lucas.maystre.ch/blog</link>
	<description>A random stream of useless informations ?</description>
	<lastBuildDate>Wed, 01 Sep 2010 16:47:56 +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>End-to-end arguments in system design</title>
		<link>http://lucas.maystre.ch/blog/?p=32</link>
		<comments>http://lucas.maystre.ch/blog/?p=32#comments</comments>
		<pubDate>Wed, 01 Sep 2010 16:46:47 +0000</pubDate>
		<dc:creator>Lucas Maystre</dc:creator>
				<category><![CDATA[CS 268]]></category>

		<guid isPermaLink="false">http://lucas.maystre.ch/blog/?p=32</guid>
		<description><![CDATA[This is a paper review for the course CS 268
J.H Saltzer, D.P. Reed, D.D. Clark, “End-to-end arguments in system design”, ACM Transactions on Computer Systems, Vol. 2, No. 4, November 1984, pp. 277-288
At a time when internet was emerging, this paper not only justifies some of the early design decisions that were taken at the time, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>This is a paper review for the course CS 268</strong></p>
<p>J.H Saltzer, D.P. Reed, D.D. Clark, “End-to-end arguments in system design”, <em>ACM Transactions on Computer Systems</em><span style="padding: 0px; margin: 0px;">,</span><span style="padding: 0px; margin: 0px;"> </span>Vol. 2, No. 4, November 1984, pp. 277-288</p>
<p>At a time when internet was emerging, this paper not only justifies some of the early design decisions that were taken at the time, but also provides a general justification for the “end-to-end argument”, as the authors name it. This argument, basically, advocates “moving functionality upwards in a layered system, closer to the application that uses the function”. It is first acknowledged that this idea had already been widely used, but in an intuitive way, without formal discussion nor recognition. The end-to-end argument is a very general one; it transcends networking systems, with many applications in other computer engineering domains. The authors even provide examples of usage of this argument in more general settings, an example being error-recovery over the phone, with a person asking its correspondent to repeat his sentence if there has been a problem on the line.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">At a time when internet was emerging, this paper not only justifies some of the early design decisions that were taken at the time, but also provides a general justification for the “end-to-end argument”, as the authors name it. This argument, basically, advocates “moving functionality upwards in a layered system, closer to the application that uses the function”. It is first acknowledged that this idea had already been widely used, but in an intuitive way, without formal discussion nor recognition. The end-to-end argument is a very general one; it transcends networking systems, with many applications in other computer engineering domains. The authors even provide examples of usage of this argument in more general settings, an example being error-recovery over the phone, with a person asking its correspondent to repeat his sentence if there has been a problem on the line.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">The argument’s justification is that if a function can be implemented completely only by the application standing at the end points, it is not possible to provide the function as a feature of the communication system. The function, in an incomplete version, might still be provided by the communication system, but only as a performance enhancement &#8211; which, the authors insist, remains an important aspect to consider when designing a system.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">After a review of different functions of distributed applications, such as delivery guarantees, secure transmission, in-order reception, the paper provides another very insightful example, outside of the networking domain: the RISC processor architecture.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Written more than 15 years ago, this paper has proved to be very influential. The end-to-end argument has received maybe the best justification through the exponential development of internet, made possible in large part because of its usage of this argument.At a time when internet was emerging, this paper not only justifies some of the early design decisions that were taken at the time, but also provides a general justification for the “end-to-end argument”, as the authors name it. This argument, basically, advocates “moving functionality upwards in a layered system, closer to the application that uses the function”. It is first acknowledged that this idea had already been widely used, but in an intuitive way, without formal discussion nor recognition. The end-to-end argument is a very general one; it transcends networking systems, with many applications in other computer engineering domains. The authors even provide examples of usage of this argument in more general settings, an example being error-recovery over the phone, with a person asking its correspondent to repeat his sentence if there has been a problem on the line.</div>
<p>The argument’s justification is that if a function can be implemented completely only by the application standing at the end points, it is not possible to provide the function as a feature of the communication system. The function, in an incomplete version, might still be provided by the communication system, but only as a performance enhancement &#8211; which, the authors insist, remains an important aspect to consider when designing a system. After a review of different functions of distributed applications, such as delivery guarantees, secure transmission, in-order reception, the paper provides another very insightful example, outside of the networking domain: the RISC processor architecture.</p>
<p>Written more than 15 years ago, this paper has proved to be very influential. The end-to-end argument has received maybe the best justification through the exponential development of internet, made possible in large part because of its usage of this argument.</p>
]]></content:encoded>
			<wfw:commentRss>http://lucas.maystre.ch/blog/?feed=rss2&amp;p=32</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Design Philosophy of the DARPA Internet Protocols</title>
		<link>http://lucas.maystre.ch/blog/?p=27</link>
		<comments>http://lucas.maystre.ch/blog/?p=27#comments</comments>
		<pubDate>Tue, 31 Aug 2010 04:16:05 +0000</pubDate>
		<dc:creator>Lucas Maystre</dc:creator>
				<category><![CDATA[CS 268]]></category>

		<guid isPermaLink="false">http://lucas.maystre.ch/blog/?p=27</guid>
		<description><![CDATA[This is a paper review for the course CS 268
David D. Clark, &#8220;The Design Philosophy of the DARPA Internet Protocols&#8221;, Proc. SIGCOMM &#8216;88, Computer Communication Review Vol. 18, No. 4, August 1988, pp. 106-114
This paper, written over twenty years ago by David D. Clark, who had at that time the architectural responsibility for TCP / [...]]]></description>
			<content:encoded><![CDATA[<p><strong>This is a paper review for the course CS 268</strong></p>
<p>David D. Clark, &#8220;The Design Philosophy of the DARPA Internet Protocols&#8221;, <em>Proc. SIGCOMM &#8216;88</em>, Computer Communication Review Vol. 18, No. 4, August 1988, pp. 106-114</p>
<p>This paper, written over twenty years ago by David D. Clark, who had at that time the architectural responsibility for TCP / IP in the DARPA Internet Program, tries to answer the following question: why has internet been designed the way it has? The author identifies one fundamental premiss : the goal was to design &#8220;a packet switched communications facility in which a number of distinguishable networks are connected together using packet communications processors called gateways which implement a store and forward packet forwarding algorithm&#8221;. From there, he presents a list of desired features, and shows how the priorities given to the different elements of this list shaped the design decisions at the time. He also explains why these priorities were given that way; for example, that survivability in the face of failure was given a higher priority over accountability seems natural when one thinks about the fact that its primary intended use was for the military.</p>
<p>It is very interesting to read this paper today, 22 years later, to see how things have evolved.  Some of the thoughts are still completely relevant nowadays, while other, in my opinion, have taken a different turn &#8211; the first thing that comes to mind is the quasi-monopole of TCP over any other type of service, even when considering delay-sensitive applications.</p>
<p>A strong idea that emerges from this paper, and is probably one of the main reasons of the persistence of this original design of internet, is the wide flexibility it has offered from the beginning. The author introduces the concept of “realization” to describe what we could call a particular snapshot of the internet. It is a fact that there have been completely different realizations throughout the last two decades, but yet, thanks to its amazing flexibility, the fundamental ideas and protocols behind internet haven&#8217;t had to evolve that much.</p>
]]></content:encoded>
			<wfw:commentRss>http://lucas.maystre.ch/blog/?feed=rss2&amp;p=27</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vim &#8211; starting from scratch</title>
		<link>http://lucas.maystre.ch/blog/?p=13</link>
		<comments>http://lucas.maystre.ch/blog/?p=13#comments</comments>
		<pubDate>Mon, 09 Nov 2009 13:07:21 +0000</pubDate>
		<dc:creator>Lucas Maystre</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://lucas.maystre.ch/blog/?p=13</guid>
		<description><![CDATA[As part of my internship at Open Systems, I had to develop on linux boxes without graphical user interface. I had therefore to setup an appropriate development workflow, whose central piece was, of course, the editor. After seeing a colleague performing some &#8220;magic&#8221; in Vim, I decided that this was going to be my editor [...]]]></description>
			<content:encoded><![CDATA[<p>As part of my internship at <a title="Open Systems AG" href="http://www.open.ch/">Open Systems</a>, I had to develop on linux boxes without graphical user interface. I had therefore to setup an appropriate development workflow, whose central piece was, of course, the editor. After seeing a colleague performing some &#8220;magic&#8221; in <a href="http://en.wikipedia.org/wiki/Vim_%28text_editor%29">Vim</a>, I decided that this was going to be my editor of choice. As I litterally started from zero, I thought it would be nice to share the resources that I found the most useful in learning Vim, and this is what this blog post is about.</p>
<p>First, some very basic notes on command line text editors. Vim (Vi IMproved) is, as its name suggests, the descendent of an editor called Vi. From what I&#8217;ve understood, Vi is no more in use nowadays, and Vim offers great improvements (e.g. redo something you undid) over Vi. There is a famous rivalry between Vim and <a href="http://en.wikipedia.org/wiki/Emacs">Emacs</a>, a competing editor, which I haven&#8217;t tried, but which might be an interesting alternative. I have to say, Vim is <strong>not intuitive</strong> for absolute beginners: you can&#8217;t just fire it up and expect to be able to edit your file. If you want a very simple and easy to use text editor, I can think of <a href="http://en.wikipedia.org/wiki/Nano_%28text_editor%29">nano</a> (a pico clone), which is far more intuitive than Vim.</p>
<p>Vim has a steep learning curve, but once you&#8217;re acquainted with it, you&#8217;ll find that the commands aren&#8217;t difficult to remember, and it will save you a ton of text edition time. Another advantage is its wide deployment. It is, as far as I know, a more or less standard tool in every POSIX-compliant operating system &#8211; including, for example, Mac OS X.</p>
<p>The most important thing to get at the beginning: Vim is a <em>modal</em> editor, where the two &#8220;most important&#8221; modes are</p>
<ol>
<li><em>command mode</em>: this is the &#8220;default&#8221; mode, the one you are in when you start Vim. It is the mode where you can the most effectively view and manipulate the document.</li>
<li><em>insert mode</em>: where you actually can type some text! Switch to insert mode by pressing <code>i</code> from the command mode. Return to command mode by hitting <code>ESC</code></li>
</ol>
<p><strong>A very deconcerting error</strong>, and certainly one you&#8217;ll make when you start (I can&#8217;t count how many times this happened to me) is to start typing something while in command mode. As nearly every key is associated to a command in this mode, this triggers a pseudo random batch of commands, and you will be totally lost! So beware, and learn to use undo (described below)</p>
<p>Here are the very, very few basic commands you need to know to get your head out of the water. You can open a file by typing <code>vim file_name</code>. Once you&#8217;re in Vim (in command mode):</p>
<ul>
<li><code>:q</code> exits the program</li>
<li><code>:q!</code> exits the program and discards changes</li>
<li><code>:w</code> saves the file</li>
<li><code>ESC</code> exits from insert mode and switches to command mode</li>
<li><code>i</code> switches to insert mode (you can then type some text)</li>
<li><code>u</code> undo</li>
</ul>
<p>Now here&#8217;s the list of the resources that helped me the most:</p>
<ul>
<li><a href="http://www.viemu.com/a-why-vi-vim.html">Why, oh WHY, do those #?@! nutheads use vi?</a> &#8211; an essay which explains the philosophy behind Vi/Vim. This is the article that convinced me to try it.</li>
<li>in your terminal, type <code>vimtutor</code> &#8211; it launches an interactive Vim tutorial, and it is an absolute MUST!</li>
<li><a href="http://www.derekwyatt.org/vim/vim-tutorial-videos/vim-novice-tutorial-videos/">Vim Novice Tutorial Videos</a> &#8211; Nice screencasts, might be a little long for some of you, but it&#8217;s fun and requires zero previous knowledge.</li>
<li><a href="http://vim.wikia.com/wiki/Vim_Tips_Wiki">Vim Tips Wiki</a> &#8211; One of my favorite Vim resource. It contains an impressive amount of information, in the form of a wiki.</li>
<li><a href="http://vim.runpaint.org/">Vim Recipes</a> &#8211; These &#8220;recipes&#8221; offer a result-oriented approach to Vim. It&#8217;s like a giant FAQ. It answers questions in the form &#8220;How do I navigate between files&#8221;, &#8220;How can I search / replace text?&#8221;, etc&#8230;</li>
<li><a href="http://lucumr.pocoo.org/2007/4/2/vim-as-development-environment">Vim as Development Environment</a> &#8211; A programmer explains how he sets up Vim (with topics such as syntax highlighting, &#8230;).</li>
<li><a href="http://jmcpherson.org/windows.html">Splits and multi-file editing</a> &#8211; having several files open side by side was one of my primary needs. This explains how to do it.</li>
<li><a href="http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html">Graphical vi-vim Cheat Sheet and Tutorial</a> &#8211; I love nice cheat sheets. This one is certainly one of the nicest you can find for Vim.</li>
<li><a href="http://users.physik.fu-berlin.de/~goerz/blog/refcards/#vim">Michael Goerz&#8217;s Refcard</a> &#8211; Another cheat sheet. Not really for beginners, but a good reference once you are already experienced.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://lucas.maystre.ch/blog/?feed=rss2&amp;p=13</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serialization issues with SimpleXML</title>
		<link>http://lucas.maystre.ch/blog/?p=8</link>
		<comments>http://lucas.maystre.ch/blog/?p=8#comments</comments>
		<pubDate>Thu, 11 Dec 2008 12:35:34 +0000</pubDate>
		<dc:creator>Lucas Maystre</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://lucas.maystre.ch/blog/?p=8</guid>
		<description><![CDATA[I&#8217;m using PHP for my semester project @ EPFL, and I stumbled upon a curious bug when trying to serialize an object (using PHP&#8217;s serialize()):
Node no longer exists
First I thought it was because of an infinite recursive loop (object A contains object B who in turn contains object A again, and so on), but in [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m using PHP for my <a href="http://hci.epfl.ch/studentprojects.php">semester project</a> @ EPFL, and I stumbled upon a curious bug when trying to serialize an object (using PHP&#8217;s <code>serialize()</code>):</p>
<blockquote><p>Node no longer exists</p></blockquote>
<p>First I thought it was because of an infinite recursive loop (object A contains object B who in turn contains object A again, and so on), but in fact, infinite recursivity is allowed with <code>serialize()</code>!</p>
<p>Therefore, the problem was elsewhere: it ended up being an issue with SimpleXML, as explained <a href="http://blog.drupal.ro/node/15551">here</a>. SimpleXML&#8217;s parser creates strange, unserializable, &#8220;built-in objects&#8221;.</p>
<p>Until you try to serialize them, you never realize they aren&#8217;t just strings. An explicit cast solves the problem.</p>
<pre class="brush: php">
// isn&#039;t serializable.
$track-&gt;URI = $first_track-&gt;location;

// resolves the problem!
$track-&gt;URI = (string)$first_track-&gt;location;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://lucas.maystre.ch/blog/?feed=rss2&amp;p=8</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello world!</title>
		<link>http://lucas.maystre.ch/blog/?p=1</link>
		<comments>http://lucas.maystre.ch/blog/?p=1#comments</comments>
		<pubDate>Wed, 10 Dec 2008 22:08:43 +0000</pubDate>
		<dc:creator>Lucas Maystre</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://lucas.maystre.ch/blog/?p=1</guid>
		<description><![CDATA[Welcome on my blog.
I&#8217;m experimenting a lot of stuff on the web and with computers in general, and quite often I spend hours discovering, configuring and trying to understand some obscure geeky stuff.
I have decided to start blogging to share some informations I think could be useful to some people. I spend a lot of [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Welcome on my blog.</strong></p>
<p>I&#8217;m experimenting a lot of stuff on the web and with computers in general, and quite often I spend hours discovering, configuring and trying to understand some obscure geeky stuff.</p>
<p>I have decided to start blogging to share some informations I think could be useful to some people. I spend a lot of time on Google trying to find various tutorials, explanations, tips, and I thought it would be great to share some of that knowledge.</p>
<p><strong>Don&#8217;t expect every post to be interesting</strong>: rather than a generalistic, regular blogging style, I&#8217;m willing to talk about <em>very different, specific things</em> in a <em>random fashion</em>. I expect people that come here to have a very specific and precise interest in a single topic, and eventually finding this blog through Google.</p>
]]></content:encoded>
			<wfw:commentRss>http://lucas.maystre.ch/blog/?feed=rss2&amp;p=1</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
