a3nm's blog

drime -- a better French rhyme dictionary

— updated

English version

Version française ci-dessous.

When I write poetry in French, I find rhyme dictionaries valuable. Unfortunately, I couldn't find a satisfactory one, so I wrote my own French rhyme dictionary.

Its nice features are support of rhyme gender (a rhyme constraint which is often forgotten these days), filtering on the number of syllables so you can easily complete your verse, good results and a nice ordering. It suits my needs, more or less, so maybe it'll suit yours; if it doesn't, feedback is always welcome.

If you want to run it on your server or on your machine (with a CLI interface), you can grab the sources or have a look at the README.

Version française

English version above.

Quand j'écris de la poésie, j'aime bien utiliser un dictionnaire de rimes. Malheureusement, je n'en ai pas trouvé qui me satisfasse, donc j'ai fait mon propre dictionnaire de rimes françaises.

Il comprend des fonctionnalités telles que le respect du genre des rimes (contrainte que les gens ont tendance à oublier de nos jours), le filtrage sur le nombre de syllabes pour compléter un vers, des résultats pas trop mauvais et un ordre de tri pas trop absurde. Il répond plus ou moins à mes besoins, peut-être qu'il peut vous être utile. Si quelque chose vous déplaît, les commentaires sont bienvenus.

Si vous voulez le faire tourner sur votre serveur ou sur votre machine avec une interface en ligne de commande, vous pouvez récupérer le code source ou jeter un œil au README.

Hacking the fnacbook (aka. Kobo by Fnac)

— updated

I just got a Fnacbook for Christmas. Of course, I have no intention to use this device to buy DRM-ed files, or sync it to the cloud, or use any of the invasive "social" features provided. In this post, I give some information to understand what the beast does, how to get a shell, and how to prevent it from accessing the manufacturer's website using /etc/hosts.

Of course, though this information seems correct as of this writing, it might become outdated as new versions of the firmware get released and other versions of the device come out. Be careful, and don't blame me if something goes wrong.

See also my followup post about the Kobo Touch and Kobo Glo.

What's in the box?

There is little documentation (and no useful documentation) provided with the device in the Fnac packaging, but you can find out from the serial number that the device is a Kobo Touch N905. It's pretty hard not to get confused by people writing about different Kobo devices. The Wikipedia page about the Kobo eReader gives an overview of the existing devices.

Mounting the device

The device can just be mounted as an UMS drive on a Linux computer. Beware, however: if the device appears as /dev/sdb, you need to mount /dev/sdb directly, not /dev/sdb1. Indeed, running fdisk -l /dev/sdb will not show any partitions. This is normal, and confused me for some time.

Registration, and how to circumvent it

When powering up the device, it will first ask you to pick a language, and will then ask you to install the free desktop application on your computer and synchronize with it. Of course, this application is not free as in freedom, and getting it to run under Linux seems nontrivial. You can skip the activation step, but some features (like activating Wi-fi) will not be available until it has been completed. Or rather, until the device thinks it has been completed.

Fortunately, the device is just naively checking for a record in an sqlite database that is available when you mount it on your computer, so this is easy to fake. Assuming that you mounted the device as /mnt/kobo with suitable permissions, just run:

echo "insert into user values('foo', 'foo', 'foo', 'foo', 'foo');" | sqlite3 /mnt/kobo/.kobo/KoboReader.sqlite

Ethan S. points out that the schema of this SQL table has changed on more recent Kobo versions, so you may need to adjust these instructions to the format used by your Kobo. You can also refer to this thread for more information.

When you unmount the device and unplug it and tap the sync icon, you should now be able to use Wi-fi.

Reading life, and why you might want to disable it

The settings page mentions a feature called "Reading Life" which is presented as something which "allows you to track your reading activity and win awards from Kobo". Reading the presentation page, however, I get the impression that it is some "social" feature which will also allow Kobo (and maybe their partners) to track your reading activity. I don't know the exact scope of this, but if you're like me, you'll probably want to disable this right away. This can be done from the settings menu. An alternative, more radical method is presented in the next sections.

