An avian carrier's blog – Technology Atom feed

  1. Bépo or not bépo (2011-10-27)

    Some time ago, I convinced myself to buy a Typematrix keyboard and to learn how to type using the BÉPO keys arrangement, just for fun. Both the physical layout and the keys positions can be seen on this page.

    One fact was very surprising to me: I am now totally unable to use BÉPO on a regular keyboard, and equally unable to use AZERTY or QWERTY on a Typematrix keyboard. My fingers move horizontally or vertically in the first case, missing the keys, or diagonally in the second case leading to the same result.

    My brain is stuck with this association and won't rewire itself.

  2. ROSE 2011: some afterthoughts (2011-05-01)

    Every year since 2003, Alexis Polti and myself run a course named "ROSE" (Robotique et Systèmes Embarqués, Robotics and Embedded Systems) for future engineers at Télécom ParisTech. During this 120 hour curriculum, students have to design and buid embedded systems, including designing their own electronic boards and programming them. Classical courses are limited to the minimum (real-time operating systems, signal integrity), and students must learn by themselves all the other topics while the two teachers offer lots of assistance (we are physically with the students most of the time to answer their questions).

    As every year, the 2011 occurrence introduced some changes (hopefully for the better), that I now want to analyze.

    Afterthoughts

    Git vs. Hg

    Until last year, we were using Mercurial as our revision control system because we thought it was simpler to use than Git for the students although the teachers both used it. We decided to try Git with the Gitolite backend tool that we already used for research projects. The outcome was unexpectedly successful: every project used lots of branches for their development, merging and rebasing at will.

    The presence of Clément Moussu, a student who had previously done an internship at Gostai where Git is used intensively (they even use "git notes" that almost noone knows about), has been a tremendous help, and has been acknowledged during the debriefing session by other students. He and three other students explained Git to the others, and spoke about the best practices right from the beginning. So we plan to keep using Git as our preferred revision control system.

    Linux-based boards

    For the first time, we accepted that some projects use Linux-based boards in addition to the micro-controllers boards they had to design. The mix of those Linux-based boards (one Armadeus APF27, one BeagleBoard xM and one Gumstix Overo FE COM) allowed them to use high-level languages (Python), libraries (OpenCV, 0MQ) and cloud-based processing capabilities (Google Appengine) very easily. We plan to keep this possibility as well, but we need to ensure that every project needs to build additional micro-controller based boards as we want our students to really know how to design a board from scratch.

    Best programming practices

    This is something we did not do: ensure that our students know the best programming practices. Next year, we plan to do a live-coding session where we will collectively try to write the best possible code. The teacher will write, compile and run the code as suggested by the students, and explain how the code may be improved and what needs to be done to guarantee reliability and ease of maintenance. Tricky exercises will be proposed, to ensure that students need to know when volatile needs to be used, and when it is not needed. Also, lockless algorithms, depending on the underlying hardware, will be used whenever possible. The effect of inlining some functions (and when not to inline and let the compiler work it out) will be studied intensively, and methods to avoid any code duplication will be taught.

    Some students naturally know how to write good code, but some don't and just write code that works but is unmaintainable. Instead of having them fix the code afterward, we will make sure that they write proper code from day one. So next year, the students will learn this skill at the beginning of the class rather than along its course.

    The projects

    If you are curious to see what has been done, here are links to the various projects done by the students in 2011 during this 2.5 month course:

    • Casper: a talking and listening robot shaped like an elephant trunk
    • Copterix: a helicopter with eight engines
    • IRL: a nightclub laser that displays your tweets and let you control via Twitter the color of the club as well as other equipment such as the smoke machine
    • MB Led: a very nice set of blocks letting you play games by moving them around
    • Rosewheel: a Segway clone, remotely controlled using an Android phone
    • TSV Safe Express: control a model railroad layout using cheap components (unfortunately, the web site is almost empty)
  3. Looking for a non-intrusive personal email ticket tracker (2007-04-10)

    I am in search for the perfect non-intrusive personal email ticket tracker system. Many people send me email which require me to do some things before I can either answer them or provide them with a definite solution. Right now, I put those emails in a “avoir” (“to see” in French) folder which grows continously as I easily forget to remove things from them when it’s done. Also, it is now so big that I have trouble navigating through it.

    I am in the need of a real ticket tracking system which would allow me to prioritize such requests, set deadlines and so on. This system would need to be non-intrusive as I do not want people to have to do anything but reply to emails from me; in particular, I don’t want to change the subject line nor ask them to use another email address. It would also have to work if several people are in copy.

    I already keep archives of all my incoming and outgoing emails. The idea would be for me to bounce an email which requires further processing to a known-only-by-me address which would open a new ticket. Any email following this one in the same thread, even if it has arrived on my system already, would need to be added to the newly created ticket. Using the In-Reply-To and References field should be enough to get anything related to the starting email (which may not be the first one in a thread).

    In order to achieve that, I would need to record, each time an email arrives, its Message-Id as well as its parent Message-Id. Each time a mail arrives, if it is a direct or indirect successor of a mail that has been used to open a ticket, it would be added automatically to the corresponding issue. A web interface would allow me to prioritize and operate on tickets (e.g., close them).

    Is anyone aware of such a beast? (in the Free Software world of course)

  4. Accidentally distribute your files with instant messaging (2007-03-08)

    Some days ago, I was trying to get in touch with a friend of mine. I checked my instant messaging client and noted that he was online. I sent him a “Hi” and immediately received an offer to download a large .zip file with a business-related name.

    The explanation? He was doing a drag-n-drop operation on his desktop when my message popped up on his screen right under his mouse. The drag-n-drop was interrupted and the file was dropped on the message window. His IM client recognized it as a voluntary “send file” operation.

  5. Reading a DVD with VLC or mplayer is now illegal in France (2006-12-30)

    Starting tomorrow December 31st 2006, reading a DVD protected with CSS (as most DVD are) is illegal in France when it is done with a software allowing to circumvent the protection, such as VLC or mplayer which can both use the libdvdcss library. Today’s Journal Officiel (where laws and executive orders are published) says that you may be fined 750€ (around $985) for doing so. This includes watching any DVD that you have legally purchased.

    Edit 2007-02-21: the fine is 750€, not 135€ as I wrote earlier! Thanks to the two people who pointed at this mistake in the comments.

  6. Collaborative work on deliverables (2006-10-10)

    In my job, I often participate to multi-partners projects which get public (European or national) funding. In those projects, we are required to produce deliverables that show the progress of our work.

    The final deliverable is edited by an editor (how surprising) who is in charge of coordinating inputs from various partners and make them consistent. This can be done in several ways. I will describe two of them.

    The old-fashioned way

    The editor sends a template, usually in a proprietary word-processor format, and participants fill in the template with what they’ve done so far. It is common to have people in charge of various subparts (such as work-package leaders). Then the editor integrates everything in a big document which is sent to all partners. Partners then submit their changes by modifying the master document and the editor tries to integrate them all into a new version.

    Let’s face it: this is a nightmare. More than often, some changes are not integrated because they were lost during a document merge, and conflicting changes cause headaches to the editor who needs to talk with the authors and so on.

    You have probably guessed that I don’t like that.

    The improved way

    I had to participate to the elaboration of a large document with several partners to propose a new project a few months ago. Luckily, the project leader is a free software shop that happens to develop a wiki named XWiki.

    The project leader created a structure on the wiki and each partner edited his own pages. Each partner was also able to fix typos and obvious mistakes on other pages. Thanks to the history preserving features, no change was ever destructive and any version of any page can be retrieved if there is a need to.

    At one point, the project leader, acting as an editor for the final document, asked all partners to read everything that had been produced and to make the final changes if any. Then he took the content from the wiki and produced the final document to be sent to the potential funding authorities.

    Working this way was really pleasant. There was no need to exchange any document by email. Everyone worked at the same time without conflicts. By being able to see what other partners were doing, we ended up with a very consistent document with much less work than when using what I called the old-fashioned way.

    The result? Our project was funded (link in French) and will begin shortly.

  7. Top-posting (2006-03-28)

    A bet. A stupid bet. I lost it.

    As a consequence, I have to endure one of the most difficult and unpleasant challenge that I can think of. I have to top-post for one whole month. Effective yesterday evening.

    I will try to answer my email and usenet posts without any context whenever possible. Please bear with me if I have to keep some quotes.

  8. Burn marks (2005-04-18)

    As I took my washing machine apart to test its capacitors and resistors, I removed the filtering device (three capacitors and one resistor) and noticed burn marks near the plugs. Is that expected after six or seven years of service? Note that all the components were still meeting their original specifications.

  9. Software Patent Decision Withdrawn from Agricultural Council Agenda (2004-12-21)

    As noted on FFII site, software patents in Europe, which was supposed to be included in the agenda of agricultural council, as been withdrawn at Poland’s request.

    According to the transcript of the session, Wlodzimierz Marcinski, Poland’s undersecretary of state at the Ministry of Science and Information, said:

    Poland with determination opt for unambiguous expression in the law of European Union issues connected with the patentability of the computer implemented inventions which the same time shall secure that computer programs are excluded from patentability.

    This position results from the fact, that the lack of order of such matters which manifests both with difference in practice in particular European Union countries as well as in acting of European Patent Office which has issued many thousands of patents for computer programs are clearly noticeable.

    In opinion of Poland this process should not be continued in such scale.

    Poland having in mind the necessity of further research on directive project to strength the legal reliability (…) the enterprises in area of research, development do not withdraw its support for common position leading for second hearing.

    Poland however bring for withdrawal of the item concerning the project of directive of European Parliament and the Council on Computer Implemented Inventions from A list of the agenda of this Council meeting.

    Polish Government needs still more time for preparing and deliver to the Council appropriate statement in the matter which is an object of the directive.

    In our opinion such statement will be balanced, constructive in direction to work out European compromise.

    We think that some crucial items in the text of the project resulting from the May 18th meeting of the Council are not in favour to function of small and middle enterprises.

    We back up the unambiguous legal instruments which shall guarantee that the computer implemented inventions shall be patentable but the computer programs or its parts shall be certainly unpatentable.

    Of course, a commissioner tried to oppose the removal of software patents from the agenda:

    Yes, Mr President, may I say that the Commission regrets the withdrawal of this item from the agenda, as the Commission attaches great importance to its own proposal, as well as the agreement on the common position that was reached during the Competitiveness Council.

    But chairman Veerman accepted the withdrawal anyway. Yipee.