Archive for the ‘General’ Category

Personal wiki

Sunday, May 10th, 2009

A few months ago, I set up a personal wiki on my server. By personal wiki, I mean a wiki that is for you and yourself only and that is not intended for anyone else to see. The advantage of the wiki is that you can read and edit it from anywhere and the wiki syntax is very convenient. Overall, I found the idea of a personal wiki to be very useful and I think it may help you organize your work/life as well.

TODO-list

I use my wiki to keep a list of things I want to do. This can be project ideas, books or publications I want to read, movies I want to watch. The only problem with a TODO-list is that you generally add more items to it than you remove so the list can grow quite fast!

Notes

Another thing I’ve been using my wiki for is taking notes. Every time I read a publication, I now write down the ideas I found interesting in the paper. For technical books, I try to make a quick summary after each chapter I read. Of course, this takes a little more time than just reading the book but I found out that 1) it helps me memorize the content better and 2) as I write down the summary, I sometimes realize that I didn’t fully grasp a concept and thus I have to clarify my understanding in order to write the notes. I also take notes of interesting companies, conferences, links, program commands I run across…

One important thing with taking notes is not getting too far in taking your notes – otherwise it’s like you’re rewriting the book that you’re reading or you’re recreating the internet…

Diary

I’ve also been using my wiki as a personal mini-diary. At the end of the day, I write down the meaningful things I did of my day and try to remember the interesting ideas I had. It didn’t become a habit yet so I forget to do it very often. Yet, one doesn’t necessarily have something interesting to say everyday so it can become a motivation to try to do something meaningful of your day.

Writing style

Another important thing to consider is that this kind of wiki is strictly personal — it should be protected with a password. Therefore you don’t have to worry about making typos or of what will people think. As a writing style, I make extensive use of bullet lists and I use a mix of English and French, depending on what comes out. Mostly for technical stuff, it often happens that words come in English rather than French so I write directly in English.

Difficultés du français pour les Japonais

Monday, November 3rd, 2008

(English version below)

Voici une liste non-exhaustive et en vrac de difficultés que, d’après mon expérience, les Japonais apprenant le français rencontrent.

  • Distinction entre les sons r et l, v et b, eu et ou.
    • Le français comporte 36 phonèmes (16 voyelles et 20 consonnes) tandis que le japonais n’en comporte que 19 (5 voyelles et 14 consonnes).
  • Distinction entre les articles définis (le, la, les) et les articles indéfinis (un, une, des).
  • Différences sémantiques entre les temps du passé: passés simple et composé, imparfait.
  • Verbes pronominaux comme se souvenir.
  • Distinction de son entre les pronoms il et elle.
  • Le genre des noms – masculin ou féminin.
  • La concordance des temps.
  • Une tendance à thématiser.
    • En caricaturant, « la pomme, je l’ai mangée » au lieu de « j’ai mangé la pomme ».
  • Les mots qui ne s’écrivent pas tels qu’il se prononcent comme monsieur ou oignon.

Cette liste n’inclue bien sûr pas toutes les difficultés que les Français eux-mêmes rencontrent… :-)

————————-

Below a non-exhaustive list of difficulties without particular order that, according to my experience, Japanese people learning French may encounter.

  • Distinction between r and l, v and b, eu and ou.
    • French is composed of 36 phonemes (16 vowels and 20 consonants) while Japanese has only 19 (5 vowels and 14 consonants).
  • Distinction between definite articles (le, la, les) and indefinites articles (un, une, des) .
  • Semantical differences between past tenses.
  • Reflexive verbs such as se souvenir.
  • Sound distinction between pronouns il and elle.
  • Noun genders – male and female.
  • Tense harmony (agreement of tenses).
  • Tendency to topicalization.
    • « the apple, I ate it » instead of « I ate the apple ». (exaggerated example)
  • Words which are not pronounced the way they are written such as monsieur or oignon.

Git memo

Sunday, May 25th, 2008

Tell git who you are

$ git config --global user.name "FirstName LastName"
$ git config --global user.email "user@example.com"

You can run those commands without –global inside a repository.

Fancy colors

$ git config --global color.ui "auto"

Initialize a local repository

$ cd /path/to/project
$ git init

The repository is initially empty, it’s necessary to add the files and directories that we want to track.

$ git add file
$ git commit

The convention for commit messages is:

Short summary of changes.

Long description of changes… Blablablabla.

$ git rm file
$ git mv oldfile newfile

Cloning repositories

Local:

$ git clone /path/to/repo name

Git protocol:

$ git clone git://git.rubini.us/code name

SSH:

$ git clone ssh://myserver.com/var/git/myapp.git name

HTTP:

$ git clone http://yourserver.com/~you/proj.git name

To import new changes from the original repository:

$ git pull