it seems that the device is also sending tracking information via Google Analytics, see this thread

Updating the firmware

When the device gets an Internet connection, it will silently connect to mobile.kobobooks.com and, among other things, request a firmware update. If one is available, it will download it automatically and prompt you to install it. I found some information about the details of this exchange, but it is outdated. Fortunately, someone already did the sniffing and we have the URL of firmware 1.9.16 which is the most recent as of this writing. You can download it manually, examine it and install it by uncompressing the zip archive in the .kobo folder (source).

Rolling your own update to get a shell

Retrieving the update manually makes it possible to examine what it contains. In the zip file, you can see that the device is using u-boot, and you can see a KoboRoot.tgz file. As it turns out, if such a file is present in the .kobo folder, it will just get decompressed to /. This means that we can alter the system to suit our needs.

Actually, someone already documented the process to get telnetd and ftpd running, though the instructions need to be adjusted for the firmware you have. For version 1.9.16, you will need to:

  • Create /etc/inetd.conf as documented in the old instructions.
  • Prepare /etc/init.d/rcS by retrieving it from the KoboRoot.tgz in the original update and adding the following lines at the end (from the old instructions and updated info):
    mkdir -p /dev/pts
    mount -t devpts devpts /dev/pts
    /usr/sbin/inetd /etc/inetd.conf &
    
  • Ensure that rcS is executable.

Now, zip the resulting etc folder in a file named KoboRoot.tgz, put it on the device like regular firmware, unplug, and the device will install it and reboot. Now, if everything worked well, you can connect to a network and have telnet and ftp access as root (with no password). Of course, this is unsecure, and you should setup a password (just run busybox passwd from the root shell).

Running dropbear

Running dropbear on the device provides an ssh client and an ssh server, which can supersede both ftp and telnet, is more secure, and can be used for passwordless authentication. This comment indicates how to do it, except that you will need to set root's home to /root in /etc/passwd (and use /root/.ssh as the ssh configuration directory) to get key authentication working (dropbear will complain about permissions not being right otherwise).

(In case the comment above disappears, the crucial information is that you should use the "diablo Extras free armel" version of dropbear from Maemo. more information about dropbear and reverse ssh on my followup post)

Note that scp access (or ftp) allows you to upload books to your device over Wi-fi. However, it will not trigger the content indexing phase that the device normally performs, which is why it will not see new books or will crash when trying to access books which no longer exist. The indexing step is triggered by plugging the device to a computer and unplugging (even without mounting it), and I haven't found any way to trigger it from the shell yet. :-( actually, there is one, see my followup post

Another problem is that the device will apparently turn off the Wi-fi connection automatically after some time to save battery, which is annoying when using a shell. I haven't found how to disable this yet. a crude one is suggested in my followup post

Factory reset

If you keep the home button pressed while booting the device, it will immediately and without confirmation perform a factory reset. I am not sure yet about how this reset is performed, but it seems to be pretty low-level, as it seems to restore the root filesystem in the factory state. I confess that I messed up at some point and flashed something which prevented the device from booting, but the factory reset was able to save me. I guess it is hard to brick the device unless you start messing with u-boot, though this is just a guess.

Preventing the device from phoning home

It is likely that any updates to the root fs will overwrite /etc/init.d/rcS and require you to perform part of this setup again. Or maybe it will change the way updates are installed and break this setup. Since those updates get installed automatically whenever an Internet connection is enabled on the device, this is a problem.

I don't know of any way to make updates opt-in. The only way I found is to use the /etc/hosts to block the device from contacting its parent site. This also has the benefit of blocking any tracking like Reading Life. To do this, add the following to /etc/hosts:

0.0.0.0 kobobooks.com mobile.kobobooks.com www.kobobooks.com dev.kobobooks.com
0.0.0.0 partner.dev.kobobooks.com ecimages.kobobooks.com images.kobobooks.com
0.0.0.0 www.google-analytics.com ssl.google-analytics.com google-analytics.com

added Google Analytics blocking as per this thread

