<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8961039572124531688</id><updated>2011-07-08T09:13:12.686-07:00</updated><category term='linux'/><category term='xorg'/><category term='wikipedia'/><category term='android'/><category term='opensource'/><category term='translation'/><category term='bugs'/><category term='spam'/><category term='kernel'/><category term='keyboard'/><category term='accelerometer'/><category term='microsoft'/><category term='layout'/><category term='pidgin'/><category term='netherlands'/><category term='subtitle'/><category term='spellcheck'/><category term='bias'/><category term='shortcut'/><category term='openstreetmap'/><category term='patch'/><category term='doc'/><category term='gnome'/><title type='text'>Éric's blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pieleric.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pieleric.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Eric Piel</name><uri>http://www.blogger.com/profile/10245711249435682065</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8961039572124531688.post-1221368195455566805</id><published>2011-06-06T10:26:00.001-07:00</published><updated>2011-06-06T10:26:52.396-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='shortcut'/><title type='text'>Some shortcuts for the Samsung Galaxy Ace</title><content type='html'>&lt;div&gt;&lt;p&gt;While my new external USB hard drive came with a 50 pages manual, of which none were useful, my android smatphone came without manual. HHopefully it's just because I bought it in a small shop in Taiwan... but still it seems most android apps are poorly documented.&lt;/p&gt;&lt;p&gt;After a difficult (early) morning, I discover that there was a screen capture folder with a screenshot in it. It turns out that Samsung has added to the galaxy ace a shortcut to screen capture: back + home (you actually have to press in this order). Surprisingly, on other phones, it's a different combination... as if it was still too easy to find ;-) &lt;/p&gt;&lt;p&gt;I also recently realised that long pressing a key can bring a special action. For instance in the mail client and browser, pressing long menu brings the search widget. Long pressing back in the browser brings the history. &lt;/p&gt;&lt;p&gt;There is also this horrible design which makes the camera application to lock/unlock the interface if power is pressed. Not stupid but completely unstandard. I rebooted my phone twice because I thought the camera had gone blocked before realizing this. &lt;/p&gt;&lt;p&gt;So far I haven't any action activated by the accelerometer, like undo on the iPhone. Still, the picture gallery react a bit to it by tilting the images,&amp;#160; so there is hope to find such a hidden unpractical feature...&lt;/p&gt;&lt;p&gt;Any one knows some other shortcuts? Maybe I should start reading the source code to replace the user manual? &lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8961039572124531688-1221368195455566805?l=pieleric.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pieleric.blogspot.com/feeds/1221368195455566805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8961039572124531688&amp;postID=1221368195455566805' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/1221368195455566805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/1221368195455566805'/><link rel='alternate' type='text/html' href='http://pieleric.blogspot.com/2011/06/some-shortcuts-for-samsung-galaxy-ace.html' title='Some shortcuts for the Samsung Galaxy Ace'/><author><name>Eric Piel</name><uri>http://www.blogger.com/profile/10245711249435682065</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8961039572124531688.post-4403258937754819643</id><published>2011-02-13T06:26:00.000-08:00</published><updated>2011-02-13T06:28:30.393-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openstreetmap'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>Just finished my first town</title><content type='html'>I've just finished mapping my first town in OpenStreetMap, and coincidently it's also the first town where I lived: &lt;a href="http://www.openstreetmap.org/?lat=49.22913&amp;amp;lon=2.89517&amp;amp;zoom=15&amp;amp;layers=M"&gt;Crépy-en-Valois&lt;/a&gt;. Completed it using mainly the "cadastre" from the French authorities, and the Bing imagery, and the memories I have from spending 15 years there (turned out to be extremely useful).&lt;br /&gt;&lt;br /&gt;Of course a place is never fully mapped, but here is can be found:&lt;br /&gt;* all the streets&lt;br /&gt;* all the streets names&lt;br /&gt;* the shape of every building&lt;br /&gt;&lt;br /&gt;I finished by naming the streets, and to ensure the quality, I compared the list of street names found on internet (from the phone directory) to the list in OpenStreetMap. I converted the directory data into a text file with one name per street alphabetically sorted.&lt;br /&gt;&lt;br /&gt;To get the list of streets in OSM, the &lt;a href="http://wiki.openstreetmap.org/wiki/Nominatim"&gt;nominatim&lt;/a&gt; service seemed the most appropriate but I seemed not to answer this type of query. So eventually I settled with a very basic command:&lt;br /&gt;curl -g "http://api.openstreetmap.org/api/0.6/map?bbox=2.8634295463562,49.2131958007812,2.93606853485107,49.2601203918457"&lt;br /&gt;| grep =\"name | sort -u | sed -re "s/.*v=\"(.*)\".*/\1/;s/'/'/" &amp;gt; names-osm.txt&lt;br /&gt;&lt;br /&gt;As long as there aren't many amenities, it works fine. Then using a diff tool (I used &lt;a href="http://meld.sourceforge.net/"&gt;Meld&lt;/a&gt;), you can see which street is still missing, or where there are spelling mistakes. It turned out to be really useful. In addition to knowing there are 212 streets in such a small town, it even allowed me to notice small streets I had forgotten to map, and some streets whose name are not on the cadastre!&amp;nbsp;&lt;a href="http://www.openstreetmap.org/?lat=49.22913&amp;amp;lon=2.89517&amp;amp;zoom=15&amp;amp;layers=M"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8961039572124531688-4403258937754819643?l=pieleric.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pieleric.blogspot.com/feeds/4403258937754819643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8961039572124531688&amp;postID=4403258937754819643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/4403258937754819643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/4403258937754819643'/><link rel='alternate' type='text/html' href='http://pieleric.blogspot.com/2011/02/just-finished-my-first-town.html' title='Just finished my first town'/><author><name>Eric Piel</name><uri>http://www.blogger.com/profile/10245711249435682065</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8961039572124531688.post-6110889596604412382</id><published>2010-05-02T12:44:00.000-07:00</published><updated>2010-05-02T12:46:41.972-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='keyboard'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='xorg'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>What happens when you plug a keyboard into your computer</title><content type='html'>While reporting a &lt;a href="https://bugzilla.gnome.org/show_bug.cgi?id=613083"&gt;bug&lt;/a&gt;, I learned a lot about the different programs which are involved when a keyboard is plugged in. As simple as such an action can sound, it is amazingly complex as it traverse many layers. So, what happens when you are using gnome in Linux and you insert a new keyboard in your USB port?&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The Linux kernel usb system detects a new device&lt;/li&gt;&lt;li&gt;From the device properties it is determined as an HID device, and therefore a new input device is created by the evdev module (which is loaded if it was not before)&lt;/li&gt;&lt;li&gt;Event info about a new device is sent to udev&lt;/li&gt;&lt;li&gt;Udev parses its rules and creates a new file in /dev for this new device&lt;/li&gt;&lt;li&gt;Udev transmits the info of a new device to listeners such as DeviceKit and Hal&lt;/li&gt;&lt;li&gt;Hal parses its rules, one of which is the distro script which set the default layout to the device&lt;/li&gt;&lt;li&gt;Hal transmits the info of a new device to its listeners, such as Xorg&lt;/li&gt;&lt;li&gt;Xorg add the new device to the children of the Xkb core keyboard&lt;/li&gt;&lt;li&gt;Hal transmits the options for this new device to Xorg via Xkb&lt;/li&gt;&lt;li&gt;Xorg, via the Xkb extension, transmits the info that the Xkb config has be modified to listeners such as xklavier&lt;/li&gt;&lt;li&gt;xklavier transmits the info of a change in config to its listeners, such as libgnomekdb&lt;/li&gt;&lt;li&gt;libgnomekdb reloads the configuration of the keyboard and update the status icon in the system tray&lt;/li&gt;&lt;li&gt;Xorg, via the XINPUT extension, transmits the info that a new device is present to the listeners, like xklavier&lt;/li&gt;&lt;li&gt;xklavier transmits the info of a new device to its listeners, such as gnome-settings-daemon (g-s-d)&lt;/li&gt;&lt;li&gt;g-s-d changes this new device's layout to the user preferences via libgnomekdb.&lt;/li&gt;&lt;/ol&gt;Voilà!&lt;br /&gt;&lt;br /&gt;Note that it depends a bit on your system, and in particular in very modern Xorg's (xserver &amp;gt;= 1.8) the Hal part is removed and udev and Xorg communicate together directly. It might also contain some mistakes, don't hesitate to mention it in the comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8961039572124531688-6110889596604412382?l=pieleric.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pieleric.blogspot.com/feeds/6110889596604412382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8961039572124531688&amp;postID=6110889596604412382' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/6110889596604412382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/6110889596604412382'/><link rel='alternate' type='text/html' href='http://pieleric.blogspot.com/2010/05/what-happens-when-you-plug-keyboard-in.html' title='What happens when you plug a keyboard into your computer'/><author><name>Eric Piel</name><uri>http://www.blogger.com/profile/10245711249435682065</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8961039572124531688.post-5903897273117309542</id><published>2009-10-01T15:06:00.001-07:00</published><updated>2009-10-01T15:53:48.094-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='keyboard'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='layout'/><category scheme='http://www.blogger.com/atom/ns#' term='xorg'/><title type='text'>Keyboard layouts could be so much simpler</title><content type='html'>My brand new laptop has a french keyboard, but I've connected to it an full size dutch keyboard. Linux is great because it can actually deal with such weird setup so that for both keyboards when you press a key you get what you would expect. To do that, I configured the french layout as the default (because it's always connected to the laptop!) and whenever I plug the dutch keyboard I've got a little script which does this:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;xinput --list &lt;span style="font-style: italic;"&gt;  # to find the id of the keyboard&lt;/span&gt;&lt;br /&gt;setxkbmap -device &lt;span style="font-style: italic;"&gt;$kb-id&lt;/span&gt; nl&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, all this troubles could be avoided if not every country had a different keyboard layout (Switzerland is special, they have &lt;span style="font-style:italic;"&gt;several&lt;/span&gt; layouts). 100 years ago, this could make sense, but now that there is so much exchange between countries, this is bringing more pain than advantages. One solution would be to simply change the spelling of every language to restrain them to the good old 26 basic letters, and be happy with a US layout forever after. This could happen, the Turkish people did manage, but for sure not any time soon, and anyway the culture should not be driven by the technology. It's up to the technology to adapt.&lt;br /&gt;&lt;br /&gt;So what I'd really like to see is a generic keyboard layout, which allows to type any latin character-based language (or at least all the official ones present in Europe). The us-international layout is not so bad, but they are lots of small adaptations needed to not make it a pain to use (especially on windows where by default the diacritics are added to the next letter). Some European peoples &lt;a href="http://www.csc.fi/english/pages/meek"&gt;are at it&lt;/a&gt;, and I hope it goes somewhere. While at changing the layout, we could move to &lt;a href="http://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard"&gt;dvorak&lt;/a&gt;, so the loss of direct access for the special keys of a language would be more or less counter-balance by the increase speed provided by the dovrak layout. &lt;br /&gt;&lt;br /&gt;Even more useful would be to have the input method follow more closely the normal behaviour of putting diacritics: you first put and the letter and &lt;span style="font-style:italic;"&gt;then&lt;/span&gt; you put the diacritics. It would in addition allow to add easily diacritics while reviewing a text (put the cursor just after the letter, and press the diacritic you want to add). Today, in Xorg, a &lt;a href="http://cgit.freedesktop.org/xkeyboard-config/tree/symbols/extras/us"&gt;first layout providing such a mechanism&lt;/a&gt; appeared: "USA - International (AltGr Unicode combining)". As its name implies it uses some special features of unicode. This has the disadvantage of not yet being correctly supported in every program, but that's the way to go!&lt;br /&gt;&lt;br /&gt;Test this new layout, and report bugs on application not correctly responding to it, and propose better versions of the layout :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8961039572124531688-5903897273117309542?l=pieleric.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pieleric.blogspot.com/feeds/5903897273117309542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8961039572124531688&amp;postID=5903897273117309542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/5903897273117309542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/5903897273117309542'/><link rel='alternate' type='text/html' href='http://pieleric.blogspot.com/2009/10/keyboard-layouts-could-be-so-much.html' title='Keyboard layouts could be so much simpler'/><author><name>Eric Piel</name><uri>http://www.blogger.com/profile/10245711249435682065</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8961039572124531688.post-7252779741333484408</id><published>2009-08-03T12:43:00.001-07:00</published><updated>2009-08-03T12:48:11.836-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pidgin'/><category scheme='http://www.blogger.com/atom/ns#' term='translation'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><category scheme='http://www.blogger.com/atom/ns#' term='netherlands'/><title type='text'>Getting integrated</title><content type='html'>As a sign that I'm integrating to the Netherlands, I have a patch in &lt;a href="http://pidgin.im"&gt;pidgin&lt;/a&gt; for... the &lt;a href="http://developer.pidgin.im/viewmtn/revision/diff/91e0fd044afc548afdcf4e636c1a40f13f688c50/with/ffe78a16627e92e954cce70124f774b9009e60b7/po/nl.po"&gt;Dutch translation&lt;/a&gt;. Ok, it's just one word, but that's a beginning!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8961039572124531688-7252779741333484408?l=pieleric.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pieleric.blogspot.com/feeds/7252779741333484408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8961039572124531688&amp;postID=7252779741333484408' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/7252779741333484408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/7252779741333484408'/><link rel='alternate' type='text/html' href='http://pieleric.blogspot.com/2009/08/getting-integrated.html' title='Getting integrated'/><author><name>Eric Piel</name><uri>http://www.blogger.com/profile/10245711249435682065</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8961039572124531688.post-2516566279677914045</id><published>2009-07-28T12:08:00.000-07:00</published><updated>2009-08-02T13:40:05.050-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>Annoying bug tracking systems</title><content type='html'>Bugs are extremely annoying, but unfortunately bug tracking systems are also very annoying. They are &lt;a href="http://www.bugzilla.org"&gt;several&lt;/a&gt; &lt;a href="http://trac.edgewall.org/report"&gt;existing&lt;/a&gt; &lt;a href="http://sourceforge.net/develop/"&gt;systems&lt;/a&gt; &lt;a href="https://launchpad.net/ubuntu/+bugs"&gt;used&lt;/a&gt; with open source software. Unfortunately they more or less all sports the same problems.&lt;br /&gt;&lt;br /&gt;One which is rather known is the connection of the bugs between upstream (the original project) and downstream (the distros), and in between downstream. Each project and each distro has its own bug tracking system. As a result of this, first, bugs might end up being duplicated: in general the users report their problem in the tracking system of their distro, excepted for some advanced users who directly follow upstream and report there as well. Second, the bugs get reported to places which are not read by the authors of the project, which reduces a lot the chances to have them fixed. So far, only lauchpad has tried to answer this problem, by automatically following upstream, but this does not resolve the problems to link the bug reports in-between downstream. Of course, it doesn't seem reasonable to have only one global bug tracking system for all the projects in the world. What would be useful is a mechanism which allows to transmit a bug from downstream to upstream, just by decision of the bug triaging team. It is then up to the triage team to differentiate bugs related to packaging problems to the bugs which have to be treated upstream.&lt;br /&gt;&lt;br /&gt;However, an even bigger problem is that the bug tracking systems are actually bug &lt;span style="font-style:italic;"&gt;report&lt;/span&gt; tracking system. The main concept is not a "bug", but the "report from someone about a bug". The main description about a bug is the first description ever written about it... which is one less likely to be precise: written before anyone ask for precisions, by someone who is a simple user. Generally, valuable information about the bug (eg: why and when it happens, how it can be fixed) is only available disseminated in the comments, or, even worse, in the comments of bug reports marked as duplicates. To correct this, the main concept should be shifted from "bug report" to "bug". Each bug could have assigned to it several bug reports, and bug reproducers (people would are affected by this bug and most likely able to confirm that the bug is fixed). The main description of a bug would be much closer to a wiki page, which can be updated little by little, as more things get known. Moreover, associated to the bug, there should be test cases, which allow to reproduce the bug. Each test case can be either manual, or automatic, in which case it could be possible to run the test case regularly and automatically against the latest version of the project to detect if the bug is still present. A bug would also be associated to fixes and workarounds. The fixes are patches, which can be commented, and which eventually become a commit in the code repository of the project. &lt;br /&gt;&lt;br /&gt;A third problem is that when someone finds a bug in a project and reports it. The reporter should first check for previous reports of the bug. However, if the bug has been corrected in the mean time (typically, in the development version), it will not be easily findable because marked as closed. That is why the bug tracker should also be more aware of the versions of the projects, usually ordered as a tree. So that for each version of the project, it is possible to know which (known) bug is present, likely present, or fixed. When someone search for a bug, he or she will also indicate the version on which the bug was seen, and the search will show bugs even now closed. Not only this avoid to create a duplicate bug report, but also allow the reporter to use a workaround if it is available, without having to update to a new version.&lt;br /&gt;&lt;br /&gt;Lots of perspectives to improve bug tracking systems. Maybe it is possible to modify bugzilla or launchpad in this directions. Maybe first, a proof of concept should be implemented. What other important features are missing in current bug trackers?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8961039572124531688-2516566279677914045?l=pieleric.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pieleric.blogspot.com/feeds/2516566279677914045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8961039572124531688&amp;postID=2516566279677914045' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/2516566279677914045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/2516566279677914045'/><link rel='alternate' type='text/html' href='http://pieleric.blogspot.com/2009/07/annoying-bug-tracking-systems.html' title='Annoying bug tracking systems'/><author><name>Eric Piel</name><uri>http://www.blogger.com/profile/10245711249435682065</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8961039572124531688.post-5988164127163064192</id><published>2009-07-20T10:37:00.000-07:00</published><updated>2009-07-20T15:30:19.963-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Hello from the other side of the world</title><content type='html'>So far Microsoft as been considering Linux as if it was they were two persons living on a different side of the world. No contact. Today, they have therefore done a big leap, by &lt;a href="http://www.microsoft.com/presspass/features/2009/Jul09/07-20LinuxQA.mspx"&gt;releasing drivers for the kernel under the GPL&lt;/a&gt;. It's actually only drivers to improve the execution speed of Linux when running in their virtualization engine, much less impressive than if they had released drivers for supporting the hardware of the Xbox for instance. Nevertheless, this is still a very symbolic step, as eventually a part of the kernel might be officially maintained by Microsoft. &lt;br /&gt;&lt;br /&gt;The code &lt;a href="http://lkml.org/lkml/2009/7/20/167"&gt;will very likely be accepted&lt;/a&gt;, but for now it's only in the staging tree, the part of the kernel which contains "crap code" which does not yet have the quality to be normal part of the kernel. Indeed, the code &lt;a href="http://codemonkey.org.uk/junk/hv.diff"&gt;looks rather ugly&lt;/a&gt;, but hopefully mainly just due to the coding style... Now it's time for everybody interested to go and have a look clean it up or test it.&lt;br /&gt;&lt;br /&gt;Probably it's just a little "hello" from Microsoft, and other friendly actions towards Linux will take a very long time to come again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8961039572124531688-5988164127163064192?l=pieleric.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pieleric.blogspot.com/feeds/5988164127163064192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8961039572124531688&amp;postID=5988164127163064192' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/5988164127163064192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/5988164127163064192'/><link rel='alternate' type='text/html' href='http://pieleric.blogspot.com/2009/07/hello-from-other-side-of-world.html' title='Hello from the other side of the world'/><author><name>Eric Piel</name><uri>http://www.blogger.com/profile/10245711249435682065</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8961039572124531688.post-3212870700475623469</id><published>2009-05-21T07:29:00.000-07:00</published><updated>2009-10-01T16:03:49.432-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subtitle'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>And three</title><content type='html'>There used to be two. Now there are &lt;a href="http://home.gna.org/subtitleeditor/"&gt;three&lt;/a&gt; &lt;a href="http://gnome-subtitles.sourceforge.net"&gt;projects&lt;/a&gt; &lt;a href="http://home.gna.org/gaupol/"&gt;dedicated&lt;/a&gt; to create a subtitle editor for gnome. All of them use gtk, but they are written in different languages (C#, C++, and python). I wouldn't mind if they were not each of them crappy. Actually, if just one of them was good, it would be perfectly fine. Unfortunately, they all have flaws so big that after few minutes you give up using them. Either they crash, or they do not show the movie at the same time as the subtitle, or the interface is so much messy that it's impossible to do simple things. In my humble opinion, such a program should be based on gstreamer, and written in python, so I hope Gaupol will get better in this direction...&lt;br /&gt;&lt;br /&gt;Opensource should exactly avoid this kind of situation of happening, because everyone can join to the cause and work on improving the existing program. It's really sad to see no such collaboration. At least with the video converters, &lt;a href="http://programmer-art.org/projects/arista-transcoder"&gt;Arista&lt;/a&gt; and &lt;a href="http://www.linuxrising.org/transmageddon/"&gt;Transmageddon&lt;/a&gt; seem to have agreed on sharing the forces.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8961039572124531688-3212870700475623469?l=pieleric.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pieleric.blogspot.com/feeds/3212870700475623469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8961039572124531688&amp;postID=3212870700475623469' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/3212870700475623469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/3212870700475623469'/><link rel='alternate' type='text/html' href='http://pieleric.blogspot.com/2009/05/and-three.html' title='And three'/><author><name>Eric Piel</name><uri>http://www.blogger.com/profile/10245711249435682065</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8961039572124531688.post-8578781586602585854</id><published>2009-05-17T03:52:00.000-07:00</published><updated>2009-05-17T04:28:29.024-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wikipedia'/><category scheme='http://www.blogger.com/atom/ns#' term='bias'/><title type='text'>Being the first</title><content type='html'>Wikipedia provides articles which are supposed to be neutral point of view. It's always funny to look at who was the first inventor of an object in the different wikipedias. One could think they are all equivalent in the content, and are just translations of each-other. It seems national pride of different points of view can easily sneak in.&lt;br /&gt;&lt;br /&gt;For example, about a plane, in &lt;a href="http://en.wikipedia.org/wiki/Fixed-wing_aircraft#History"&gt;English&lt;/a&gt; you learn that &lt;br /&gt;&lt;span style="font-style:italic;"&gt;The first self-powered aircraft was created by an Englishman by the name of John Stringfellow&lt;/span&gt; while in &lt;a href="http://fr.wikipedia.org/wiki/Histoire_de_l%27aviation#Les_pionniers_du_plus_lourd_que_l.27air_.28de_Cl.C3.A9ment_Ader_.C3.A0_Santos_Dumont.29"&gt;French&lt;/a&gt;, you learn that &lt;span style="font-style:italic;"&gt;Le premier homme ayant déclaré avoir volé à l'aide d'un moteur est le français Clément Ader&lt;/span&gt;. So in English, the first one was an Englishman who created the first model plane, while in French, it is a Frenchman who created the first plane with someone inside.&lt;br /&gt;&lt;br /&gt;Reading about the motorcycle is also interesting. In &lt;a href="http://en.wikipedia.org/wiki/Motorcycle#History"&gt;English&lt;/a&gt; &lt;span style="font-style:italic;"&gt;the first motorcycle was designed and built by the German inventors Gottlieb Daimler and Wilhelm Maybach&lt;/span&gt; (in 18885), while in &lt;a href="http://fr.wikipedia.org/wiki/Moto#Une_paternit.C3.A9_controvers.C3.A9e"&gt;French&lt;/a&gt;, after some warnings about the difficulty of defining who was the inventor, you learn about the &lt;span style="font-style:italic;"&gt;délivrance [...] le 16 mars 1869 à Monsieur Louis-Guillaume Perreaux&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Concerning the cinema, both the English and French versions emphasize on the impossibility of clearly define an inventor. Nevertheless, for those who want a name &lt;a href="http://en.wikipedia.org/wiki/History_of_film#The_birth_of_film"&gt;you find&lt;/a&gt; that &lt;span style="font-style:italic;"&gt;In 1878, [...] Eadweard Muybridge successfully photographed a horse named "Sallie Gardner" in fast motion using a series of 24 stereoscopic cameras&lt;/span&gt; and &lt;a href="http://fr.wikipedia.org/wiki/Cin%C3%A9ma#Histoire"&gt;that&lt;/a&gt; &lt;span style="font-style:italic;"&gt;certains ont attribué son invention aux frères Lumière, concepteurs du cinématographe en 1895&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;For sure, reading in more languages will bring even more interesting point of views. As most of the objects have never &lt;span style="font-style:italic;"&gt;suddenly&lt;/span&gt; been invented, but slowly evolved, it is rather easy to define the inventor of it has the first citizen having made it evolve. None of the articles is wrong, just slightly biased. So when reading an article it is worthy to have a glance at the other versions just to see how far it can be biased...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8961039572124531688-8578781586602585854?l=pieleric.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pieleric.blogspot.com/feeds/8578781586602585854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8961039572124531688&amp;postID=8578781586602585854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/8578781586602585854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/8578781586602585854'/><link rel='alternate' type='text/html' href='http://pieleric.blogspot.com/2009/05/being-first.html' title='Being the first'/><author><name>Eric Piel</name><uri>http://www.blogger.com/profile/10245711249435682065</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8961039572124531688.post-1136622269194958863</id><published>2009-05-05T02:04:00.001-07:00</published><updated>2009-05-05T06:56:07.169-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>Constructive gang</title><content type='html'>A couple of months ago I was walking in the street and passed in front of me two teenagers with malicious smiles. A few seconds later the bin exploded. The explosion was quite strong, lots of garbage flew away, and with the number of people around it could have easily be hurting someone. But the boys definitely seemed to have had a good time.&lt;br /&gt;&lt;br /&gt;It's quite usual to see these gangs of teenagers hanging around without much aim, talking a lot, and from time to time having fun by breaking something. I can somehow understand why those boys are doing this: it allows them to motivate their presence, feel they are doing something together, and change their mind.&lt;br /&gt;&lt;br /&gt;What is interesting is that open source contributers are doing exactly the same thing... with the little twist that instead of taking the easy road of &lt;span style="font-style:italic;"&gt;destroying&lt;/span&gt; things, they are &lt;span style="font-style:italic;"&gt;creating&lt;/span&gt; things. They come together via internet, they chat and from time to time they add a little contribution to the edifice. No actual big aim, just because it's cool. Well, the difference is that creating is much harder than destroying but also much more gratifying!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8961039572124531688-1136622269194958863?l=pieleric.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pieleric.blogspot.com/feeds/1136622269194958863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8961039572124531688&amp;postID=1136622269194958863' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/1136622269194958863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/1136622269194958863'/><link rel='alternate' type='text/html' href='http://pieleric.blogspot.com/2009/05/constructive-gang.html' title='Constructive gang'/><author><name>Eric Piel</name><uri>http://www.blogger.com/profile/10245711249435682065</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8961039572124531688.post-2126576787197562269</id><published>2008-11-25T13:22:00.000-08:00</published><updated>2008-11-25T14:31:19.688-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='accelerometer'/><category scheme='http://www.blogger.com/atom/ns#' term='xorg'/><title type='text'>Automatic rotation on its way</title><content type='html'>I got a new laptop in January 2008, an HP 2150p. It has a great feature: hard disk protection when the laptop falls. Well, by itself I don't think it's a great feature at all, I'd rather stay very careful and never let the laptop fall &lt;span style="font-style:italic;"&gt;at all&lt;/span&gt;. However, what this meant is that it contains an accelerometer. Since I discovered this, I've wanted to have a great feature, the same one which is available on the expensive phones (like the iPhone) and in some photo cameras (like my Canon A530), the screen automatically rotates when you physically rotate the device. It's &lt;a href="http://www.fotolog.com/albertosensei/42617600"&gt;especially useful&lt;/a&gt; when reading articles or books: you open the file, rotate the computer and suddenly one page = one screen.&lt;br /&gt;&lt;br /&gt;Before going further, let's recap why an accelerometer is useful for this. An accelerometer measures the acceleration, so shouldn't it detect something only when it &lt;span style="font-weight:bold;"&gt;moves&lt;/span&gt;, and not when it is standing rotated or not? Well, all the trick is that we can assume the user is on earth (or a planet more generally), and that the user keeps his fits on the ground. The beauty of the accelerometer is that it detect all the accelerations, including G, the gravity! So, assuming that you are on earth and that you are not taking off in a rocket plane, the main acceleration vector indicates the direction of the ground... so convenient!&lt;br /&gt;&lt;br /&gt;Getting the functionality working in Linux was not so hard. Mainly because Yan Burman had already tackled the main problem of writing &lt;a href="http://lkml.org/lkml/2006/11/3/103"&gt;a driver for the accelerometer&lt;/a&gt;. However, the real fun is to have it as a default feature for anyone using Linux. Having the ad-hoc solution is fine, but the generic solution is worth thousand times more! For this, I ended up becoming the maintainer of the driver (now named lis3lv02d) and it got recently &lt;a href="http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=455fbdd376c3ed3a5be8c039348896fdd87e9930"&gt;accepted in Linus' tree&lt;/a&gt;. It will be part of 2.6.28...&lt;br /&gt;&lt;br /&gt;But that's merely half the journey. We need also a daemon which observes the data obtained by the accelerometer and rotates the screen accordingly. For now I have my &lt;a href="http://pieleric.free.fr/junk/auto-rotate-display.py"&gt;own little script which does this&lt;/a&gt;. On the long term it would be good to have it integrated with the normal desktop. Let's say at least in Gnome, I would like to get this feature integrated with the new &lt;a href="http://svn.gnome.org/viewvc/gnome-settings-daemon/trunk/plugins/xrandr/"&gt;xrandr plugin&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Last but not least, after some usage I realised that there is an annoying problem when rotating the screen with the laptop: the touchpad stays not rotated. Moving the cursor requires some special mental training! So, the obvious question is how to do that. There is unfortunately no directly available solutions. However, I'm hopeful that with the &lt;a href="http://who-t.blogspot.com/2008/07/input-device-properties.html"&gt;Input Device Properties&lt;/a&gt; that Peter Hutterer added to Xorg, plus the work by Mildred Ki'Lya for &lt;a href="http://lists.freedesktop.org/archives/xorg/2008-November/040092.html"&gt;changing the rotation of the synaptic touchpad&lt;/a&gt; driver. To be totally generic, it would be better if any input device could be rotated (the same way), especially the evdev driver should support this as well...&lt;br /&gt;&lt;br /&gt;So the complete ad-hoc solution is nearly there, but not yet. And the generic and upstream solution still needs lots of integration at various levels... but it's on its way! Whoever is also interested is welcome to try to create patchs (for Gnome, for Xorg) and share them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8961039572124531688-2126576787197562269?l=pieleric.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pieleric.blogspot.com/feeds/2126576787197562269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8961039572124531688&amp;postID=2126576787197562269' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/2126576787197562269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/2126576787197562269'/><link rel='alternate' type='text/html' href='http://pieleric.blogspot.com/2008/11/automatic-rotation-on-its-way.html' title='Automatic rotation on its way'/><author><name>Eric Piel</name><uri>http://www.blogger.com/profile/10245711249435682065</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8961039572124531688.post-1515412090795592382</id><published>2008-11-08T08:33:00.000-08:00</published><updated>2008-11-08T09:06:13.421-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xorg'/><category scheme='http://www.blogger.com/atom/ns#' term='doc'/><title type='text'>Xorg documentation: what a pain</title><content type='html'>X.Org provides the official reference implementation of the X Window System. Being the reference, one can expect it to find a default implementation as well as the description of its behaviour and the behaviour of the client applications with the server. Unfortunately, this is done extremely badly, amazingly badly. Up to the point that today, when looking for the description of the XV protocol (you know, the technology that allows you to watch video without overheating your processor), I got lost in their &lt;a href="http://www.x.org/wiki/"&gt;minimalistic wiki&lt;/a&gt;, found nothing in google, passed via &lt;a href="http://en.wikipedia.org/wiki/X_video_extension"&gt;wikipedia&lt;/a&gt;, and ended up in the &lt;a href="http://cvsweb.xfree86.org/cvsweb/xc/doc/specs/Xv/xv-protocol-v2.txt?rev=HEAD&amp;content-type=text/vnd.viewcvs-markup"&gt;cvs of the old xfree&lt;/a&gt; which has an update in a different file. In the X.Org website all I could find was this page about the &lt;a href="http://www.x.org/wiki/Development/Documentation/DocBookConversion"&gt;conversion of all the documentation to DocBook&lt;/a&gt; which doesn't even mention &lt;span style="font-style:italic;"&gt;where&lt;/span&gt; are the converted documentations!&lt;br /&gt;&lt;br /&gt;It's really a pity, because it's make it even harder to code or to debug X. I wish they had something organized as well as the &lt;a href="http://library.gnome.org/devel/glib/"&gt;gnome/glib documentation&lt;/a&gt;. Actually, on the book shelves of the university, there are a couple of huge official old books on the X reference, so at least an outdated documentation must be exist, it's just impossible to find. If you know, please update the X.Org wiki!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8961039572124531688-1515412090795592382?l=pieleric.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pieleric.blogspot.com/feeds/1515412090795592382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8961039572124531688&amp;postID=1515412090795592382' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/1515412090795592382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/1515412090795592382'/><link rel='alternate' type='text/html' href='http://pieleric.blogspot.com/2008/11/xorg-documentation-what-pain.html' title='Xorg documentation: what a pain'/><author><name>Eric Piel</name><uri>http://www.blogger.com/profile/10245711249435682065</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8961039572124531688.post-5773827707222669418</id><published>2008-09-07T05:47:00.000-07:00</published><updated>2008-09-07T06:09:45.175-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='patch'/><title type='text'>C magics</title><content type='html'>Recently Linus Torvalds has &lt;a href="http://lkml.org/lkml/2008/8/26/291"&gt;sent a patch&lt;/a&gt; for the e1000 driver. Looking at it, I'm not sure if I should be amazed by the talent of Linus, or by the fact that even after 10 years of using C there are still constructs which I don't know.&lt;br /&gt;&lt;br /&gt;It does things like:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;-  struct e1000_opt_list speed_list[] = {&lt;br /&gt;:&lt;br /&gt;+  static const struct e1000_opt_list speed_list[] = {&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;and:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;-  struct e1000_option opt = {&lt;br /&gt;:&lt;br /&gt;+  opt = (struct e1000_option) {&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Not only I didn't even know this last construct was possible, but Linus reports that overall his patch reduces the stack usage from 1152 bytes to 192 bytes (the total stack is 4K)! Ahhh... how much more to learn about C?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8961039572124531688-5773827707222669418?l=pieleric.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pieleric.blogspot.com/feeds/5773827707222669418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8961039572124531688&amp;postID=5773827707222669418' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/5773827707222669418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/5773827707222669418'/><link rel='alternate' type='text/html' href='http://pieleric.blogspot.com/2008/09/c-magics.html' title='C magics'/><author><name>Eric Piel</name><uri>http://www.blogger.com/profile/10245711249435682065</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8961039572124531688.post-6350018401554131588</id><published>2008-06-15T07:27:00.000-07:00</published><updated>2008-06-15T08:04:07.306-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spellcheck'/><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><title type='text'>Spell-checking using spam</title><content type='html'>I was doing spell checking over a OCR'd version of  &lt;a href="http://en.wikipedia.org/wiki/The_Long_Dark_Tea_Time_Of_The_Soul"&gt;&lt;span style="font-style: italic;"&gt;The Long Dark Tea Time Of The Soul&lt;/span&gt;&lt;/a&gt; (Douglas Adam). The problem with OCRs errors is that they are different from the human mistakes, and the spell checker (hunspell) is not trained for these. For instance: &lt;span style="font-style: italic;"&gt;cl &lt;/span&gt;instead of &lt;span style="font-style: italic;"&gt;d&lt;/span&gt;, or &lt;span style="font-style: italic;"&gt;l&lt;/span&gt; instead of &lt;span style="font-style: italic;"&gt;I&lt;/span&gt;. So far one could suggest to write a different suggestion algorithm for hunspell (or your preferred open source spell checker). However, I was not in the mood for that, and something very interesting turned out of this.&lt;br /&gt;&lt;br /&gt;I thought I would use the power of the web by finding the correct text as quotations of the book spread everywhere. Although it seems that people don't quote much  &lt;span style="font-style: italic;"&gt;The Long Dark Tea Time Of The Soul&lt;/span&gt;, nearly every sentence is available! It seems that some kind of spammer has decided to use this book as carpet text for fake websites linking to its products. There are literally thousands of pages hanging around, each of them containing a tiny fragment of the book. The book is entirely available on internet but as unordered sentences mixed with links to commercial products!&lt;br /&gt;&lt;br /&gt;Ok, where it comes really interesting is that they seem to have used a much better OCR algorithm than me (or they spent a lot of time fixing the errors)  so the sentences are near perfect. So you can use this spam as spell checker. For instance  &lt;span style="font-style: italic;"&gt;"And where there is something which is not dealt with properly in your world," the old lady pranled on&lt;/span&gt;. "pranled on"? What the heck is this verb?  You go on &lt;a href="http://www.google.com/search?q=%22And+where+there+is+something+which+is+not+dealt+with+properly+in+your+world%2C%22&amp;amp;ie=utf-8&amp;amp;oe=utf-8"&gt;google with the previous sentence&lt;/a&gt;, and, there, you immediately find out that the correct word is  "prattled on". Thank you spammers!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8961039572124531688-6350018401554131588?l=pieleric.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pieleric.blogspot.com/feeds/6350018401554131588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8961039572124531688&amp;postID=6350018401554131588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/6350018401554131588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8961039572124531688/posts/default/6350018401554131588'/><link rel='alternate' type='text/html' href='http://pieleric.blogspot.com/2008/06/spell-checking-using-spam.html' title='Spell-checking using spam'/><author><name>Eric Piel</name><uri>http://www.blogger.com/profile/10245711249435682065</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