To import changes from another copy of the repository:

$ git pull /path/to/repo

To apply your commits to the original repository (provided you have permissions):

$ git push

To create an alias:

$ git remote add aliasname /path/to/repo
$ git pull aliasname

pull is equivalent to fetch + merge

$ git fetch aliasname
$ git merge aliasname/master

Repository status and history

$ git status
$ git log [file|tag|range]

Use -p to show the log as patches.

$ git diff [file|tag|range]
$ git show [commit-id]

To show an old file:

$ git show v2.5:fs/locks.c

Revert changes

To revert committed changes:

$ git revert commit-id

To revert uncommitted changes:

$ git checkout -f

Creating patches

$ git diff [commit-id-before] [commit-id-after] > my.patch

format-patch is a command to create ready-to-send patches. One commit is created in one file.

To extract the three topmost commits from the current branch:

$ git format-patch -3

To extract patches from a range of commits:

$ git format-patch commit-id-start..commit-id-end

To extract patches since a commit:

$ git format-patch commit-id

Note: In the latter case, this extracts patches since the commit-id excluded.

Tags

List of tags:

$ git tag -l

Tag current work:

$ git tag v1.0

Tag a commit:

$ git tag name commit-id

And to get the commit-id from the name:

$ git rev-parse name

Switch to a tag:

$ git checkout 0.9

HEAD refers to head of the current branch.

Working with branches

To see the current branch:

$ git branch

To see the list of branches:

$ git branch -a

* denotes the current working branch.

For remote branches:

$ git branch -r

To create a new branch and switch to it:

$ git checkout -b branch-name

You may create a branch from a starting reference:

$ git checkout -b branch-name from-branch|commit-id|tag

To switch to another branch:

$ git checkout branch-name

It’s a possible to switch to a revision:

$ git checkout commit-id

Note: if some files differ between the current branch and the branch you check out and are currently open in your text editor, it will warn you that the files have changed. In that case, just reload them.

Working with remote branches

You cannot switch to a remote branch, you need to create a local one which is the copy of the remote one:

$ git checkout -b my-branch origin/my-branch
$ git remote add linux-nfs git://linux-nfs.org/pub/nfs-2.6.git
$ git fetch linux-nfs

Finding regressions

To find a regression that happened between v2.6.18 and master:

$ git bisect start
$ git bisect good v2.6.18
$ git bisect bad master

git will try several revisions until it identifies the revision that caused the regression. You need to tell git if the regression occurs or not with:

$ git bisect bad

and

$ git bisect good

Once the revision is identified, use “git show” to examine it.

To return to the branch you were on:

$ git bisect reset

Compression and self-consistency check

$ git gc
$ git fsck

Git workflow

This is a typical workflow to contribute to a project using git.

Retrieve latest code from the remote repository:

$ git pull

Create a new branch to work safely on a new feature:

$ git checkout -b new_feature

Commit your changes:

$ git commit -a

Check if new code was added in the interim:

$ git checkout master
$ git pull

If anything was changed in the master branch:

$ git checkout new_feature
$ git rebase master

rebase unapplies the changes, updates the branch and reapplies the changes back.

Warning! If you are sharing a branch, you must use:

$ git merge master

If there are conflicts applying your changes during the git rebase command, fix them and use the following to finish applying them:

$ git rebase --continue

Merge the changes in the master branch:

$ git checkout master
$ git merge new_feature

Push your changes to the remote repository if you have permission:

$ git push

Alternatively, submit patches or publish your own copy of the repository so that other people can pull changes from you.

Finally, you may want to delete the branch:

$ git branch -d new_feature

Sharing repositories with the world

SSH is used to push commits and HTTP to allow people to pull from the repository.

$ ssh you@yourserver.com
$ mkdir /home/you/public_html/proj.git
$ cd /home/you/public_html/proj.git
$ git --bare init
$ git --bare update-server-info
$ chmod a+x hooks/post-update
$ exit

Note: init is still called init-db in Debian Etch.

$ cd /path/to/local/repo
$ git remote add origin ssh://yourserver.com/home/you/public_html/proj.git
$ git push origin master

Next time you can omit the arguments:

$ git push

Now you can use:

$ git remote
$ git remote show origin

People can now clone your repository, either by SSH or HTTP.

$ git clone ssh://yourserver.com/home/you/public_html/proj.git
$ git clone http://yourserver.com/proj.git

gitweb

In Debian, gitweb installs to /usr/lib/cgi-bin/gitweb.cgi.

I added the line below to my VirtualHost:
ScriptAlias /gitweb /usr/lib/cgi-bin/gitweb.cgi

I also edited /etc/gitweb.conf to configure the git root as well as the git logo and CSS stylesheet.

Cloning a Subversion repository

$ git-svn clone http://svn.site.org/svnroot/projet -T trunk -b branches -t tags