To check that this works, just connect to a network and the device should give an error message "Network Error". Of course, the connection is perfectly functional, and the device is just complaining about not being able to reach its server. Note that you can replace 0.0.0.0 with the IP of a machine you control if you want to see what the device is sending and possibly forge replies. I haven't tried this yet.

This means that you will not automatically get the latest updates from Kobo, of course (which is the whole point). If an update is released, first review it to see what it does, and, if it doesn't do anything evil, download it and install it manually like explained above, after fixing the rcS file if necessary.

More info

If you really want to hack the reader, code is available. I also recommend the blog post series by Craig Ringer about the device.

I also recommend Hacking the Kobo Touch for Dummies, and my followup post about the Kobo.

Non-homophonous homographs in French

— updated

In this post, I present a list of French words which are spelled the same but pronounced differently which are apparently also called heteronyms. This is, in a sense, the converse of the much more frequent phenomenon of non-homographic homophones. The list presented here are all the occurrences that I noticed in the Lexique database (minus some obvious errors); it turns out that more liberal lists exist (see for instance this list on the French Wiktionary). Actually, I really wonder what is the point of this list since it is tedious and not even complete, but I felt compelled to write it and had some time to waste, and now that it is done, I might as well publish it...

As it turns out, the phenomenon is surprisingly rare. Besides, it almost always occurs between words of different grammatical categories (except for "fils" and "plus" and some verbs), which means that grammatical context should help to disambiguate.

The reader should keep in mind that non-homophonous homographs are not the only way in which writing must be disambiguated when reading it. Another case is that of liaisons which give information about the grammatical structure of a noun phrase: for instance, "un acheteur de livres anglais" means "an English book buyer", ie. either "a buyer of English books" or "an English buyer who buys books": in the first case liaison should be made (zA~glE), whereas in the second case it cannot (A~glE) because liaison should not occur between a noun and an adjective unless they are immediate siblings in the grammatical tree. Changed examples and rewrote discussion following remarks by Etienne.

All pronunciation is written using X-SAMPA; etymology information was mostly taken from the French Wiktionary and the Trésor de la Langue Française. I did not intend this to be a serious study, however, hence the absence of inline quotations.

I group the cases in three general categories with the same general mechanism, and a fourth category of exceptional cases.

See also my list of ambiguous verbal forms in French and my list of French words without rhymes.

Indicative imperfect first person plural of a verb vs. plural of a noun

Those are words ending in "-tions" which can be understood either as the indicative imperfect first person plural of a verb in "-ter" or "-tir" (in which case they will be pronounced -tjO~) or as the plural of a noun in "-tion" (in which case they will be pronounced -sjO~). In some cases, the noun and verb have some similarity; in other cases, they have none.

