<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>Not Geekly Correct</title>
	
	<link>http://www.notgeeklycorrect.com</link>
	<description>Blog of a freelance web developer</description>
	<lastBuildDate>Wed, 14 Apr 2010 11:35:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/NotGeeklyCorrect" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="notgeeklycorrect" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>My two weeks pair programming review</title>
		<link>http://www.notgeeklycorrect.com/project-development/2010/04/14/my-two-weeks-pair-programming-review/</link>
		<comments>http://www.notgeeklycorrect.com/project-development/2010/04/14/my-two-weeks-pair-programming-review/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 11:35:02 +0000</pubDate>
		<dc:creator>Nicolas</dc:creator>
				<category><![CDATA[Project Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[pair programming]]></category>

		<guid isPermaLink="false">http://www.notgeeklycorrect.com/?p=606</guid>
		<description><![CDATA[The past 2 weeks I&#8217;ve paired with Theo Cushion (Theo&#8217;s Twitter &#124; Theo&#8217;s GitHub).
Was planned some Erlang joy, a lot of system/server maintenance, good amount of Ruby and some JavaScript goodness.
Pair programming?
Pair programming is an agile software development technique in which two programmers work together at one work station. One types in code while the [...]]]></description>
			<content:encoded><![CDATA[<p>The past 2 weeks I&#8217;ve paired with Theo Cushion (<a href="http://twitter.com/theozaurus">Theo&#8217;s Twitter</a> | <a href="http://github.com/theoooo">Theo&#8217;s GitHub</a>).</p>
<p>Was planned some Erlang joy, a lot of system/server maintenance, good amount of Ruby and some JavaScript goodness.</p>
<h3>Pair programming?</h3>
<blockquote cite="http://en.wikipedia.org/wiki/Pair_programming"><p>Pair programming is an agile software development technique in which two programmers work together at one work station. One types in code while the other reviews each line of code as it is typed in. The person typing is called the driver. The person reviewing the code is called the observer (or navigator[1]). The two programmers switch roles frequently (possibly every 30 minutes or less).</p>
<p>While reviewing, the observer also considers the strategic direction of the work, coming up with ideas for improvements and likely future problems to address. This frees the driver to focus all of his or her attention on the &#8220;tactical&#8221; aspects of completing the current task, using the observer as a safety net and guide.</p></blockquote>
<p><a title="Pair programming article on Wikipedia" href="http://en.wikipedia.org/wiki/Pair_programming">Pair programming on Wikipedia</a></p>
<h3>Pair setup</h3>
<p style="text-align: center;"><a href="http://www.notgeeklycorrect.com/wp-content/uploads/DSC00413.JPG"><img class="size-medium wp-image-621  aligncenter" title="pair programming setup" src="http://www.notgeeklycorrect.com/wp-content/uploads/DSC00413-300x225.jpg" alt="pair programming setup" width="300" height="225" /></a></p>
<ul>
<li>We&#8217;ve used Theo&#8217;s desk, composed of a Mac laptop and a Dell 22&#8243; screen in portrait mode.</li>
<li>One keyboard one mouse.</li>
<li>2 chairs.</li>
<li>Swapping every hour.</li>
<li>10 working days.</li>
<li>8/9 hours days.</li>
<li>1 break at lunch time + 2/3 little table football breaks while tests passing.</li>
</ul>
<h3>My pair programming experience</h3>
<p>First of all, I probably had the most enjoyable 2 weeks programming from a long time!. <strong>Lot of work</strong> but a <strong>lot of fun</strong> as well, the kind of fun you can&#8217;t have alone in your computer, this was probably the best part of the experience. Next week I&#8217;ll pair with <a title="Jamie Dyer blog" href="http://kernowsoul.com/">Jamie Dyer</a> and I expect the same amount of fun with him!</p>
<p>Theo is a really smart guy, smart enough to makes complicate explanations looks simpler. That was a big plus while pairing on part that I&#8217;d never worked before like the Erlang world or the XMPP world.</p>
<p>We found ourselves <strong>more productive</strong> than usual while pairing. First of all you can&#8217;t cheat, you are no going to open your emails/facebook/twitter/another website while the other one is typing. Two people on one computer, and regular switching, there is <strong>no way to procrastinate</strong>. Secondly, on complex problems, it&#8217;s <strong>always good to have a second pair of eyes</strong> on the proposed solution. Maybe your teammate will find a better/simpler/quicker solution to the problem. And finally it&#8217;s always good to have someone <strong>spotting the nasty typo while writing</strong> &#8211; you know forgetting a comma, forgetting to migrate the database, misspelling a word &#8230; &#8211; this can save a lot of time. So that&#8217;s a big plus in terms of productivity.</p>
<p>But the other side of the coin is that I finished my day way more tired. Because your brain is constantly assailed by requests, when you&#8217;re typing you have to deal with the keyboard, the screen, the problem you&#8217;re solving <strong>+ someone on your back watching you and talking to you</strong>. When you&#8217;re on the back you&#8217;ll try to spot this little typo that will cause problem, or find some help in doc/book, or try to imagine a better way to correct the problem &#8230; well, basically, at the end of the day your brain is fried and so you are.</p>
<p>Another problem had been the gears. I&#8217;m used to work on my Linux + Openbox powered laptop, using Vim to code. Moving to Mac Os + Textmate was a &#8220;painful&#8221; experience. You have to re-learn a lot of basic commands/shortcuts, your mouse is doing silly things with the windows, and you lost your markers &#8230; I&#8217;ve asked Theo to do one week on his machine one week on mine, but the response was a loudly &#8220;HELL NO&#8221; <img src='http://www.notgeeklycorrect.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<h3>In a nutshell</h3>
<p>So, the dark sides are that I was exhausted and I had to learn how to pilot a Mac Os. But the bright sides were finding myself more productive, less procrastinating and having more fun during the day. No need to mention that I&#8217;ll be really happy to renew the experience next week, and I found pair programming a really interesting way to work.</p>
<p>What about you, did you already tried pair programming? Did you enjoy it? Don&#8217;t hesitate to share your experience in comments.</p>]]></content:encoded>
			<wfw:commentRss>http://www.notgeeklycorrect.com/project-development/2010/04/14/my-two-weeks-pair-programming-review/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Implementing RPX with clearance in Ruby on rails in 5 minutes</title>
		<link>http://www.notgeeklycorrect.com/tutorials/2010/03/22/implementing-rpx-with-clearance-in-ruby-on-rails-in-5-minutes/</link>
		<comments>http://www.notgeeklycorrect.com/tutorials/2010/03/22/implementing-rpx-with-clearance-in-ruby-on-rails-in-5-minutes/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 17:58:13 +0000</pubDate>
		<dc:creator>Nicolas</dc:creator>
				<category><![CDATA[tutorials]]></category>
		<category><![CDATA[rpx]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.notgeeklycorrect.com/?p=596</guid>
		<description><![CDATA[When it comes to user engagement, having your users being able to create an account or login with one click is a really &#8220;nice to have&#8221; feature.
This is where RPX appears to be able a really neat solution.
It allows your users to signin/signup to your website, througth the RPX widget, using their preferred provider (Google/OpenId, [...]]]></description>
			<content:encoded><![CDATA[<p>When it comes to <a title="user enagamenet on wikipedia" href="http://en.wikipedia.org/wiki/Customer_engagement">user engagement</a>, having your users being able to create an account or login with one click is a really &#8220;nice to have&#8221; feature.</p>
<p>This is where <a title="RPXnow website" href="http://www.rpxnow.com">RPX</a> appears to be able a really neat solution.</p>
<p>It allows your users to signin/signup to your website, througth the RPX widget, using their preferred provider (Google/OpenId, Facebook, &#8230;).</p>
<p>You can consult the <a title="RPXnow website" href="http://www.rpxnow.com">RPX</a> website for a <a title="RPX overview" href="https://rpxnow.com/overview">complete list of supported provider</a>.</p>
<h3>Expectations</h3>
<p>I&#8217;ll assume that you already have <a title="Clearance on github" href="http://github.com/thoughtbot/clearance">Clearance</a> setup properly in your app. I presume that this tutorial can be used as a blueprint for implemennting RPX with others authentication system in Ruby on Rails.</p>
<p>What do we want to achieve:</p>
<ul>
<li>A user should still be able to signin/signup with Clearance</li>
<li>A user should be able to create a new account throught the RPX widget</li>
<li>A user should be able to sign in throught the RPX widget</li>
<li>If an existing user sign up via the RPX widget, with an existing email, it should merge the informations</li>
</ul>
<h3>Installing rpx_now gem</h3>
<p>First you&#8217;ll need to create an account on the <a href="https://rpxnow.com/" title="rpx website">RPX website</a>. Then create your application in their application manager.</p>
<p>You&#8217;ll be given an access key.</p>
<p><a href="http://github.com/grosser/rpx_now" title="rpx_now github page">Rpx_now gem</a> is certainly the best RPX <acronym title="Application Programming Interface">API</acronym> implementation available out there.</p>
<p>Install it as you usually do for a gem in your Rails application, using bundler or config.gem.</p>
<p>Create a migration, use the migration code bellow and then run your db:migrate.</p>
<pre class="brush: ruby;">
class AddIdentifierToUsers &lt; ActiveRecord::Migration
  def self.up
    add_column :users, :identifier, :string
  end

  def self.down
    remove_column :users, :identifier
  end
end
</pre>
<p>We are adding the identifier column to the user table in order be know from where the users come from.</p>
<p>Add the RPX key in your config/environment.rb:</p>
<pre class="brush: ruby;">
config.after_initialize do # so rake gems:install works
    RPXNow.api_key = &quot;YOU RPX <acronym title="Application Programming Interface">API</acronym> KEY&quot;
end
</pre>
<p>And you&#8217;re now ready to implement the code.</p>
<h3>New user and login with RPX</h3>
<p>RPX doesn&#8217;t know if the user already exists in your app database or not. So handling a new user creation or login a user will use the same method.</p>
<p>This method is the one you specify when rendering the RPX widget inside the new session or new user views. Let&#8217;s call it rpx_token</p>
<p>The browser will be redirected to the rpx_token method after the RPX login process. It will be posted a token argument and will call the RPX api to retrieve the user profile informations.</p>
<p>Add the RPX_now embed_code method is your new session view and new user view (outside of the form).</p>
<p>[Create an helper is a good idea]</p>
<pre class="brush: ruby;">
RPXNow.embed_code('MyRPXApplicationName', rpx_token_session_url)
</pre>
<p>You can see that we are using the rpx_token_session_url route.</p>
<p>This will need to be define in your config/routes.rb</p>
<pre class="brush: ruby;">
 map.resource  :session,
                     :controller =&gt; 'sessions',
                     :member     =&gt; {:rpx_token =&gt; [:post] }
</pre>
<p>Then in your sessions_controller add an rpx_token method:</p>
<pre class="brush: ruby;">
def rpx_token
    raise ActionController::Forbidden unless data = RPXNow.user_data(params[:token])

    @user = User.find_by_identifier(data[:identifier]) || User.find_by_email(data[:email])
    if @user.blank?
      @user = User.new(:username =&gt; data[:username],:email =&gt; data[:email],:identifier =&gt; data[:identifier])
      @user.email_confirmed = 1
      @user.save
    end
    # We are using the clearance sign_in method to do the following behaviour
    #    session[:user_id] = @user.id
    #    @current_user = @user  

    sign_in(@user)

    redirect_to root_path
end
</pre>
<p>If we were only using RPX to handle user login, that would be our last step there.</p>
<p>But because when want to make it play it nicely with Clearance, we&#8217;ll need an extra step.</p>
<p>If you try to use it at this point, Clearance will complain that the new user doesn&#8217;t have any password. Fortunately there is an existing Clearance method called <a href="http://rdoc.info/rdoc/hashrocket/clearance/blob/c46bd9a9809e23d734f7d1587a44122afd2e8f5f/Clearance/App/Models/User/ProtectedInstanceMethods.html#password_required%3F-instance_method" title="Clearance RDOC password required">password_required?</a></p>
<p>So in our user model we&#8217;ll need to super seed this method in order to add our requirement.</p>
<pre class="brush: ruby;">
#models/user.rb
  ...

  def password_required?
    super &amp;&amp; identifier.blank?
  end

  ...
</pre>
<p>Now, if there is an identifier supplied we can create the new account without password.</p>
<p>[Be sure that you have your tests for not being able to login is password is blank <img src='http://www.notgeeklycorrect.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ].</p>
<p>At this point you can now create a user, login an existing user or a new user all with RPX and Clearance.</p>
<h3>The tests</h3>
<p>To test that I used <a href="http://github.com/thoughtbot/shoulda" title="Shoulda github page">Shoulda</a> and <a href="http://github.com/floehopper/mocha" title="Mocha github page">Mocha</a>.</p>
<pre class="brush: ruby;">
#session_controller_tests

context &quot;on GET :new&quot; do
    should &quot;Display RPX widget&quot; do
      RPXNow.expects(:embed_code).with('MyRPXAppName', rpx_token_session_url)
      get :new
    end
end

  context &quot;Connection via RPX&quot; do
    context &quot;from a non existing user&quot; do

      setup do
        RPXNow.expects(:user_data).with(&quot;123456&quot;).returns({:email =&gt; &quot;rpxuser@email.com&quot;,:identifier =&gt; &quot;test&quot;,:username =&gt; &quot;rpxusername&quot;})
        post :rpx_token, :token =&gt; &quot;123456&quot;
      end

      should_change &quot;User.count&quot;, :by =&gt; 1

      should &quot;create the user with the RPX data&quot; do
        assert assigns(:user).email      == &quot;rpxuser@email.com&quot;
        assert assigns(:user).identifier == &quot;test&quot;
        assert assigns(:user).username   == &quot;rpxusername&quot;
      end

      should &quot;set the session with the newly created user informations&quot; do
        assert @request.session[:user_id] == assigns(:user).id
      end

      should &quot;confirm the email on the user creation&quot; do
        assert assigns(:user).email_confirmed == true
      end

      should_redirect_to(&quot;the root page&quot;) { root_path }
    end

    context &quot;from an existing user&quot; do
      setup do
        @user = Factory(:user)
        RPXNow.expects(:user_data).with(&quot;123456&quot;).returns({:email =&gt; @user.email,:identifier =&gt; &quot;test&quot;,:username =&gt; &quot;rpxusername&quot;})
        post :rpx_token, :token =&gt; &quot;123456&quot;
      end

      should &quot;set the session with the user informations&quot; do
        assert @request.session[:user_id] == @user.id
      end
      should &quot;not create a second user&quot; do
        assert User.count == 1
      end
    end

    context &quot;with an invalid token&quot; do
      setup do
        RPXNow.expects(:user_data).with(&quot;invalidtoken&quot;).returns(false)
        post :rpx_token, :token =&gt; &quot;invalidtoken&quot;
      end
      should_respond_with :forbidden
      should_not_change &quot;User.count&quot;
    end
</pre>
<pre class="brush: ruby;">
#unit/usert_test.rb

context &quot;A user&quot; do

...

    should &quot;not request set password_requiered? to false if an identifier is set&quot; do
      @user.identifier = &quot;test&quot;
      assert !@user.password_required?
    end

    should &quot;set password_required? to true is identifier is not set&quot; do
      @user.identifier = &quot;&quot;
      assert @user.password_required?
    end

    should &quot;be able to create a user without password if identifier is set&quot; do
      @new_user = User.new(:email =&gt; &quot;test@gmail.com&quot;,:identifier =&gt; &quot;test&quot;)
      assert @new_user.save
    end

    should &quot;not be able to create a user without a password if identifier is not set&quot; do
      @new_user2 = User.new(:email =&gt; &quot;hey@gmail.com&quot;)
      assert !@new_user2.save
    end

...

end
</pre>
<h3>Conclusion</h3>
<p>I haven&#8217;t play with the PRO features yet, but rpx_now is really simple to implement and it&#8217;s really simple to have it working along Clearance.</p>
<p>I hope it was useful. Let me know if you had any trouble with implementing it.</p>]]></content:encoded>
			<wfw:commentRss>http://www.notgeeklycorrect.com/tutorials/2010/03/22/implementing-rpx-with-clearance-in-ruby-on-rails-in-5-minutes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Easy rounded corners working in IE7/IE8</title>
		<link>http://www.notgeeklycorrect.com/web-development/2010/01/21/easy-rounded-corners-working-in-ie7ie8/</link>
		<comments>http://www.notgeeklycorrect.com/web-development/2010/01/21/easy-rounded-corners-working-in-ie7ie8/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 17:27:00 +0000</pubDate>
		<dc:creator>Nicolas</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[rounded borders]]></category>

		<guid isPermaLink="false">http://www.notgeeklycorrect.com/?p=588</guid>
		<description><![CDATA[This afternoon I was looking for a solution to (easily) add rounded corners into some elements of a website we are developing.
After having tried Curvycorners, jQuery Corners without any success (it was completely breaking the design under IE) I finally came to DD_roundies, which use Microsoft VML.
DD_roundies
DD_roundies is a really lightweight piece of code that will [...]]]></description>
			<content:encoded><![CDATA[<p>This afternoon I was looking for a solution to (easily) add rounded corners into some elements of a website we are developing.</p>
<p>After having tried <a title="curvycorners jquery plugin" href="http://www.curvycorners.net/" target="_blank">Curvycorners</a>, <a title="jQuery Corners plugin" href="http://www.malsup.com/jquery/corner/" target="_blank">jQuery Corners</a> without any success (it was completely breaking the design under <acronym title="Internet Explorer">IE</acronym>) I finally came to <a title="DD_roundies plugin" href="http://dillerdesign.com/experiment/DD_roundies/" target="_blank">DD_roundies</a>, which use <a title="Microsoft VML wikipedia" href="http://en.wikipedia.org/wiki/Vector_Markup_Language" target="_blank">Microsoft VML</a>.</p>
<h3>DD_roundies</h3>
<p>DD_roundies is a really lightweight piece of code that will allows you to add rounded borders to nearly every element of you page by executing </p>
<pre class="brush: plain;">
DD_roundies.addRule('.roundify', '10px');
</pre>
<p>It&#8217;s smart enough to only apply if the Browser doesn&#8217;t support <acronym title="Cascading Style Sheets">CSS</acronym> border-radius styles, so you can just continue to work on your <acronym title="Cascading Style Sheets">CSS</acronym> for a proper implementation in other browser than <acronym title="Internet Explorer">IE</acronym>.</p>
<h3>Because it&#8217;s not a dream world</h3>
<p>So this implementation is working perfectly in IE7 but doesn&#8217;t work in IE8, so if you don&#8217;t need IE8 specific functionalities I would recommend you to just add a meta in your head section to for IE7 compatibility mode in IE8.</p>
<pre class="brush: plain;">
&lt;meta content='<acronym title="Internet Explorer">IE</acronym>=EmulateIE7' http-equiv='X-UA-Compatible' /&gt;
</pre>
<p>or if you use HAML</p>
<pre class="brush: plain;">
%meta{:content =&gt; &quot;<acronym title="Internet Explorer">IE</acronym>=EmulateIE7&quot;, &quot;http-equiv&quot; =&gt; &quot;X-UA-Compatible'&quot;}
</pre>
<p>And off you go, now you can easily round everything like the cool kids <img src='http://www.notgeeklycorrect.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>]]></content:encoded>
			<wfw:commentRss>http://www.notgeeklycorrect.com/web-development/2010/01/21/easy-rounded-corners-working-in-ie7ie8/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Superswitcher, a super alternative to alt+tab</title>
		<link>http://www.notgeeklycorrect.com/english/2010/01/08/superswitcher-a-super-alternative-to-alttab/</link>
		<comments>http://www.notgeeklycorrect.com/english/2010/01/08/superswitcher-a-super-alternative-to-alttab/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 14:38:39 +0000</pubDate>
		<dc:creator>Nicolas</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Geek Stuff]]></category>
		<category><![CDATA[Resources]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.notgeeklycorrect.com/?p=581</guid>
		<description><![CDATA[I recently came across a fantastic alternative to the alt+tab command on Linux, it&#8217;s called Superswitcher.

Nice features on it
Press the command touch (Windows touch on the keyboard) to display Superswitcher.
To switch from a desktop to another press Command + arrow left or right
To switch from available windows in a desktop press Command + arrow up [...]]]></description>
			<content:encoded><![CDATA[<p>I recently came across a fantastic alternative to the alt+tab command on Linux, it&#8217;s called <a href="http://code.google.com/p/superswitcher/">Superswitcher</a>.</p>
<p style="text-align: center;"><a href="http://www.notgeeklycorrect.com/wp-content/uploads/superswitcher.png"><img class="size-medium wp-image-582    aligncenter" title="superswitcher" src="http://www.notgeeklycorrect.com/wp-content/uploads/superswitcher-300x187.png" alt="superswitcher" width="300" height="187" /></a></p>
<h3>Nice features on it</h3>
<p>Press the command touch (Windows touch on the keyboard) to display Superswitcher.</p>
<p>To switch from a desktop to another press <strong>Command + arrow left or right</strong></p>
<p>To switch from available windows in a desktop press <strong>Command + arrow up or down</strong></p>
<p>To move a window into another desktop press <strong>Command + shift + arrow left or right</strong></p>
<p>To search within all windows name <strong>Command + [any text]</strong></p>
<h3>Screencast</h3>
<p>I&#8217;ve just recorded a quick screencast to show all these functionalities</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/AGaSatCyxTY&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/AGaSatCyxTY&amp;hl=en&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h3>So?</h3>
<p>For me it&#8217;s now a must have on every computer I use, because it make organizing my desktops really easily.</p>]]></content:encoded>
			<wfw:commentRss>http://www.notgeeklycorrect.com/english/2010/01/08/superswitcher-a-super-alternative-to-alttab/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Accelerate your tests in Rails with Ubuntu</title>
		<link>http://www.notgeeklycorrect.com/resources/2010/01/06/accelerate-your-tests-in-rails-with-ubuntu/</link>
		<comments>http://www.notgeeklycorrect.com/resources/2010/01/06/accelerate-your-tests-in-rails-with-ubuntu/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 13:22:32 +0000</pubDate>
		<dc:creator>Nicolas</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[ext4.optimisation]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.notgeeklycorrect.com/?p=575</guid>
		<description><![CDATA[I recently came across a blog post about accelerate Ubuntu disk access perfomrance.
You can read it on Smartlogic blog, it&#8217;s well explained so I&#8217;n not going to copy but I just would like to add some ideas:
You don&#8217;t need to boot on a live CD
Where Nick ask to boot on a live CD and mount [...]]]></description>
			<content:encoded><![CDATA[<p>I recently came across a blog post about accelerate Ubuntu disk access perfomrance.</p>
<p>You can read it on <a href="http://blog.smartlogicsolutions.com/2009/06/04/mount-options-to-improve-ext4-file-system-performance/" target="_blank">Smartlogic blog</a>, it&#8217;s well explained so I&#8217;n not going to copy but I just would like to add some ideas:</p>
<h4>You don&#8217;t need to boot on a live <acronym title="Compact Disc">CD</acronym></h4>
<p>Where Nick ask to boot on a live <acronym title="Compact Disc">CD</acronym> and mount your partitions, you don&#8217;t really need this part.</p>
<p>First open your /etc/fstab file and spot your active partitions.</p>
<p>For example on my development machine, I use /dev/sda1 for my / and /dev/sda6 for my /home</p>
<p>Close the file and run </p>
<pre class="brush: plain;">
sudo tune2fs -o journal_data_writeback /dev/sdXY
</pre>
<p>on each partitions you&#8217;ll need to tweak.</p>
<h4>Apply noatime and data=writeback to all your working partitions</h4>
<p>As you&#8217;ve done tune2fs on each partitions, you&#8217;ll need to change the mounting options (noatime and data=writeback) in each partitions line inside your fstab.</p>
<h4>Do not do it on your server!</h4>
<p>Because these modifications make the file system more fragile if crashing, please do not consider doing these tweaks on your production servers.</p>
<h4>Enjoy the boost</h4>
<p>Where Nick claim a 30% speed gain on his machine, I can claim a gain of more that 55% as I went down from 55 minutes to 25 minutes for the same test suites on one of the biggest application I work on!</p>
<h4>Was it useful?</h4>
<p>Thanks a lot to <a href="http://blog.smartlogicsolutions.com/author/ngauthier/">Nick Gauthier</a> for his initial blog post, I hope it will be useful to some of you.<br />
Let me know in the comments if you know other tweak that can make my <a href="http://www.notgeeklycorrect.com/english/2009/09/04/netbook-for-webdevelopers/">little machine</a> works faster.</p>]]></content:encoded>
			<wfw:commentRss>http://www.notgeeklycorrect.com/resources/2010/01/06/accelerate-your-tests-in-rails-with-ubuntu/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>I want to make 2010 really exciting</title>
		<link>http://www.notgeeklycorrect.com/personnal/2010/01/04/i-want-to-make-2010-really-exciting/</link>
		<comments>http://www.notgeeklycorrect.com/personnal/2010/01/04/i-want-to-make-2010-really-exciting/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 21:12:00 +0000</pubDate>
		<dc:creator>Nicolas</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Inspiration]]></category>
		<category><![CDATA[Personnal]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.notgeeklycorrect.com/?p=569</guid>
		<description><![CDATA[I&#8217;m just back from 10 days holidays in France. Catching up with family and friends was really good, but what I really enjoyed was my disconnection for all development/web platform during these 10 days.
It&#8217;s always a good way, at the end of the year, to do a little retrospective on his work/life and give the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m just back from 10 days holidays in France. Catching up with family and friends was really good, but what I really enjoyed was my disconnection for all development/web platform during these 10 days.<br />
It&#8217;s always a good way, at the end of the year, to do a little retrospective on his work/life and give the new year a fresh start.</p>
<h3>2009 was a really busy and exciting year</h3>
<p>While I was looking back on what happened in 2009 I found that:</p>
<ul>
<li><b>I moved 2 times.</b></li>
<li><b>I had 1 bike accident.</b> 2009 was a cycling year for me. I started to cycle everytime, everywhere to ditch the car. In mid year I had an accident with a broken colar bone in results. I spent nearly 3 weeks out of work. It was a really bad time.</li>
<li><b>I&#8217;m now engaged.</b> This is a result of the bike accident <img src='http://www.notgeeklycorrect.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</li>
<li><b>I launched 3 web app.</b> In the beginning of the year I launched <a href="http://www.serialcooking.com">Serialcooking</a>, which is now closed but the blog is still alive. Then in September I launched <a href="hhtp://www.tweetcetetera.com">Tweetcetera</a>, an easy web twitter client. Finally in December I launched <a href="http://www.howgoodismyfood.com">Howgoodismyfood</a>.</li>
<li><b>I moved to full time freelance.</b> This is the big change this year, and a big challenge as well as my network, in England, is not as big as it was in France.</li>
</ul>
<p>So basically 2009 was a really good year, and I&#8217;ll work on make 2010 even better.</p>
<h3>Make 2010 better and more exciting than 2009</h3>
<ul>
<li>My first decision in 2010 is to discontinue the Serialcooking web application (we&#8217;ll keep the blog alive). It was supposed to be redo from scratch (because I made a lot of UI mistakes), but finally it&#8217;s going to take a lot of time and effort, and in 2010 I really want to concentrate myself on my freelance activity.</li>
<li>I&#8217;ll <b>blog more</b> as well. This is going to be result of the previous decision. I&#8217;ll have more time to update this blog and to create tutorials and smaller apps.</li>
<li><b>Embrace this f*** social media</b>: I&#8217;ll try to be proactive on <a href="http://uk.linkedin.com/in/nicolasalpi" title="my linkedin profile">Linkedin</a>, <a href="http://www.facebook.com/nicolas.alpi" title="my facebook profile">facebook</a> and <a href="http://www.twitter.com/spyou" title="My Twitter profile">Twitter</a>.</li>
<li>I&#8217;ll do my best to <b>attend at a minimum of 1 network/conference</b> event a month.</li>
<li>Run the Bath half marathon</li>
<li><b>Release at least 3 plugins/gems</b>: I&#8217;ve got some code in the cardboard that I need to clean up before releasing, but I&#8217;ll do it</li>
</ul>
<h3>The most important one</h3>
<p>Find some interesting work!</p>
<p>As some might know I&#8217;m a workaholic, I just love coding, crafting websites, applications. So if you have any project in preparation, do not hesitate to <a href="http://www.notgeeklycorrect.com/about/">contact me</a> for a chat.</p>]]></content:encoded>
			<wfw:commentRss>http://www.notgeeklycorrect.com/personnal/2010/01/04/i-want-to-make-2010-really-exciting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What’s new on Tweetcetera</title>
		<link>http://www.notgeeklycorrect.com/tweetcetera/2009/11/06/whats-new-on-tweetcetera/</link>
		<comments>http://www.notgeeklycorrect.com/tweetcetera/2009/11/06/whats-new-on-tweetcetera/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 17:47:32 +0000</pubDate>
		<dc:creator>Nicolas</dc:creator>
				<category><![CDATA[Tweetcetera]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.notgeeklycorrect.com/?p=554</guid>
		<description><![CDATA[Last week has been a pretty busy week, but I was able to put some time on Tweetcetera.
Appart for some little bug correction, here are the major update that have been done this week
Realtime update in title and tab bar
When Tweetcetera refresh your tweets, it display a little notification on your page displaying the number [...]]]></description>
			<content:encoded><![CDATA[<p>Last week has been a pretty busy week, but I was able to put some time on <a href="http://www.tweetcetera.com">Tweetcetera</a>.</p>
<p>Appart for some little bug correction, here are the major update that have been done this week</p>
<h3>Realtime update in title and tab bar</h3>
<p>When <a href="http://www.tweetcetera.com">Tweetcetera</a> refresh your tweets, it display a little notification on your page displaying the number of new tweets.</p>
<p style="text-align: center;"><a href="http://www.notgeeklycorrect.com/wp-content/uploads/tweetcetera_top_updates.png"><img class="size-full wp-image-555  aligncenter" title="tweetcetera_top_updates" src="http://www.notgeeklycorrect.com/wp-content/uploads/tweetcetera_top_updates.png" alt="tweetcetera_top_updates" width="250" height="181" /></a></p>
<p>Now it also display this number in your title bar and in you tab bar if you&#8217;re using a tabbed browser. That&#8217;s really convenient as you don&#8217;t need to go back to the page to view is their are updates in your network.</p>
<h3>Real time count down</h3>
<p><a href="http://www.tweetcetera.com">Tweetcetera</a> now display a count down before the next auto update of your timeline, user timeline or search results.</p>
<p style="text-align: center;"><a href="http://www.notgeeklycorrect.com/wp-content/uploads/tweetecetera_next_refresh.png"><img class="size-full wp-image-556  aligncenter" title="tweetecetera_next_refresh" src="http://www.notgeeklycorrect.com/wp-content/uploads/tweetecetera_next_refresh.png" alt="tweetecetera_next_refresh" width="178" height="55" /></a></p>
<p>So you now exactly when it&#8217;s going to be refreshed.</p>
<h3>Follow cost</h3>
<p><a href="http://www.tweetcetera.com">Tweetcetera</a> is now using the <a href="http://followcost.com/">Followcost</a> api to display the number of average tweets/day and the number of tweets replied on a user page.</p>
<p style="text-align: center;"><a href="http://www.notgeeklycorrect.com/wp-content/uploads/tweetcetera_follow_cost.png"><img class="size-full wp-image-557  aligncenter" title="tweetcetera_follow_cost" src="http://www.notgeeklycorrect.com/wp-content/uploads/tweetcetera_follow_cost.png" alt="tweetcetera_follow_cost" width="200" height="464" /></a></p>
<p>These indications, combined to the &#8220;mentioning&#8221; sidebar section, give you all the informations you need to decide if you&#8217;ll follow a user or not.</p>
<h3>What&#8217;s next?</h3>
<p>Next week I&#8217;ll be working on list implementation, and usernames auto completion. Please if you want to see any features, just drop me a message or comment on the <a href="http://getsatisfaction.com/tweetcetera">getsatisfaction</a> page or on this blog post.</p>]]></content:encoded>
			<wfw:commentRss>http://www.notgeeklycorrect.com/tweetcetera/2009/11/06/whats-new-on-tweetcetera/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tweetcetera is live today!</title>
		<link>http://www.notgeeklycorrect.com/ruby-on-rails/2009/10/29/tweetcetera-is-live-today/</link>
		<comments>http://www.notgeeklycorrect.com/ruby-on-rails/2009/10/29/tweetcetera-is-live-today/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 12:22:24 +0000</pubDate>
		<dc:creator>Nicolas</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Tweetcetera]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.notgeeklycorrect.com/?p=540</guid>
		<description><![CDATA[
\o/ \o/ Tweetcetera is now live! After several development weeks, it&#8217;s finally out!.
What&#8217;s Tweetcetera &#8230;
Tweetcetera is meant to look similar to Twitter web interface, so that you don&#8217;t need to learn how to use a new website. But we have added some nice features, which we felt were missing from the original product.
You won&#8217;t find [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.notgeeklycorrect.com/wp-content/uploads/slide.png"><img class="size-full wp-image-543  aligncenter" title="slide" src="http://www.notgeeklycorrect.com/wp-content/uploads/slide.png" alt="slide" width="564" height="180" /></a></p>
<p>\o/ \o/ <a href="http://www.tweetcetera.com">Tweetcetera</a> is now live! After several development weeks, it&#8217;s finally out!.</p>
<h3>What&#8217;s <a href="http://www.tweetcetera.com">Tweetcetera</a> &#8230;</h3>
<p><a href="http://www.tweetcetera.com">Tweetcetera</a> is meant to look similar to Twitter web interface, so that you don&#8217;t need to learn how to use a new website. But we have added some nice features, which we felt were missing from the original product.<br />
You won&#8217;t find any big revolutionary feature but we believe that big changes can come from small differences. To see what we mean by &#8217;small differences&#8217;, have a look at the details below. And if you&#8217;re still not convinced, try it and we promise you&#8217;ll never go back to using Twitter web interface (or so we hope!).</p>
<h3>.. In 3 words?</h3>
<p>Twitter stupidly easy!</p>
<h3>Give it a try</h3>
<p>To really release <a href="http://www.tweetcetera.com">Tweetcetera</a> power, you have to use it, for 1 hour, and you&#8217;ll be convince. Please feel free to add any comment or feedbacks to develop it on the right direction.</p>]]></content:encoded>
			<wfw:commentRss>http://www.notgeeklycorrect.com/ruby-on-rails/2009/10/29/tweetcetera-is-live-today/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Caffeine for Linux, now available in version 1.0</title>
		<link>http://www.notgeeklycorrect.com/geek-stuff/2009/10/23/caffeine-for-linux-now-available-in-version-1-0/</link>
		<comments>http://www.notgeeklycorrect.com/geek-stuff/2009/10/23/caffeine-for-linux-now-available-in-version-1-0/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 12:34:44 +0000</pubDate>
		<dc:creator>Nicolas</dc:creator>
				<category><![CDATA[Geek Stuff]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.notgeeklycorrect.com/english/2009/10/23/caffeine-for-linux-now-available-in-version-1-0/</guid>
		<description><![CDATA[After Shutter, the Skitch like for Linux, I would like to spot the light to a very useful Linux app called Caffeine.
Why is it use for?
Caffeine stop your computer for going to sleep, or just to switch your back light off.
Really useful when watching a video, or during a meting.
You can also add process, that [...]]]></description>
			<content:encoded><![CDATA[<p>After <a href="http://www.notgeeklycorrect.com/tools/2009/10/20/shutter-a-skitch-for-linux/" target="_blank">Shutter</a>, the Skitch like for Linux, I would like to spot the light to a very useful Linux app called Caffeine.</p>
<h3>Why is it use for?</h3>
<p>Caffeine stop your computer for going to sleep, or just to switch your back light off.<br />
Really useful when watching a video, or during a meting.</p>
<p>You can also add process, that will automaticaly enable Caffeine. (Like VLC, OpenOffice, what ever ..).</p>
<h3>How to get it?</h3>
<p>On the <a href="http://www.blastfromthepast.se/blabbermouth/2009/10/caffeine-for-linux-1-released/" target="_blank">Caffeine developer blog</a>, you can find a good introduction to the software.</p>
<p>To install it, just follow the instructions for the <a href="http://www.blastfromthepast.se/caffeine/index.php?title=Downloads" target="_blank">Caffeine Wiki</a>.</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=59cfce66-ba77-8256-9200-fb4a7368596d" alt="" /></div>]]></content:encoded>
			<wfw:commentRss>http://www.notgeeklycorrect.com/geek-stuff/2009/10/23/caffeine-for-linux-now-available-in-version-1-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shutter, a skitch for linux</title>
		<link>http://www.notgeeklycorrect.com/tools/2009/10/20/shutter-a-skitch-for-linux/</link>
		<comments>http://www.notgeeklycorrect.com/tools/2009/10/20/shutter-a-skitch-for-linux/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 09:25:10 +0000</pubDate>
		<dc:creator>Nicolas</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[alternatives]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.notgeeklycorrect.com/tools/2009/10/20/shutter-a-skitch-for-linux/</guid>
		<description><![CDATA[Yesterday, during a meeting I saw one of a mac addict using Skitch. Like every time I saw someone using a good proper Mac Os only tool, I try to find a proper Linux alternative.
Shutter is the Skitch Linux alternative:
Then I found Shutter. Shutter is the Skitch Linux alternative.To install it on Ubuntu, just download [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday, during a meeting I saw one of a mac addict using <a target="_blank" href="http://skitch.com/">Skitch</a>. Like every time I saw someone using a good proper Mac Os only tool, I try to find a proper Linux alternative.<br />
<h3>Shutter is the Skitch Linux alternative:</h3>
<p>Then I found <a href="http://shutter-project.org/" target="_blank">Shutter</a>. Shutter is the Skitch Linux alternative.<br />To install it on Ubuntu, just <a href="http://shutter-project.org/downloads/" target="_blank">download</a> the last version or add the <a href="https://launchpad.net/%7Eshutter/+archive/ppa" target="_blank">Shutter PPA repository</a> to your sources.<br />
<h3>Features:</h3>
<p>As far as I&#8217;ve tested, <a href="http://shutter-project.org/" target="_blank">Shutter</a> is full of goodness. It makes screenshots on Linux easy.</p>
<p>You&#8217;ll be able to capture a entire window, or a portion of you desktop. Multiple capture history is supported.<br />Then you be able to basically edit this image with the built in image editor.<br />And finally you&#8217;ll be able save or upload your screenshot to image sharing website.</p>
<p>I you want to upload your image from Shutter to Flickr, you&#8217;ll need to install Postr. Just read <a href="http://shutter-project.org/faq-help/upload-to-flickr/" target="_blank">Shutter upload to flickr about page</a> to see how easy it is.</p>
<p>I really like when developers come with good solutions for every day problem like this. And definitely <a href="http://shutter-project.org/" target="_blank">Shutter</a> is one of them.</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=98e07c0a-05fe-840c-bdec-dcb275f60e9e" /></div>]]></content:encoded>
			<wfw:commentRss>http://www.notgeeklycorrect.com/tools/2009/10/20/shutter-a-skitch-for-linux/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
