Congratulation

17 05 2008

Yes, they did it !!!
I’m proud to have been part of this, although if it was only more than 1 year ago.
Congrats to evan and co.




Surrender to Remember ?

9 05 2008

On Wired, from LifeHacker, a very interesting article on Spaced Repetitions. Very interesting in the sense it relates the story of one man that is aiming at reaching every student’s dream: never forget what you learned (and honestly this is also one of my dream).

The idea is ridiculously simple but seems to lead to a very effective method (by the way this seems to be a invariant regarding the most effective methods: GTD, InboxZero, TDD are all based on a very simple but with powerful idea): if you re-learn what you already learned, you’ll forget it less … The trick is to re-learn when you’re almost forgetting: you have to make an effort to remember, in order to re-enforce the ‘retrieval strength’, and thus remember for a longer period.

Piotr Wozniak wrote SuperMemo just for this: helping him in guessing when he’s going to forget … However, he can be qualified as an extremist: he totally surrender to his very own algorithm, basing his whole life on it, letting it to decide what to learn and when ….

So, without going to such extremities, I do think that this method worth a try. Either using Anki or Mnemosyne, 2 open-source tools based on the same algorithm, one can try to learn foreign languages vocabulary (Japanese is supported by both of them for example).

This is exactly what I’m going to try: learning some Japanese vocabulary with these tools.

And you ?




GTD

22 12 2007

As previously said, I’m lazy and as such I’ve always a tendency to procrastinate, being, in the end, overwhelm by all the work I’ve said I’ll do and that I (almost) forgot to do …

However, I’m trying to fight against this tendency, and to find some new ways of both improving myself and delivering on time the best work I can…

In order to not forget what I’ve to do, and to get things done, I’ve turned toward … well, GTD. I immediately find the concept quite clear and coherent: the idea is to flush the brain from all the things you need to remember (buy bread, write some meeting minutes, and so on) by writing them down, and reviewing periodically your list of things to do (based on the context you’re in: at home, in front of computer and so on).

Being a geek, my first reaction to note my list-of-things-to-remember has been to use a computer (well a set of, including Palm Pilot and so on). This lead to development of several tools (ranging from a simple todo list command line application with RSS feed publication, to a GTD list — todo list with contexts — updated through a set of key bindings using Launchy and Snarl for the visual notification), the usage of several tools written by others (ThinkingRock, GTDMonkey, a plugin for Lotus Notes, …).

However none of them was really my cup of tea … I began using them, really trying to keep them updated, but after some time, I stopped using them …

I now have found my perfect tool for all this, or I should say the perfect tools: a notebook, a black pen and a red pen.

I spend a lot of time attending meetings, and it is more natural, more simple and more easy for me to manually take note than using my laptop for this (it’s hard to add drawings to notes on a laptop for example). I thus develop a simple method to keep track of all the things I’ve to do or to delegate.

In the left margin of my notebook, I draw a red ‘[ ]’ for all of the task I’ve to do myself, and write on the right, in black, the task by itself. Should this task by delegated to someone, I wrote a ‘( )’ instead of the bracket version, in the left margin, and clearly identify the person I’m going to delegate this task too (i.e. adding his name in red).

GTD

Each time one of the tasks is either done or delegated/done to the right person, I check the bracket or parenthesis block.

Using 2 different colors allow me to easily flip over pages to check all the tasks have been properly addressed.

Should I need to add task that are not part of the current meeting (i.e. some additional ideas that come up but have nothing to do with the meeting content), I use the same schema, but using the top margin as a scratch pad.

This may look oversimplified or old-school, but hey, it just work for me.




I’ll be there …

18 11 2007

Paris On Rails




Right tools …

9 08 2007

You know you did a great job in the last 10 minutes when you go from:

Total time: 15.5901584625244Average time: 3.11803169250488

to

Total time: 3.72735238075256Average time: 0.745470476150513

This performances improvement main reason ? Simple: last version of ruby-prof eases Ruby On Rails application profiling to the extreme … simplifying the work of your truly ;)

Add to this a good example from the ruby-prof’s author and you get a neat performances improvement by only modifying 2 or 3 lines of code. The funniest part is that the root of the previously bad performances is the exact same as the one described in the article: massive usage of ActiveRecord#attributes in an object method called for every access to the objects’s fields:

%self     total     self     wait    child    calls  name
55.20     28.28    27.35     0.00     0.93    82447  Kernel#clone

Another example, that with the use of the right tools ….




Manage It !

18 07 2007

Yes ! I just received it !

Following my review of Manage It ! (which, by the way, was at this time called ”Successful Project Management”), PragProg Lords sent me a paper version of the book :). Timing is excellent as I’ll be able to read it again during my vacations.

This book is really really a pure diamond. Easy and fun to read, and as usually full of war stories. Reading it, you’ll face a lot of “Aha!” moments (i.e. you’ll think: “Wow … how can I have not already doing this ?”), to sum-up a really pragmatic book ;)

The author describes the different steps of a project life cycle ( Starting a project, Planning a project, Using Life Cycle to design your project, Estimating the Work … ) in a more than clear, simple (in a good way), and pragmatic way, without imposing any tool, with only a good amount of common sense… a must-read for all (wanabe) Project Managers.




BDD

9 05 2007

BDD - Behaviour Driven Development.

I once was a fan of TDD (aka. Test Driven Development) … whereas I use it in languages where it just naturally fit (e.g. Ruby, Perl) or in language where it’s less obvious (think C)… One of the neat effects of this way of coding IMHO, is that it forces you to act as a user/client of the class/API you’re developping, and thus to get immediately feedback on the usuability/coolness of your class.

In that sense, BDD is not far from TDD … with a more positive attitude. With TDD, you are testing your code, with all the negativeness carried by the word “testing”. With BDD, you’re specifying what your code is supposed to do, you write that code, and you check the code you just wrote match the specifications.

Moreover, depending on the framework you’re using, this can be fun to read and write. For example, using RSpec, for Ruby:

Code (ruby)

context "A username with a strange-case fullname" do
  setup do
    @username = UserName.new( "joobarbaz", "jean-Christophe oobar BAZ" )
  end

  specify "should have correctly capitalized firstname" do
    @username.firstname.should == "Jean-Christophe"
  end

  specify "should have correctly capitalized lastname" do
    @username.lastname.should == "Oobar Baz"
  end
end
 

DSL defined by RSpec, allows to easily specify what your methods are supposed to do and to test it. Running the snippet above leads to something like:

$> spec -fs username-spec.rb
A username with a strange-case fullname
- should have correctly capitalized firstname
- should have correctly capitalized lastname
$>

… which leads to specifications listing while testing these specifications.

You can thus write your class specifications, using the framework DSL, and then write the code that will match these specs: specifications and code will stay synchronized … we’re not so far from D. Knuth own “literate programming” ;)




/dev/null is dead … Hail to /dev/nul … reloaded

4 05 2007

I explained the reasons that lead me to close /dev/null … Let’s see if the possibility to have feedback from my 2 readers, as well as being able to post from everywhere (provided I have access to the web ;) will allow me to write more …

To be continued …