acceptions (aksEptjO~, aksEpsjO~)
Clash between verb "accepter" ("to accept") and related noun "acception" ("a possible meaning for a word", and a few other meanings).
actions (aktjO~, aksjO~)
Clash between rare verb "acter" (mostly replaced today by "prendre acte de", meaning "take something into account") and related noun "action" ("action") from verb "agir" ("to act").
adoptions (adOptjO~, adOpsjO~)
Clash between verb "adopter" and derived noun "adoption".
affections (afEktjO~, afEksjO~)
Clash between verb "affecter" and related noun "affection". Both words have a lot of possible meanings, with much similarity.
contractions (kO~tRaktjO~, kO~tRaksjO~)
Clash between verb "contracter" and derived noun "contraction".
éditions (editjO~, edisjO~)
Clash between verb "éditer" and derived noun "édition".
exceptions (eksEptjO~, eksEpsjO~)
Clash between verb "excepter" and the much more common noun "exception".
exécutions (egzekytjO~, egzekysjO~)
Clash between verb "exécuter" and the derived noun "exécution".
inspections (E~spEktjO~, E~spEksjO~)
Clash between verb "inspecter" and the derived noun "inspection".
intentions (E~tA~tjO~, E~tA~sjO~)
Clash between rare verb "intenter" ("to take to court") and the related noun "intention" ("intention").
interceptions (E~tERsEptjO~, E~tERsepsjO~)
Clash between verb "intercepter" and the derived noun "interception".
inventions (E~vA~tjO~, E~vA~sjO~)
Clash between verb "inventer" and the derived noun "invention".
mentions (mA~tjO~, mA~sjO~)
Clash between verb "mentir" ("to tell a lie") and the unrelated noun "mention" ("mention") for which the related verb is "mentionner" ("to mention").
notions (nOtjO~, nOsjO~)
Clash between verb "noter" ("to take note of") and the unrelated noun "notion" ("notion").
objections (ObZEktjO~, ObZEksjO~)
Clash between verb "objecter" and the derived noun "objection".
options (OptjO~, opsjO~)
Clash between rare verb "opter" and the derived noun "option". Notice that the first "o" is also pronounced differently.
portions (poRtjO~, pORsjO~)
Clash between verb "porter" ("to carry", from Latin "porto") and the derived noun "portion" ("portion", "serving", from Latin "portio").
prospections (pROspEktjO~, pRospEksjO~)
Clash between verb "prospecter" and the derived noun "prospection".
rations (RatjO~, RasjO~)
Clash between verb "rater" ("to miss", from an obsolete expression "prendre un rat") and the unrelated noun "ration" ("ration", from Latin "ratio").
relations (R2latjO~, R2lasjO~)
Clash between verb "relater" ("to relate") and the much more common noun "relation" ("relation").
sélections (selEktjO~, selEksjO~)
Clash between rare verb "sélecter" ("to select", in some specialized contexts) and the much more common noun "sélection" ("selection") for which the usual verb is "sélectionner" ("to select").

Indicative present third person plural of a verb vs. adjective or noun

Those are words ending in "-ent" which can be understood either as the indicative present third person plural of a verb (in which case they will be pronounced -, ie. the ending is mute) or as a noun or adjective (pronounced -A~).

affluent (afly, aflyA~)
Clash between verb "affluer" ("to flow") and derived adjective "affluent" ("which flows") and noun "affluent" ("of water, to flow inside a stream").
confluent (kO~fly, kO~flyA~)
Clash between verb "confluer" ("of a flow, to converge") and derived adjective "confluent" and noun "confluent".
content (kO~t, kO~tA~)
Clash between verb "conter" ("to tell a story", a bit dated, derived from Latin "computare" which also led to "compter" ("to count")) and unrelated adjective "content" ("happy", from Latin "contentus") which can also be used as a noun in the old expression "son content" ("as much as one needed").
convergent (kO~vERZ, kO~vERZA~)
Clash between verb "converger" and adjective "convergent" ("converging").
couvent (kuv, kuvA~)
Clash between verb "couver" ("to sit upon an egg", from Latin "cubare") and unrelated noun "couvent" ("convent", from Latin "conventus"). A well-known play on word is "les poules du couvent couvent" (the hens from the convent sit upon eggs), finishing in kuvA~ kuv.
coïncident (kOE~sid, kOE~sidA~)
Clash between verb "coïncider" and derived adjective "coïncident".
divergent (divERZ, divERZA~)
Clash between verb "diverger" and derived adjective "divergent".
émergent (emERZ, emERZA~)
Clash between verb "émerger" and derived adjective "émergent".
équivalent (ekival, ekivalA~)
Clash between rare verb "équivaloir" ("to be of the same value") and derived adjective and noun "équivalent".
évident (evid, evidA~)
Clash between verb "évider" ("to hollow", from Latin "vacuus") and much more frequent and unrelated adjective "évident" ("obvious", from Latin "evidens").
excellent (eksEl, eksElA~)
Clash between verb "exceller" ("to excel") and derived adjective "excellent".
expédient (ekspedi, ekspedjA~)
Clash between verb "expédier" ("to send", "to expedite") and rare adjective and noun "expédient" ("expedient").
ferment (fERm, fERmA~)
Clash between verb "fermer" ("to close", from Latin "firmare") and unrelated noun "ferment" ("ferment", from Latin "fermentus").
influent (E~fly, E~flyA~)
Clash between verb "influer" ("to influence") and related adjective "influent" ("influential").
insolent (E~sOl, E~sOlA~)
Clash between rare verb "insoler" ("to expose to light" in technical contexts) and unrelated adjective and noun "insolent" ("insolent").
négligent (negliZA~, negliZ)
Clash between verb "négliger" ("to neglect") and related adjective and noun "négligent" ("careless").
parent (paR, paRA~)
Clash between rare verb "parer" ("to parry" or "to adorn", from Latin "parare") and the much more frequent noun and adjective "parent" ("parent", from Latin "parens").
président (pRezidA~, pRezid)
Clash between verb "présider" ("to preside") and derived noun "président" ("president").
résident (Rezid, RezidA~)
Clash between verb "résider" ("to reside") and derived noun and adjective "résident" ("which resides").
somnolent (sOmnOl, somnOlA~)
Clash between verb "somnoler" ("to drowse") and related adjective "somnolent" ("drowsy").
talent (tal, talA~)
Clash between rare verb "taler" ("to hurt", "to nag", from popular Latin "talare") and the much more common noun "talent" ("talent", from Latin "talentum").
urgent (yRZ, yRZA~)
Clash between verb "urger" ("to be urgent") and more common derived adjective "urgent" ("urgent").
violent (vjOl, vjolA~)
Clash between verb "violer" ("to rape", from Latin "violare", from "vis") and derived adjective "violent" ("violent", from Latin "violentus", also from "vis").