To import new modifications from Subversion:

$ git-svn rebase

To apply commits to Subversion:

$ git-svn dcommit

References

http://rubinius.lighthouseapp.com/projects/5089/using-git

http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#public-repositories

http://www.kernel.org/pub/software/scm/git/docs/everyday.html

http://www.eleves.ens.fr/home/oudomphe/comp/ware/git.xhtml.fr

http://toolmantim.com/article/2007/12/5/setting_up_a_new_remote_git_repository

もう旅立ちだ

Sunday, December 2nd, 2007

最近、このことを書く時間が見つからなかったが、明日もう日本に行きます。よろしく!取り合えず、何を日本にしに行くか少し話しましょう。今週、授業がやっと終って、試験を全部受けて、来週から研修が始まります。研修はいつも外国に行くいい機会で、ぼくは日本に行きたかったです。ぼくが行く会社は知らなかったけど、日本ではけっこう大きくて有名だそうです。旭化成です。もちろん、旭化成はとくに化学に関することをやっているけど、ぼくは厚木(神奈川)にある音声認識と音声合成チームに入ります。1年間です。今年勉強したこと(信号処理)と趣味(プログラミング)に関係があってよかったです。

二年前一ヶ月日本に行ったけど、あまり旅行しなかったから、今回は時間があったら、いろいろなところに行きたいです。他の予定の一つは一生懸命に日本語を学ぶことです。発音はきれいだし、漢字も文法もとても面白いし…日本語が上達するのに日本に行くのはぜったい嬉しい理由の一つです。

まぁー、とにかく、とっても楽しい経験になりそうです。

Révisionnisme et nationalisme japonais

Monday, April 9th, 2007

Un dossier intéressant sur le Monde diplomatique.

可哀想な日本人

Monday, March 5th, 2007

この記事を読んだとこ。フランスは大変だね。はは。

30,000

Thursday, March 1st, 2007

This is the number of visitors we have every day at FFWorld.com since the release of Final Fantasy XII last week in Europe. This is not less than twice the traffic of a few weeks ago… Wow ! Big thanks to KujaFFman and Kain, the two main editors of FFWorld these days, who are doing a terrific job!

FOSDEM 2007

Tuesday, February 27th, 2007

I attended to the first day of the FOSDEM conference on last saturday. This was the first time I attended such a conference so it was great to see all this crowd, the overall atmosphere and all the bearded geeks ;-) The talks I followed were quite interesting even if the impression I have is that it is generally difficult for great developers to be good speakers.

The first two talks, that probably everyone attended to, were about software patents in Europe and the OLPC (one laptop per child) project. While this is an interesting and challenging project technically speaking, one can wonder if a laptop is really the thing that children from Africa need most at present…

On the afternoon, I attended to Keith Packard’s talk on X.org, Linux BIOS talk and Andrew Morton’s talk on the Linux Kernel. I found the talk on Linux BIOS very technical and difficult to catch. On the contrary, the Linux Kernel talk was more qualitative, in the sense that the technical parts have not been very detailed.

Andrew Morton said something interesting about the kernel contributors. He said that a vast majority of them are professionals that are paid to work full time on the kernel. And the few contributors that are individuals do not remain private very long anyway. This quite cuts the idea that many people have that free software is made by passionates in their garage… He also explained why some companies care about paying kernel developers. It was quite interesting.

FOSDEM 2007

Good news for Telecom Lille 1

Sunday, February 25th, 2007

The French magazine Le Point establishes a ranking of the best engineering schools in France every year. There is one ranking for the post-preparatory classes schools and another one for the post-high school schools. This year, my school Telecom Lille 1 (formerly ENIC) is ranked 3rd in the latter ranking.

Several criteria have been taken into account such as the number of students per teacher, the budget of research, the time required to find one’s first job, the first salary, the order of magnitude of management classes, to name just a few.

The tuition fee is also taken into account. Telecom Lille 1′s is 880 € a year which compared to American or Japanese universities is nothing but compared to some other French public engineering schools is too much in my opinion. Students with a scholarship from the government only have to pay 440 € though.

All in all this is very good news for Telecom Lille 1!

Monkey Island on Linux

Sunday, January 28th, 2007

Many LucasArts games ran thanks to a game interpreter called Scumm. A team reverse-engineered it and developed a multi-platform and open-source version of it called ScummVM. Provided you own the game data, you can thus play Monkey Island and other LucasArts adventure games on Linux..

scummvm

So I tried Monkey Island 3 with it and it worked outstandingly well…

I am quite fascinated by reverse-engineering in general because things like disassemble a program and convert it from ASM to C or study a closed file format require a somewhat scientific method : change one thing at a time and analyze the results.

Anyway, ScummVM is a great achievement and a great program.