<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Jabberwocky</title>
	<atom:link href="http://elisehuard.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://elisehuard.wordpress.com</link>
	<description>You cannot depend on your eyes when your imagination is out of focus - Mark Twain</description>
	<lastBuildDate>Thu, 17 Feb 2011 13:00:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='elisehuard.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Jabberwocky</title>
		<link>http://elisehuard.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://elisehuard.wordpress.com/osd.xml" title="Jabberwocky" />
	<atom:link rel='hub' href='http://elisehuard.wordpress.com/?pushpress=hub'/>
		<item>
		<title>12 hours to rate a rails application</title>
		<link>http://elisehuard.wordpress.com/2010/03/29/12-hours-to-rate-a-rails-application/</link>
		<comments>http://elisehuard.wordpress.com/2010/03/29/12-hours-to-rate-a-rails-application/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 18:34:23 +0000</pubDate>
		<dc:creator>elisehuard</dc:creator>
				<category><![CDATA[conference]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://jabberwocky.eu/?p=478</guid>
		<description><![CDATA[Here&#8217;s the presentation I did this weekend 12 Hours To Rate A Rails Application View more presentations from ehuard. Of course, just as I was about to start, my laptop died and refused to start again. Lost me some precious minutes, but fortunately I had a USB key with a backup, and my coworker Alain [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elisehuard.wordpress.com&amp;blog=4833855&amp;post=478&amp;subd=elisehuard&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s the presentation I did this weekend</p>
<div style="width:425px;" id="__ss_3572482"><strong><a href="http://www.slideshare.net/ehuard/12-hours-to-rate-a-rails-application" title="12 Hours To Rate A Rails Application">12 Hours To Rate A Rails Application</a></strong>
<div style="padding:5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/ehuard">ehuard</a>.</div>
</div>
<p>Of course, just as I was about to start, my laptop died and refused to start again.  Lost me some precious minutes, but fortunately I had a USB key with a backup, and my coworker Alain Ravet lent me his laptop (Julian Fischer also kindly offered, but his computer didn&#8217;t like my presentation).  Murphy&#8217;s law in all its glory.  After that, things went more or less smoothly.</p>
<p>If you had the opportunity to attend, I would really appreciate your feedback on <a href="http://speakerrate.com/talks/2887-12-hours-to-rate-a-rails-application">speakerrate</a>, as I&#8217;m going to give this talk another couple of times.  I sensed when it worked, and when it didn&#8217;t, but the more input, the better I can fine-tune it.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/elisehuard.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/elisehuard.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/elisehuard.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/elisehuard.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/elisehuard.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/elisehuard.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/elisehuard.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/elisehuard.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/elisehuard.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/elisehuard.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/elisehuard.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/elisehuard.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/elisehuard.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/elisehuard.wordpress.com/478/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elisehuard.wordpress.com&amp;blog=4833855&amp;post=478&amp;subd=elisehuard&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://elisehuard.wordpress.com/2010/03/29/12-hours-to-rate-a-rails-application/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">elisehuard</media:title>
		</media:content>
	</item>
		<item>
		<title>Fscking up with git and how to solve it</title>
		<link>http://elisehuard.wordpress.com/2010/03/24/fscking-up-with-git-and-how-to-solve-it/</link>
		<comments>http://elisehuard.wordpress.com/2010/03/24/fscking-up-with-git-and-how-to-solve-it/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 18:19:25 +0000</pubDate>
		<dc:creator>elisehuard</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jabberwocky.eu/?p=463</guid>
		<description><![CDATA[I&#8217;ve been using git for nearly two years now, but this job is the first time I&#8217;m using it with more than 2 people on the same project. And it&#8217;s different, I can tell you. In this case you need a workflow: we adopted this one, also described here. It&#8217;s a good workflow. But human [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elisehuard.wordpress.com&amp;blog=4833855&amp;post=463&amp;subd=elisehuard&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using git for nearly two years now, but this job is the first time I&#8217;m using it with more than 2 people on the same project.  And it&#8217;s different, I can tell you.</p>
<p>In this case you need a workflow: we adopted <a href="http://reinh.com/blog/2009/03/02/a-git-workflow-for-agile-teams.html">this one</a>, also described <a href="http://geewax.org/2009/11/21/agile-git-workflow.html">here</a>.<br />
It&#8217;s a good workflow.  But human error means that you can go wrong.</p>
<p></p>
<h2>Forgetting to branch</h2>
<p>The workflow demands that you do all your work on branches &#8211; that way you avoid merges on master, and can maintain a nice straight and clear master branch.<br />
But, as you start working on a new feature, you might forget to do that </p>
<pre>git checkout -b boldly_go</pre>
<p>And start coding and committing on your local master.<br />
<del datetime="2010-04-01T14:55:29+00:00">What now ?  Well, git offers an easy solution.  Tag your latest commit (give it a label)</p>
<pre>git tag boldly_go_tag</pre>
<p>reset the master to its remote position (do not use &#8211;hard or you will lose your work)</p>
<pre>git reset --soft HEAD</pre>
<p>create a branch out of your tagged commit, which is not on any branch just now<br />
<code>git checkout -b  boldly_go boldly_go_tag</code></del><br />
Better: </p>
<pre>git checkout -b boldly_go</pre>
<p>to create the branch</p>
<pre>git checkout master
git reset --hard origin/master</pre>
<p>to reset the master to its original position.</p>
<h2>My last commit message lacks poetry</h2>
<p>Or I forgot to add this one file.  Solution:<br />
<code>git commit -a --amend</code></p>
<h2>Forget I ever did that last commit</h2>
<p>Careful, this will remove any changes you added in that commit.  This will only work locally, of course:<br />
<code>git reset --hard HEAD^</code></p>
<h2>Going off the map</h2>
<p>As you work on your branch, you want to do regular rebase with the remote master, to minimize any later merges and avoid surprises.  After every commit:<br />
<code>git checkout master<br />
git pull<br />
git checkout boldly_go<br />
git rebase master</code></p>
<p>Here&#8217;s where you can go very, very wrong: as long as you&#8217;re in rebase state, you&#8217;re in a situation where you&#8217;re NOT on a branch. So if after a coffee break you forgot you&#8217;re in rebase, and you continue working, you&#8217;re working into the void !!<br />
<code>$&gt; git branch<br />
*(no branch)<br />
boldly_go<br />
master</code></p>
<p>If you then try to do a rebase again to get up to date with master, you won&#8217;t find your commits where you expected them.  Oh noes !  Where did my work go !<br />
No panic (to be honest, i did panic a little): git keeps all your commits.  You can find them in the .git/objects directory, if you care to have a look.  What you just did is create a &#8216;dangling commit&#8217;, that is a commit unlinked to any branch.  Fortunately, there&#8217;s the aptly named git fsck command.<br />
<code>git fsck | grep commit</code><br />
(the grep commit helps separating the commits from the other dangling stuff) then use the SHA associated with your commit to create a tag:<br />
<code>git tag sos 9a4e6286aa2e2bd97334ad35b555169c2d3033b4<br />
git checkout -b not_so_bold_now sos</code><br />
this creates a branch based on the tag, and you can continue working.</p>
<p>another good one to know in that case is<br />
<code>git reflog</code><br />
this shows all commits, dangling ones included, with their message, making it easier to find the commit you&#8217;re looking for.  Same procedure for the rest.</p>
<p>This and many other tips, and sources, can be found on <a href="http://www.gitready.com/">git-ready</a>.<br />
Thanks to Alain Ravet for some of the tips <img src='http://s2.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/elisehuard.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/elisehuard.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/elisehuard.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/elisehuard.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/elisehuard.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/elisehuard.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/elisehuard.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/elisehuard.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/elisehuard.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/elisehuard.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/elisehuard.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/elisehuard.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/elisehuard.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/elisehuard.wordpress.com/463/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elisehuard.wordpress.com&amp;blog=4833855&amp;post=463&amp;subd=elisehuard&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://elisehuard.wordpress.com/2010/03/24/fscking-up-with-git-and-how-to-solve-it/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">elisehuard</media:title>
		</media:content>
	</item>
		<item>
		<title>Scottish Ruby Conference</title>
		<link>http://elisehuard.wordpress.com/2010/03/20/scottish-ruby-conference/</link>
		<comments>http://elisehuard.wordpress.com/2010/03/20/scottish-ruby-conference/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 20:42:33 +0000</pubDate>
		<dc:creator>elisehuard</dc:creator>
				<category><![CDATA[conference]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[auditing]]></category>
		<category><![CDATA[metrics]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[scottish ruby conference]]></category>

		<guid isPermaLink="false">http://jabberwocky.eu/?p=456</guid>
		<description><![CDATA[Time flies, and next week already, I&#8217;m going to talk about how to evaluate a Rails application very quickly: the title of my talk is &#8220;12 hours to rate a Rails application&#8221; This is useful in following situations: in case of acquisitions (I&#8217;ve been asked to look over an application as an outside expert) when [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elisehuard.wordpress.com&amp;blog=4833855&amp;post=456&amp;subd=elisehuard&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Time flies, and next week already,<br />
<img src="http://scottishrubyconference.com/images/badges/src-240-speaking.jpg" alt="I'm speaking at the scottish ruby conference" /><br />
I&#8217;m going to talk about how to evaluate a Rails application very quickly: the title of my talk is &#8220;12 hours to rate a Rails application&#8221;<br />
This is useful in following situations:</p>
<ul>
<li>in case of acquisitions (I&#8217;ve been asked to look over an application as an outside expert)</li>
<li>when you&#8217;re going to take over legacy codebase</li>
</ul>
<p>I&#8217;m going the extra mile on metrics (or quantitative code analysis), which are excellent tools to judge a large-ish codebase.<br />
Whoo !  Large and interesting subject, all compressed in 45 minutes.  A day might come when I&#8217;ll be totally relaxed about giving talks, but I&#8217;m not there yet.  Cross fingers.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/elisehuard.wordpress.com/456/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/elisehuard.wordpress.com/456/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/elisehuard.wordpress.com/456/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/elisehuard.wordpress.com/456/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/elisehuard.wordpress.com/456/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/elisehuard.wordpress.com/456/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/elisehuard.wordpress.com/456/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/elisehuard.wordpress.com/456/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/elisehuard.wordpress.com/456/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/elisehuard.wordpress.com/456/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/elisehuard.wordpress.com/456/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/elisehuard.wordpress.com/456/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/elisehuard.wordpress.com/456/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/elisehuard.wordpress.com/456/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elisehuard.wordpress.com&amp;blog=4833855&amp;post=456&amp;subd=elisehuard&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://elisehuard.wordpress.com/2010/03/20/scottish-ruby-conference/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">elisehuard</media:title>
		</media:content>

		<media:content url="http://scottishrubyconference.com/images/badges/src-240-speaking.jpg" medium="image">
			<media:title type="html">I'm speaking at the scottish ruby conference</media:title>
		</media:content>
	</item>
		<item>
		<title>Cancan: after a closer look</title>
		<link>http://elisehuard.wordpress.com/2010/03/13/cancan-after-a-closer-look/</link>
		<comments>http://elisehuard.wordpress.com/2010/03/13/cancan-after-a-closer-look/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 17:47:20 +0000</pubDate>
		<dc:creator>elisehuard</dc:creator>
				<category><![CDATA[rails]]></category>
		<category><![CDATA[authorization]]></category>
		<category><![CDATA[cancan]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://jabberwocky.eu/?p=451</guid>
		<description><![CDATA[Well, we&#8217;re into our first weeks of using cancan, and my earlier enthousiasm has been tempered somewhat. It turns out that Cancan, although being well-written, is an Opinionated plugin. It may have been intended only for very simple applications. Let me explain. Authorization happens mostly at controller level. Cancan offers sweetened before_filter for this purpose. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elisehuard.wordpress.com&amp;blog=4833855&amp;post=451&amp;subd=elisehuard&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Well, we&#8217;re into our first weeks of using <a href="http://github.com/ryanb/cancan">cancan</a>, and my earlier enthousiasm has been tempered somewhat.<br />
It turns out that Cancan, although being well-written, is an Opinionated plugin.  It may have been intended only for very simple applications.</p>
<p>Let me explain.  Authorization happens mostly at controller level.  Cancan offers sweetened before_filter for this purpose.<br />
One being:</p>
<pre>load_and_authorize_resource</pre>
<p>which will do some standard loading action for you (nesting is possible).  It is implied that the model has the same name as your controller, let&#8217;s say a CommentsController will load and authorize based on the model Comment.</p>
<p>It&#8217;s made flexible to a certain extent, because you can specify another model, like</p>
<pre>load_and_authorize_resource :class =&gt; Post</pre>
<p>Besides that, you can decide to use your own before_filter to do your own custom loading of the model.<br />
If you don&#8217;t want to load, you can use</p>
<pre>authorize_resource</pre>
<p>(without the load)</p>
<p>But for me we&#8217;re already in muddy waters, First off, I want authorization only, it&#8217;s unnecessary to load the instance variables for me, that&#8217;s not what I expect from this plugin.  So I&#8217;ll stick with <em>authorize_resource</em>.</p>
<p>Secondly, we&#8217;re wanting to authorize a <strong>resource</strong>, not a model  A resource, as in REST, should be disconnected from the model, that&#8217;s implied in the MVC pattern. The resource is what we expose to the outside world, whether as URL or in a more general API.  Models are the developer&#8217;s business and nobody else&#8217;s.  Linking both is awfully restrictive: usually, you&#8217;ll also have controllers that use several models, controllers that use a cache or set off background tasks  etc.</p>
<p>This is possible with Cancan in a rather roundabout way, by using symbols when defining an authorization rule and making a before_filter.</p>
<p>This is why I <a href="http://github.com/elisehuard/cancan">decided to fork</a> and add the required behaviour to the plugin.  To quote what I added to the README:</p>
<blockquote><p>If the resource is not linked to a model, you can use the authorize_resource filter with the :resource option. When the resource name is the controller name, use</p>
<pre>authorize_resource :resource =&gt; :controller</pre>
<p>(for instance CalendarsController will authorize on :calendar)<br />
When another name is required, a symbol can be used.</p>
<pre> authorize_resource :resource =&gt; :coffee</pre>
</blockquote>
<p>This may be enough for us to be able to work with it &#8230; we&#8217;ll see.<br />
<em><strong>Update:</strong> Hooray !  as of version 1.1.0, cancan now takes :resource (not class), and there have been many nice additions/changes besides.  My fork can now quietly disappear. Thank you Ryan Bates !</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/elisehuard.wordpress.com/451/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/elisehuard.wordpress.com/451/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/elisehuard.wordpress.com/451/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/elisehuard.wordpress.com/451/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/elisehuard.wordpress.com/451/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/elisehuard.wordpress.com/451/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/elisehuard.wordpress.com/451/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/elisehuard.wordpress.com/451/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/elisehuard.wordpress.com/451/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/elisehuard.wordpress.com/451/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/elisehuard.wordpress.com/451/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/elisehuard.wordpress.com/451/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/elisehuard.wordpress.com/451/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/elisehuard.wordpress.com/451/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elisehuard.wordpress.com&amp;blog=4833855&amp;post=451&amp;subd=elisehuard&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://elisehuard.wordpress.com/2010/03/13/cancan-after-a-closer-look/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">elisehuard</media:title>
		</media:content>
	</item>
		<item>
		<title>Choosing an authorization framework for rails</title>
		<link>http://elisehuard.wordpress.com/2010/02/26/choosing-an-authorization-framework-for-rails/</link>
		<comments>http://elisehuard.wordpress.com/2010/02/26/choosing-an-authorization-framework-for-rails/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 19:39:49 +0000</pubDate>
		<dc:creator>elisehuard</dc:creator>
				<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[authorization]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://jabberwocky.eu/?p=444</guid>
		<description><![CDATA[At my main customer&#8217;s we needed to choose an authorization framework. This is for a complex enterprise application, and requiring fine-grained authorization on: roles actions model: most users can only access their own objects. I&#8217;d had a look around, and after some digging ended up looking at 3 plugins, Declarative Authorization, grant and cancan. Grant [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elisehuard.wordpress.com&amp;blog=4833855&amp;post=444&amp;subd=elisehuard&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>At my main customer&#8217;s we needed to choose an authorization framework.  This is for a complex enterprise application, and requiring fine-grained authorization on:</p>
<ul>
<li>roles</li>
<li>actions</li>
<li>model: most users can only access their own objects.</li>
</ul>
<p>I&#8217;d had a look around, and after some digging ended up looking at 3 plugins, <a href="http://github.com/stffn/declarative_authorization">Declarative Authorization</a>, <a href="http://wiki.github.com/nearinfinity/grant/model-security">grant </a>and <a href="http://github.com/ryanb/cancan">cancan</a>.</p>
<p>Grant fell off almost immediately. It centered all authorization in the model, and I felt it was a bit too lightweight for our application.</p>
<p>Then I looked at declarative authorization and cancan.<br />
At first sight, <a href="http://github.com/stffn/declarative_authorization">declarative authorization</a> looked like a winner: I&#8217;m a believer in open source natural selection, and with about 650 people watching the plugin on github, it looked like a lot of people had found it a good fit.  It&#8217;s also been lovingly polished since september 2008, so the kinks have probably been ironed out.</p>
<p>I cloned both plugins, and looked at the code and documentation.<br />
Cancan is partly based on declarative_authorization.  What struck me at first sight, is how simple cancan looked.  Much less code, much less meta-monkey-magic.  And a very friendly DSL and <a href="http://github.com/ryanb/cancan">documentation</a>.</p>
<p>And get this: I ran <a href="http://wiki.github.com/kevinrutherford/reek/">reek</a> on both plugins (it&#8217;s a hobby of mine).  And cancan came out practically clean !  That&#8217;s like having an alien in the living room !  It <strong>*never*</strong> happens !  Run reek on your own code, just for laughs, and you&#8217;ll see what I mean.</p>
<p>So we ended up choosing <a href="http://github.com/ryanb/cancan">cancan</a>, although declarative_authorization might have more features out of the box, we feel we&#8217;ll be able to extend cancan with much more ease, if at all necessary.  It feels better to have a clean, fathomable codebase, than a larger engine.  I&#8217;m aware that cancan has the unfair advantage of having learned from its predecessors, and kudos to the maintainers of declarative_authorization for having inspired others.</p>
<p><em>Note: I&#8217;m aware there are <a href="http://steffenbartsch.com/blog/2008/08/rails-authorization-plugins/">quite a few other plugins</a> out there. If you found another one and you&#8217;re very happy about it, please share.<br />
</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/elisehuard.wordpress.com/444/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/elisehuard.wordpress.com/444/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/elisehuard.wordpress.com/444/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/elisehuard.wordpress.com/444/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/elisehuard.wordpress.com/444/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/elisehuard.wordpress.com/444/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/elisehuard.wordpress.com/444/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/elisehuard.wordpress.com/444/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/elisehuard.wordpress.com/444/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/elisehuard.wordpress.com/444/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/elisehuard.wordpress.com/444/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/elisehuard.wordpress.com/444/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/elisehuard.wordpress.com/444/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/elisehuard.wordpress.com/444/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elisehuard.wordpress.com&amp;blog=4833855&amp;post=444&amp;subd=elisehuard&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://elisehuard.wordpress.com/2010/02/26/choosing-an-authorization-framework-for-rails/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">elisehuard</media:title>
		</media:content>
	</item>
		<item>
		<title>Leaving subversion for git</title>
		<link>http://elisehuard.wordpress.com/2010/02/19/leaving-subversion-for-git/</link>
		<comments>http://elisehuard.wordpress.com/2010/02/19/leaving-subversion-for-git/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 13:17:47 +0000</pubDate>
		<dc:creator>elisehuard</dc:creator>
				<category><![CDATA[tools]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[migrating to git]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[svn to git]]></category>
		<category><![CDATA[VCS]]></category>

		<guid isPermaLink="false">http://jabberwocky.eu/?p=432</guid>
		<description><![CDATA[Let&#8217;s be fair, subversion is an honourable version control system, better than CVS and some commercial VCS, and infinitely better than no version control at all. Still, once you&#8217;ve tried git, there&#8217;s no going back (or not willingly, anyway). The easy branching, rebase, cherry-pick, stash &#8230; did I mention I want to marry git when [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elisehuard.wordpress.com&amp;blog=4833855&amp;post=432&amp;subd=elisehuard&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s be fair, subversion is an honourable version control system, better than CVS and some commercial VCS,  and infinitely better than no version control at all.<br />
Still, once you&#8217;ve tried <a href="http://git-scm.com/">git</a>, there&#8217;s no going back (or not willingly, anyway).  The easy branching, rebase, cherry-pick, stash &#8230; did I mention I want to marry git when I grow up ?</p>
<p>Many posts have been written on this subject, so I&#8217;ll just link to the ones that helped me, and add some comments where necessary.</p>
<h2>svn to git repository</h2>
<p>you want your whole history to be available on the git server.  Easy to do, as <a href="http://progit.org/book/ch8-1.html">described here</a>.  I would advise to do an <a href="http://www.jonmaddox.com/2008/03/05/cleanly-migrate-your-subversion-repository-to-a-git-repository/">intermediary step to get rid of all svn references</a>.<br />
Your branches might have names that look like paths.  If this bothers you, and you&#8217;re still using them, you can create nice links pointing to them by doing</p>
<pre>git branch -b  &lt;nicer_name&gt; &lt;bothersome_name&gt;</pre>
<p>But: this doesn&#8217;t really cover the whole story.  Your project might have svn:externals.</p>
<ul>
<li>If these externals are served from outside, you could <a href="http://github.com/francois/piston">piston them</a>.  Piston now works equally well with subversion and git.</li>
<li>If these externals are in-house &#8230; well.  Use this how-to recursively to also have them into git repositories, and <em>git submodule add</em>. If this is sensitive and touching the external is a no-no, just piston them as well.</li>
</ul>
<h2>visualize</h2>
<p>I had a look at <a href="http://www.gitorious.org/">gitorious</a>, but it doesn&#8217;t play well with postgres, and I couldn&#8217;t be bothered to install mysql just for this purpose.<br />
So I decided on the simplest tool, which is already included in git: GitWeb.  <a href="http://progit.org/book/ch4-6.html">How-to is described here</a>.  Basically, if you want to try it out, go to a git repo and do:</p>
<pre>git instaweb</pre>
<p>if you&#8217;ve got lighttpd installed, otherwise add option <em>&#8211;httpd=webrick</em><br />
To serve it with Apache (or Nginx), follow the tutorial above &#8211; the &#8216;make&#8217; step is not actually necessary, the gitweb module apparently detects all git repos on the system.</p>
<p><em>Update: </em>to view local repositories on your own desktop, you can use <a href="http://trac.novowork.com/gitg/">gitg</a> or <a href="http://www.kernel.org/pub/software/scm/git/docs/gitk.html">gitk</a> (if on linux) or <a href="http://gitx.frim.nl/">gitx</a> (if on mac).</p>
<p>There you go, time to git clone and start playing.</p>
<p><em>Note: as you can see from the links, the <a href="http://progit.org/">Pro Git book</a> is a good reference for things git.<br />
</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/elisehuard.wordpress.com/432/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/elisehuard.wordpress.com/432/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/elisehuard.wordpress.com/432/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/elisehuard.wordpress.com/432/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/elisehuard.wordpress.com/432/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/elisehuard.wordpress.com/432/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/elisehuard.wordpress.com/432/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/elisehuard.wordpress.com/432/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/elisehuard.wordpress.com/432/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/elisehuard.wordpress.com/432/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/elisehuard.wordpress.com/432/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/elisehuard.wordpress.com/432/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/elisehuard.wordpress.com/432/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/elisehuard.wordpress.com/432/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elisehuard.wordpress.com&amp;blog=4833855&amp;post=432&amp;subd=elisehuard&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://elisehuard.wordpress.com/2010/02/19/leaving-subversion-for-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">elisehuard</media:title>
		</media:content>
	</item>
		<item>
		<title>Segfault in Ruby</title>
		<link>http://elisehuard.wordpress.com/2010/02/12/segfault-in-ruby/</link>
		<comments>http://elisehuard.wordpress.com/2010/02/12/segfault-in-ruby/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 15:56:27 +0000</pubDate>
		<dc:creator>elisehuard</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[segmentation fault]]></category>

		<guid isPermaLink="false">http://jabberwocky.eu/?p=403</guid>
		<description><![CDATA[Note: the following works with C-based ruby, not JRuby or IronRuby, obviously. This is a sight most rubyists will fear: the segmentation fault. You&#8217;re running your tests quite innocently, or your web server is doing it&#8217;s job, until BOOM ! [BUG] Segmentation fault What just happened ? A segfault means your program tries to play [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elisehuard.wordpress.com&amp;blog=4833855&amp;post=403&amp;subd=elisehuard&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><em>Note: the following works with C-based ruby, not JRuby or IronRuby, obviously.</em><br />
This is a sight most rubyists will fear: the segmentation fault.  You&#8217;re running your tests quite innocently, or your web server is doing it&#8217;s job, until BOOM !</p>
<pre>[BUG] Segmentation fault</pre>
<p>What just happened ?<br />
A <a href="http://en.wikipedia.org/wiki/Segmentation_fault">segfault</a> means your program tries to play fast and loose with memory it hasn&#8217;t been allocated.  The operating system says &#8216;hey you!&#8217;.  When this occurs on a *nix, the process receives a signal, SIGSEGV.  The program crashes, and in so doing leaves a <a href="http://en.wikipedia.org/wiki/Core_dump">core dump</a>, which is a recording of the state of the program at the time of crash.</p>
<p>Ruby then traps the corresponding signal.<br />
You&#8217;ll find corresponding code in signal.c of the ruby source code:</p>
<pre>install_sighandler(SIGSEGV, sigsegv);</pre>
<p>and the sigsegv function is:</p>
<pre>#ifdef SIGSEGV
static RETSIGTYPE sigsegv _((int));
static RETSIGTYPE
sigsegv(sig)
    int sig;
{
#if defined(HAVE_NATIVETHREAD) &amp;&amp; defined(HAVE_NATIVETHREAD_KILL)
    if (!is_ruby_native_thread() &amp;&amp; !rb_trap_accept_nativethreads[sig]) {
        sigsend_to_ruby_thread(sig);
        return;
    }
#endif
    rb_gc_unstress();
    rb_bug("Segmentation fault");
}
#endif</pre>
<p>The rb_bug at the bottom is responsible for the message you see appearing when a segmentation fault happens.</p>
<p>That&#8217;s all well, you&#8217;ll say, but how to I solve this ?<br />
First off, you have to determine where the issue came from.  There&#8217;s where the core dump can help you, by telling you if the issue happened in ruby itself, or in its binding to another component, like a database or something similar.<br />
<span id="more-403"></span><br />
But first, you need to recompile your ruby.  Why ?  Well, C compilation strips the executable from a lot of information linking it to the source, and optimization even changes the execution, like removing variables, taking shortcuts, unwinding loops etc.  If you want to make the link between the executable and the source, you need to make sure all that information stays in the executable.</p>
<p>Make sure you&#8217;ve got the code of your ruby version.  If you installed ruby enterprise, you have it in the package you downloaded, if you use MRI, you need to go and get it in <a href="http://www.ruby-lang.org/en/">ruby-lang</a>.  Instead of using the installer, go into the &#8216;source&#8217; directory, and type</p>
<pre>./configure optflags='-O0' debugflags='-ggdb'</pre>
<p>then compile by doing </p>
<pre>make
sudo make install</pre>
<p>(you probably know all this, but i&#8217;m adding it for the sake of completeness).  If you suspect the segfault happens in a library you&#8217;re binding to, you might have to do the same kind of thing for that library.</p>
<p>Then, reproduce the segfault.  The core dump results in a file named &#8216;core&#8217; to be written in the directory your program was running in.  To be able to parse this file, you need a program like gdb (the GNU debugger).  This means installing the gdb package, whether with macports or with the package tool of your distribution of choice.</p>
<p>Once you have gdb installed, go to the directory where the core is, and run</p>
<pre>gdb ruby core</pre>
<p>Here you&#8217;re telling gdb which program was dumped, so it can interpret the core.  In our case, it&#8217;s always ruby.<br />
This opens a console, in which you can type &#8216;bt&#8217; (as in backtrace)</p>
<pre>gdb&gt; bt</pre>
<p>The first few frames just mean ruby is trapping the segmentation fault, but after that, you might find something familliar:</p>
<pre>#0  0x0093a422 in __kernel_vsyscall ()
#1  0x0062b4d1 in raise () from /lib/tls/i686/cmov/libc.so.6
#2  0x0062e932 in abort () from /lib/tls/i686/cmov/libc.so.6
#3  0x080c3912 in rb_bug (fmt=0x80da37c "Segmentation fault") at error.c:227
#4  0x080a2f3b in sigsegv (sig=11) at signal.c:633
#5
#6  0x00000019 in ?? ()
#7  0x0807197a in rb_hash_aref (hash=3069732200, key=1837) at hash.c:457</pre>
<p>It gives you the source and the line (hash.c and 457) ! If you want more options, type &#8216;help&#8217;.  Gdb, like the ruby-debugger you&#8217;re probably familiar with, allows you to get many information, like the value of variables in different frames.</p>
<p>The backtrace (bt) command will tell you where it went wrong &#8211; which might give you a pointer of where to look.  Even if you don&#8217;t read C, this often allows you to find an answer by googling.  I was able to backport a fix from ruby 1.9 to our version of ruby by looking around.  If not, you&#8217;ll find many knowledgeable folks, on IRC for instance.  Failing that, <a href="http://en.wikipedia.org/wiki/The_C_Programming_Language_%28book%29">dig in</a>.  You now know what a segmentation fault is, pointers or array access on the line of crash are probably the cause.</p>
<p>If you are playing around and producing segfaults on a regular basis (like i seem to do these days), you could take a shortcut, and add the following line in the rb_bug function of error.c (remember rb_bug was triggered on segfault):</p>
<pre>
...
 210       va_end(args);
 211       fprintf(out, "\n%s\n\n", ruby_description);
<strong>-&gt;          rb_backtrace();</strong>
 212     }
 213     abort();
...
</pre>
<p>I even added some code to get the ruby stack trace out of it, but it is tentative and needs some more testing, so I won&#8217;t publish it just now.</p>
<p>This will of course require you to recompile ruby once again.<br />
In general, I&#8217;d say: don&#8217;t be shy, look around, the ruby code is surprisingly readable.  After all, digging around in code is what we do (well, besides writing it).</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/elisehuard.wordpress.com/403/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/elisehuard.wordpress.com/403/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/elisehuard.wordpress.com/403/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/elisehuard.wordpress.com/403/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/elisehuard.wordpress.com/403/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/elisehuard.wordpress.com/403/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/elisehuard.wordpress.com/403/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/elisehuard.wordpress.com/403/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/elisehuard.wordpress.com/403/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/elisehuard.wordpress.com/403/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/elisehuard.wordpress.com/403/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/elisehuard.wordpress.com/403/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/elisehuard.wordpress.com/403/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/elisehuard.wordpress.com/403/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elisehuard.wordpress.com&amp;blog=4833855&amp;post=403&amp;subd=elisehuard&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://elisehuard.wordpress.com/2010/02/12/segfault-in-ruby/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">elisehuard</media:title>
		</media:content>
	</item>
		<item>
		<title>FOSDEM 2010: all was well</title>
		<link>http://elisehuard.wordpress.com/2010/02/10/fosdem-2010-all-was-well/</link>
		<comments>http://elisehuard.wordpress.com/2010/02/10/fosdem-2010-all-was-well/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 18:26:10 +0000</pubDate>
		<dc:creator>elisehuard</dc:creator>
				<category><![CDATA[conference]]></category>
		<category><![CDATA[FOSDEM]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://jabberwocky.eu/?p=405</guid>
		<description><![CDATA[This weekend we had our 10th edition of FOSDEM. Fosdem is the Free Open Source Developers European Meeting. It&#8217;s the second year that I&#8217;m part of the staff &#8211; my reasons to join the team was that since I&#8217;m using a lot of open source, but contributing precious little (working on it), I might as [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elisehuard.wordpress.com&amp;blog=4833855&amp;post=405&amp;subd=elisehuard&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This weekend we had our 10th edition of <a href="http://fosdem.org/2010/">FOSDEM</a>.  Fosdem is the Free Open Source Developers European Meeting. It&#8217;s the second year that I&#8217;m part of the staff &#8211; my reasons to join the team was that since I&#8217;m using a lot of open source, but contributing precious little (working on it), I might as well give something back in another way. Since then I found another reason to enjoy working on FOSDEM: it&#8217;s amazing to bring about such a mammoth event with just a dozen of people and a larger group of volunteers.</p>
<p>Since FOSDEM is entirely free and doesn&#8217;t require people to register, it&#8217;s always difficult to estimate the attendance. Judging from the numbers of t-shirts and the booklets, and the constant throngs of geeks in the hallways, the general impression is that we had even more participants than last year. To the point that we start wondering if we&#8217;re not going to grow too large.</p>
<p>The organization was a success. Kudos to the whole team for doing a good job.<br />
Sponsoring and donations were crisis-insensitive. The network was up on friday night (respect to Gerry, Jerome, Peter, and all who made it happen), with a glass fiber gigabit uplink. During the conference the geeks didn&#8217;t even use 10% of the bandwidth. In one of the hacker rooms there was a sign &#8216;please use more bandwidth&#8217;.  The devrooms were mostly packed, and the main tracks were (I think) interesting. It&#8217;s not always easy to get brainiacs who can speak in front of an audience, but I think we hit the spot most of the time.</p>
<p>Where last year I had to run around like a headless chicken, this year there were plenty of opportunities to sit down for 20 minutes at a time !  Which meant I got out of it feeling marginally less exhausted than last year.</p>
<p>I think we can say that the organization has now reached a nice plateau, and everything was ticking along very smoothly.  The only danger is to grow complacent &#8211; it&#8217;s never a good idea to let your guard down.</p>
<p>Heart-warming: to have faithful volunteers who help us until the bitter (or should I say dirty) end.  To have a great atmosphere, and to get heartfelt thanks from participants.  If you&#8217;ve got any feedback of your own, tips you&#8217;d like to share, <a href="http://fosdem.org/2010/feedback">let us know</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/elisehuard.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/elisehuard.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/elisehuard.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/elisehuard.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/elisehuard.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/elisehuard.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/elisehuard.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/elisehuard.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/elisehuard.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/elisehuard.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/elisehuard.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/elisehuard.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/elisehuard.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/elisehuard.wordpress.com/405/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elisehuard.wordpress.com&amp;blog=4833855&amp;post=405&amp;subd=elisehuard&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://elisehuard.wordpress.com/2010/02/10/fosdem-2010-all-was-well/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">elisehuard</media:title>
		</media:content>
	</item>
		<item>
		<title>Bye bye mac</title>
		<link>http://elisehuard.wordpress.com/2010/01/12/bye-bye-mac/</link>
		<comments>http://elisehuard.wordpress.com/2010/01/12/bye-bye-mac/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 22:28:41 +0000</pubDate>
		<dc:creator>elisehuard</dc:creator>
				<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://jabberwocky.eu/?p=382</guid>
		<description><![CDATA[For about 2 years I&#8217;ve worked on a Macbook Pro. It&#8217;s been a mostly pleasant experience &#8211; smooth graphical interface, more than adequate hardware &#8211; it took a while getting used to, but it worked out OK. Still, I find myself turning back to Linux for development. Mess I&#8217;m not the most organized person in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elisehuard.wordpress.com&amp;blog=4833855&amp;post=382&amp;subd=elisehuard&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://windows-hq.com/directory_gallery/Apple-MacBook-Pro-17in_6094-IMG0114s.jpg" alt="macbook pro"><br />
For about 2 years I&#8217;ve worked on a Macbook Pro.  It&#8217;s been a mostly pleasant experience &#8211; smooth graphical interface, more than adequate hardware &#8211; it took a while getting used to, but it worked out OK.</p>
<p>Still, I find myself turning back to Linux for development. </p>
<h2>Mess</h2>
<p>I&#8217;m not the most organized person in real life, but I can be fairly anal about my file organization.  And I find it quite an effort to keep my Mac&#8217;s file structure clean and simple.<br />
First, there is Apple&#8217;s own directory structure &#8211; apparently they found it necessary to differ from the BSD they&#8217;re based on, and use a list of non-standard capitalized (!) directories (Libraries, System etc &#8211; have a look at Applications for pete&#8217;s sake).</p>
<p>In my work I use a fair number of open source tools.  The easiest way to get those on a mac is using macports. <a href="http://www.macports.org/"> Macports</a> installs things in /opt/local by default, so there&#8217;s a few things lying around in their own directory structure there.</p>
<p>The macports people do good work, but it&#8217;s difficult to keep up with releases, so often you need a newer version of a tool, or you need an extra library that hasn&#8217;t been packaged yet.  So you compile.  If you&#8217;re not careful, the compiled items are then installed in the usual linux directory structure (/usr, /usr/lib etc).</p>
<p>Result: something that works, but it can become a disorganized mess, which chafes a bit.<br />
(and don&#8217;t get me started on Mac&#8217;s very own dynamic libraries and executables)</p>
<h2>Tools</h2>
<p>when I work, I&#8217;m mostly using terminals and the command line.  Vi is my editor of choice (good <a href="http://weblog.jamisbuck.org/2008/11/17/vim-follow-up">vim rails plugins</a> here).  So all the nice graphical effects and applications requiring a mouse don&#8217;t have much added value.</p>
<p>Friends have introduced me to a great window manager on Linux, coincidentally called <a href="http://awesome.naquadah.org/">Awesome</a>.  This is a tiled window manager &#8211; which means that most windows don&#8217;t float, but are tiled, and make full use of the screen real estate.  There are by default 10 desktops, allowing a good organization of windows.  Navigation happens through key shortcuts. Shortcut keys, default applications, the whole interface <a href="http://awesome.naquadah.org/wiki/Awesome_3.3_to_3.4">can be customized </a>using Lua.  Now tell me that isn&#8217;t awesome.</p>
<h2>Linux for the desktop</h2>
<p>It used to be a pain in the neck to have Linux be completely functional, especially on laptops. I remember poring over hardware manuals looking for chipsets, and endless trawling through forums to get X to work properly.  Nowadays installing an ubuntu or a debian is mostly inserting a disk and clicking through an install.<br />
Because you see, it&#8217;s not because I can manually partition, hand-compile kernels and libraries, fiddle about with settings, that I want to spend time doing this for my desktop, per se.  We&#8217;ve all got better things to do.  Zack the Mac was a temporary solution to this issue.</p>
<h2>Apple</h2>
<p>Fourth (minor) reason to go back: well, Apple.  They have the hardware, they have the software, they make me pay.  It feels like being submissive to the fantastic marketing machine Steve Jobs set up.</p>
<p>I like the mac hardware, and Mac OS X is fine for casual use (like watching movies, email, blogging), and of course for iPhone development, so it&#8217;s not a definite parting.  Might make my MBP a dual boot (I&#8217;m told <a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://www.apple.com/support/bootcamp/">boot camp</a> makes this very easy). Let&#8217;s see how this goes !</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/elisehuard.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/elisehuard.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/elisehuard.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/elisehuard.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/elisehuard.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/elisehuard.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/elisehuard.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/elisehuard.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/elisehuard.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/elisehuard.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/elisehuard.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/elisehuard.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/elisehuard.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/elisehuard.wordpress.com/382/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elisehuard.wordpress.com&amp;blog=4833855&amp;post=382&amp;subd=elisehuard&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://elisehuard.wordpress.com/2010/01/12/bye-bye-mac/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">elisehuard</media:title>
		</media:content>

		<media:content url="http://windows-hq.com/directory_gallery/Apple-MacBook-Pro-17in_6094-IMG0114s.jpg" medium="image">
			<media:title type="html">macbook pro</media:title>
		</media:content>
	</item>
		<item>
		<title>26C3</title>
		<link>http://elisehuard.wordpress.com/2010/01/01/26c3/</link>
		<comments>http://elisehuard.wordpress.com/2010/01/01/26c3/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 22:01:11 +0000</pubDate>
		<dc:creator>elisehuard</dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[privacy]]></category>

		<guid isPermaLink="false">http://jabberwocky.eu/?p=374</guid>
		<description><![CDATA[I&#8217;m not quite sure how I ended up at 26C3, but I had a blast. From what I gather, the Chaos Communication Congresses are gathering of geeks and utopians (or both), around security, privacy and hacking. And LEDs. We arrived the night before the start of the conference. We were lucky to have our places [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elisehuard.wordpress.com&amp;blog=4833855&amp;post=374&amp;subd=elisehuard&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not quite sure how I ended up at 26C3, but I had a blast.<br />
From what I gather, the <a href="http://events.ccc.de/congress/2009/wiki/Welcome">Chaos Communication Congresses</a> are gathering of geeks and utopians (or both), around security, privacy and hacking.  And LEDs.</p>
<p>We arrived the night before the start of the conference.  We were lucky to have our places in advance, because when we went to retrieve our bracelets, people were queuing up to get their places.</p>
<p>The location of the 26C3 (and a few previous ones) is fantastic.  The Berlin Congress Center is a graceful example of 70 architecture of the 2001 welcome to the future category.  It&#8217;s basically a bloc containing a cylindrical structure &#8211; the outside edges are the corridors, the inside disks are rooms.  Saal1 (under the cupula) in particular is phenomenal, but the rest of the building has lots of charm too.<br />
<a href="http://www.flickr.com/photos/21066916@N07/4234267027/" title="Saal1 by elisehuard, on Flickr"><img src="http://farm3.static.flickr.com/2581/4234267027_ce07a6e509_m.jpg" width="240" height="180" alt="Saal1" /></a></p>
<p>The principle is that groups and projects book a table (or two), and gather round that table to sit, and hack, or misc.  I ended up at the Debian table (&#8216;debianist by association&#8217;), thanks to the friends I was traveling with.  There were tables with people having brought really old hardware, tables with robot arms, and everywhere laptops.</p>
<p>At 26C3 they set up all kinds of networks.  The building is properly wired, and there were a few wifi network that worked reasonably well.  Then there was the <a href="http://en.wikipedia.org/wiki/Digital_Enhanced_Cordless_Telecommunications">DECT</a> radio network, which means everyone was walking around with your average domestic chordless phone (DECT radio for those in the know).  They even set up a GSM network which didn&#8217;t work too consistently, but was way cool nonetheless: instead of vodaphone et al. you had an in-house network which even worked for normal domestic calls !<br />
<a href="http://www.flickr.com/photos/21066916@N07/4235031970/" title="old hardware by elisehuard, on Flickr"><img src="http://farm3.static.flickr.com/2777/4235031970_c9603cbd3f_m.jpg" width="240" height="180" alt="old hardware" /></a></p>
<p>The talks were streamed live.  I didn&#8217;t attend that many talks in person, as the rooms were really packed.  Besides, knowing that the <a href="https://events.ccc.de/congress/2009/wiki/Conference_Recordings">conference recordings</a> would be available later also made it less of an incentive to try and pile in.  The talks I did attend/listen to were fascinating.  </p>
<p>One talk I attended was about <a href="http://events.ccc.de/congress/2009/Fahrplan/events/3468.en.html">stylometry</a>, or how you can in certain situation detect who&#8217;s the author of a text by the word choice, grammar, etc.  Which obviously means danger for whistle-blowers publishing anonymously against an abusive employer or an oppressive regime.  The author was trying to &#8216;attack&#8217; those techniques, by trying pastiche or obfuscation.  Another talk was about <a href="http://events.ccc.de/congress/2009/Fahrplan/events/3706.en.html">intelligence support systems</a>, and their use by all kinds of organization.  I also followed a talk about <a href="http://events.ccc.de/congress/2009/Fahrplan/events/3658.en.html">attacks on PKI</a>, which is interesting since my current work is all about PKI.<br />
<a href="http://www.flickr.com/photos/21066916@N07/4234260921/" title="lego robots by elisehuard, on Flickr"><img src="http://farm5.static.flickr.com/4055/4234260921_a46976edef_m.jpg" width="240" height="180" alt="lego robots" /></a><br />
The ground floor was catering mostly, and the lower floor was the hardware hackers floor.  The catering floor was visited many times to get a dose of Club-Mate.  <a href="http://en.wikipedia.org/wiki/Mate_%28beverage%29">Mate</a> is a naturally caffeinated kind of tea leaf from South-America. Club-Mate is a soda version of that, and quite tasty and effective, as energy drinks go.</p>
<p>Then there were all the cool toys !  You could buy kits of electronic circuits to assemble yourself.  I bought and assembled the TV-B-Gone kit to switch off tv&#8217;s, which worked, and a dotblox64, which lots of LEDs, which doesn&#8217;t yet (because of slightly shoddy solderwork).  There was a group making helicopters, and a group building and programming LEGO robots to fight against eachother. Geek heaven, or what.</p>
<p><a href="http://www.flickr.com/photos/21066916@N07/4234255447/" title="lockpicking class by elisehuard, on Flickr"><img src="http://farm3.static.flickr.com/2553/4234255447_9ecfbcba72_m.jpg" width="180" height="240" alt="lockpicking class" /></a><br />
I also had a go at lockpicking, though I must admit that I miserably failed at that, being quite clumsy (the instructions in german might not have helped).  The stories of the instructor (from lockpicking.org and the lockpicking club of Berlin) were interesting.  He explained about how locks usually worked, about different kinds, and the pleasure and effort to figure it out.  He also bragged a little about his exploits, of course: seems he has a master key of the Berlin underground, and the Berlin public toilets.</p>
<p>The general vibe was one of love for freedom.  Lots of subculture represented, though obviously the overarching one was geekiness.  No judgments, no rules, things were built for fun, not necessity.   A fairly mixed audience, a slightly subversive but enthousiastic spirit.  I had a good time, and will enjoy watching some of the remaining talks at home.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/elisehuard.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/elisehuard.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/elisehuard.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/elisehuard.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/elisehuard.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/elisehuard.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/elisehuard.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/elisehuard.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/elisehuard.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/elisehuard.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/elisehuard.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/elisehuard.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/elisehuard.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/elisehuard.wordpress.com/374/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elisehuard.wordpress.com&amp;blog=4833855&amp;post=374&amp;subd=elisehuard&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://elisehuard.wordpress.com/2010/01/01/26c3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">elisehuard</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2581/4234267027_ce07a6e509_m.jpg" medium="image">
			<media:title type="html">Saal1</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2777/4235031970_c9603cbd3f_m.jpg" medium="image">
			<media:title type="html">old hardware</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4055/4234260921_a46976edef_m.jpg" medium="image">
			<media:title type="html">lego robots</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2553/4234255447_9ecfbcba72_m.jpg" medium="image">
			<media:title type="html">lockpicking class</media:title>
		</media:content>
	</item>
	</channel>
</rss>