Infinitive of a first group verb vs. nouns (often borrowed from English)

This is a conflict between a verb infinitive ending in "er" (and pronounced -e), and a noun ending in "er" (and pronounced either -ER or -9R). Sometimes the verb is an existing French verb, and sometimes it is a borrowing from English with the suffix "-er" added to create a verb, conflicting with the use of "-er" in English to mean "someone who does something" (the same occuring with suffix "-eur" in French).

boxer (bOkse, bOksER)
Clash between verb "boxer" ("to box" in the sense of "to strike with the fists", borrowed from English in the 18th century) and noun "boxer" ("the boxer race of dogs", or "boxer shorts", borrowed from English in the 20th century). The noun derived from verb "boxer" is "boxeur" ("someone who practices boxing", pronounced bOks9R).
carter (kaRte, kaRtER)
Clash between rare verb "carter" (a neologism meaning "to check the age of someone by requesting their identity card") and rare noun "carter" ("a protective box for a mechanism", from the name of its inventor, J. Harrison Carter).
chopper (SOpe, SOpER)
Clash between rare verb "chopper" ("to stumble", not to be confused with the much more frequent verb "choper", attested since the 17th century) and noun "chopper" (either a chopper motorcycle or a chopper in archaeology, a more recent borrowing from English).
corner (koRne, koRnER)
Clash between verb "corner" (many meanings, the most frequent today being "to fold a corner of a page") and noun "corner" (the "corner" from football, borrowed from English).
driver (dRajve, dRajv9R)
Clash between verb "driver" ("to drive" in certain specialized contexts, borrowed from English) and noun "driver" (either "someone who drives" or "something to drive with" in certain specialized contexts, also borrowed from English).
interviewer (E~tERvjuve, E~tERvjuv9R)
Clash between verb "interviewer" ("to interview", borrowed from English) and noun "interviewer" ("someone who interviews", borrowed from English, with "intervieweur" being the recommended form since the 1990 reform).
manager (manadZe, manadZ9R)
Clash between verb "manager" ("to manage", borrowed from English) and noun "manager" ("manager", borrowed from English).
mixer (miks9R, mikse)
Clash between verb "mixer" ("to mix" for music and food, borrowed from English) and noun "mixer" ("mixer", borrowed from English and also spelled "mixeur").
palmer (palme, palmER)
Clash between rare verb "palmer" (a French verb from French "palme" or from Latin "palma") and rare noun "palmer" (a measurement tool invented by Jean-Laurent Palmer). Those aren't borrowings from English, for once.
placer (plase, plasER)
Clash between verb "placer" ("to place") and rare noun "placer" ("a placer deposit", borrowed from English, or maybe directly from American Spanish)
pointer (pwE~te, pwE~t9R)
Clash between verb "pointer" ("to point") and noun "pointer" (the "pointer" dog breed, borrowed from English)
porter (pORte, poRtER)
Clash between verb "porter" ("to carry") and noun "porter" (the "porter" beer, from English)
ranger (RA~Ze, RA~ZER)
Clash between verb "ranger" ("to tidy up", "to file", "to sort") and noun "ranger" (borrowed from English "ranger").
reporter (R@pORte, R@poRtER)
Clash between verb "reporter" ("to report") and noun "reporter" (borrowed from English "reporter").
scanner (skane, skanER)
Clash between verb "scanner" ("to scan", borrowed from English) and noun "scanner" (borrowed from English).
sprinter (spRinte, spRint9R)
Clash between verb "sprinter" ("to sprint", borrowed from English) and noun "sprinter" ("sprinter", borrowed from English, alternate spelling "sprinteur").
supporter (sypoRte, sypoRt9R)
Clash between verb "supporter" ("to put up with", or, more recently, "to support" like in English) and noun "supporter" ("supporter", borrowed from English in the 15th century).
taler (tale, talER)
Clash between rare verb "taler" ("to hurt", "to nag", from popular Latin "talare") and rare noun "taler" (a German monetary unit, taken from German, and most often written "thaler"). Added this one which was missing.

Miscellaneous cases

as (a, as)
Clash between verb "avoir" ("to have") indicative present second person singular, and noun "as" ("ace", from Latin "as").
bis (bi, bis)
Clash between adjective "bis" meaning "greyish-brown", and adverb "bis" meaning "again" (can also be used as a noun). Added this one which was missing.
bus (by, bys)
Clash between verb "boire" ("to drink") indicative simple past first or second person singular, and noun "bus" ("bus", from "autobus", from "omnibus").
but (by, byt)
Clash between verb "boire" ("to drink") indicative simple past third person singular, and noun "but" ("goal", unclear etymology).
chut (Sy, Syt)
Clash between old verb "choir" ("to fall", now replaced by "tomber") indicative simple past third person singular and onomatopoeia "chut" ("hush!")
convient (kO~vi, kO~vjE~)
Clash between verb "convier" ("to invite") indicative present third person plural and "convenir" ("to be suitable") indicative present third person singular.
désioniser (desjOnize, dezjOnize) and derivatives
Clash between neologism "désioniser" ("to un-Sionize") and technical verb "désioniser" ("to un-ionize", not to be mistaken with the English non-homophonous homograph "union-ize"). Added this one from the French Wiktionary
est (e, est)
Clash between verb "être" ("to have") indicative present third person singular, and noun "est" ("east").
ester (este, estER)
Clash between obsolete verb "ester" ("to go to court", from Medieval Latin "stare") and noun "ester" ("ester", from German "Essigäther").
fier (fje, fjER)
Clash between verb "fier" ("se fier à": "to rely on", from Latin "fidere") and adjective "fier" ("proud", from Latin "ferus").
fils (fis, fil)
Clash between noun "fils" ("son", plural "fils", from Latin "filius") and the plural of noun "fil" ("thread", from Latin "filum"). This one is pretty nasty because it is between two plural nouns which can't always be distinguished by grammatical context, ie. "j'ai deux fils" could either mean "I have two sons" (pronounced ZEd2fis) or "I have two threads" (pronounced ZEd2fil).
hier (jER or iER, je or ie)
Clash between the very common adverb (sometimes used as common noun) "hier" ("yesterday") and the obsolete verb "hier" (to use a certain kind of rod), with the latter (but not the former) having aspirated 'h'. Added this one which was missing.
lacs (lak, la)
Clash between plural of noun "lac" ("lake") and rare noun "lacs" (singular or plural) meaning "a kind of rope" or "a trap". Added this one which was missing, thanks Mc.
lis (li, lis)
Clash between verb "lire" ("to read") indicative present first or second person singular and noun "lis" ("the lily flower", also spelled "lys").
obvient (Obvi, ObvjE~)
Clash between verb "obvier" ("to obviate") indicative present third person plural and "obvenir" (rare legal term for "to befall") indicative present third person singular. Added this one which was missing.
pagaye (pagE, pagaj)
The first pronunciation is for the conjugated form of the verb "pagayer" ("to paddle") and for the noun which is an old alternative spelling of "pagaie" ("a paddle"), the second is for the noun which is a rare alternative spelling of "pagaille" (an elaborate term for "mess"), which also has the very rare alternative spelling "pagaïe". Added this one which was missing.
plus (ply, plys)
A complicated mess. "plus" can be a noun ("a plus", always pronounced plys), the indicative simple past first or second person singular of verb "plaire" ("to please", always pronounced ply), or mean either "more" or "no more", "anymore". In written language, the distinction is usually given by grammar: compare "je n'en veux plus" ("I don't want any more") and "j'en veux plus" ("I want more"), or "il est plus riche" ("he's richer") and "il n'est plus riche" ("he's not rich anymore"). In colloquial speech, however, the first two examples will be rendered as "j'en veux plus" and distinguished by pronunciation of "plus" as plys or ply respectively; more annoyingly, the last two examples will be rendered as "il est plus riche" with "plus" always pronounced as ply and can only be distinguished by context.
pub (pyb, p9b)
Clash between two nouns, "pub" (the first pronunciation) which is a shortened form of "publicité", and "pub" (the second pronunciation) which is from the English "pub". Added this one which was missing.
pressent (pResA~, pRes)
Clash between verb "pressentir" ("to sense") indicative third person singular and verb "presser" ("to press") indicative third person plural. Added this one which I missed because of an error in Lexique
sens (sA~, sA~s)
Clash between verb "sentir" ("to feel", "to smell") indicative present first or second person singular and noun "sens" ("sense").
surfait (syRfE, s9RfE) and similar
Clash between "surfait", the third person singular present indicative of "surfaire ("to overdo"; the past participle often means "overrated") and "surfait", the third person singular present indicatif of "surfer" ("to surf"), a more recent verb. Added this one.
sus (sy, sys)
Clash between verb "savoir" ("to know") indicative simple past first or second person singular and old adverb "sus" ("en sus": "in addition", "further").
transit (tRA~zi, tRA~zit)
Clash between old verb "transir" ("to chill", "to freeze") indicative present or simple past third person singular and noun "transit".
vis (vi, vis)
Clash between verb "voir" ("to see") indicative simple past first or second person singular or verb "vivre" ("to live") indicative simple past or present first or second person singular, and noun "vis" ("screw").

In praise of ^W

— updated

Do you know about "^W"? This is Control-W, a readline binding to delete the previous word. For quite some time, I knew that you could use it like ^H to show off your geekiness^W^W^W^Wpretend that words are erased in text. Then, I noticed that someone I know used it regularly, started to imitate them, and now I'm heavily dependent on it.

The thing is that ^W is not intended to be faster because it's less keypresses than multiple ^H's. It's faster because you can use it to erase an unknown number of letters, up to the beginning of the word.

Let me explain. When you touch type, you usually notice it when you fumbled. Sometimes, you can even press backspace the right number of times and correct your mistake without even having to look or think, because you know the exact wrong sequence that you typed and how to fix it. In some cases, however, you fumbled, but don't know what the exact state of the text is, and you have to look consciously at what you typed to erase the right number of letters until you can start over. Yes, the burden of hitting multiple ^H's until the mistake is fixed seems slight, especially since you're usually looking at the text anyway, but I find it more distracting than when I subconsciously fix typos with backspace. There are also those cases where you're not looking at the screen, or when you don't have any feedback on what you're doing (crappy connections...).

Contrast this with ^W. The key is that your mistakes are usually restricted to one word. With ^W, you don't have to think about the current state of the text : you can just press ^W and start over from the current word. Small trick, but a useful one, and I discovered it quite late...