An avian carrier's blog – Google Atom feed

  1. Common misconceptions about Google+ sharing (2011-07-03)

    This post from Loïc Le Meur shows that people have not necessarily understood the Google+ model for sharing posts. To summarize it:

    • When you post some content and make it available to your Circles, Extended Circles or Public, you decide what content you share. This is the first content filter, that gets applied to every post or every photo album you share. Each of your posts may have a different authorization list.

    • When you add someone in one of your circles, it means that you want to see this person publications that you are allowed to read. This is the second content filter.

    So, to determine if a person R (short for "reader") will see a content shared by a person P (short for "publisher"), P must have allowed R to read the content and R must have asked to read what P publishes. For example, you may add me to your circles even if we do not know each other. In this case, you will only be able to see my public posts, and the posts shared with my extended circles if someone in my circles also put you in his/her circles. This is as simple as it can get.

  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. Braindead Google feed fetcher (2010-12-07)

    It looks like Google feed fetcher has a memory span much shorter than the one of a goldfish (which is more than three months, and not five seconds as commonly believed). For weeks, my web site has been answering Google feed fetcher that http://www.rfc1149.net/blog/feed/atom has permanently moved (301 redirection) to http://www.rfc1149.net/blog/feed/. Each and every time, Google feed fetcher reads the feed from its new location... then forgets about it; it will ask for the old location the next time it runs.

    209.85.238.88 - - [07/Dec/2010:06:00:18 +0100] "GET /blog/feed/atom HTTP/1.1" 301 306
      "-" "Feedfetcher-Google; (+http://www.google.com/feedfetcher.html
      [...] feed-id=2355462125646541597)"
    
    209.85.238.230 - - [07/Dec/2010:06:00:19 +0100] "GET /blog/feed/ HTTP/1.1" 304 -
      "-" "Feedfetcher-Google; (+http://www.google.com/feedfetcher.html;
      [...]; feed-id=2355462125646541597)"
    

    But this is not the end of it: some Google Reader users did indeed indicate the right feed, and Google feed fetcher also asks for it with a different feed-id:

    209.85.238.230 - - [07/Dec/2010:06:49:47 +0100] "GET /blog/feed/ HTTP/1.1" 304 -
      "-" "Feedfetcher-Google; (+http://www.google.com/feedfetcher.html
      [...] feed-id=15198288757280251505)"
    

    Google, why not remember this permanent redirection and unify those feeds by grouping them under the same feed-id? This would cut down the traffic and the work both for you and for me.

  4. Please guess my private gmail address (2010-10-06)

    Let’s assume that:

    • you want to chat with me;
    • you only have my publicly available email address (`sam@rfc1149.net`);
    • you suspect that I also have a gmail account linked to the `sam@rfc1149.net` address;
    • you want to find it so that you can initiate a chat.

    It is easy. Create a new Google Site, and enter the Site settings/Sharing tab. Add my name as a viewer and click Invite these people.

    Then select Skip sending invitation so that I am not notified.

    My sam@rfc1149.net email address was associated with my gmail account: you got it, you can start chatting even if I never intended you to get access to my gmail address. Congratulations!

  5. The OVH-Google XMPP mess (2008-11-20)

    Beware: trying to move your Jabber (XMPP) server from one host to another may result in your users not being able to reliably talk to users using Google Talk or Gmail chat. It looks like one way or the other Google caches the SRV records of your Jabber server and do not consult the DNS anymore afterwards.

    It has been several weeks since I moved the ejabberd XMPP server for rfc1149.net on a new host which kept the same name as the old one. However, connections with gmail.com users are randomly working, while all the other domains my users interact with seem to have no problems at all. I have found several server administrators who experienced the same issue, and even read a suggestion to send an e-mail to the address xmpp@google.com which could supposedly solve the problem. The result? No answer, no working connection with gmail.com users.

    What is needed to get Google to reread the new DNS information?

    Edit: I received an answer from Jonas, a software engineer at Google. It looks like they are having troubles linking with Jabber servers located on the OVH network (as is mine, and as Ploum also wrote in comments), and they have contacted OVH. In the meantime, I may try to add another port to my Jabber server, update the SRV record, and see if it brings me more luck.

  6. Review of the Google AdSense program (2004-12-22)

    I see more and more sites containing ads provided by Google through its AdSense program. Out of curiosity, I went and check their Online Terms and Conditions and was stunned by the requirements set out by Google.

    In no event, however, shall Google make payments for any earned balance less than $10.

    If Google choses to terminate the program when your balance reaches $9.99, you will not earn anything. Given that Google releases no information on the amount of money generated by each click (this amount depends on the advertiser), you may well gain nothing by displaying ads on your web pages.

    Notwithstanding the foregoing, Google shall not be liable for any payment based on […] any amounts which result from invalid queries or invalid clicks on Ads generated by any person, bot, automated program or similar device, as reasonably determined by Google, including without limitation through any clicks or impressions […] solicited by payment of money, false representation or request for end users to click on Ads

    It means that people indicating that they have placed AdSense snippets on their pages to earn money may not receive anything as it violates the terms. This is however common practice; for example, Ross Thomas blog may receive no payment because it explains that he expects to be more productive if he earns money through this program. The case of Brian Shoemaker looks even more straightforward as he writes “So support my blog by clicking on the google ads on the right hand side of the page.”

    Google may change its pricing and/or payment structure at any time

    Really?

    You agree to indemnify, defend and hold Google, its agents, affiliates, subsidiaries, directors, officers, employees, and applicable third parties (e.g. relevant advertisers, syndication partners, licensors, licensees, consultants and contractors) (collectively “Indemnified Person(s)”) harmless from and against any and all third party claims, liability, loss, and expense (including damage awards, settlement amounts, and reasonable legal fees), brought against any Indemnified Person(s), arising out of, related to or which may arise from Your use of the Program, the Site(s), and/or Your breach of any term of this Agreement.

    I wonder how many people are not in breach with any term of this agreement.

    Google may retain and use for its own purposes all information You provide, including but not limited to Site demographics and contact and billing information. You agree that Google may transfer and disclose to third parties personally identifiable information about You for the purpose of approving and enabling Your participation in the Program, including to third parties that reside in jurisdictions with less restrictive data laws than Your own

    Oooch! This one means that you will probably be spammed to death.

    You grant Google the right to access, index and cache the Site(s), or any portion thereof, including by automated means including Web spiders or crawlers.

    Even better. It means that even if you use a robots.txt file to exclude portions of your site from being indexed, Google may well do so anyway.

    You know what? I am certainly not going to use Google AdSense on my site. Not only you do not receive any guarantee that you will earn anything, but also you totally give up your privacy while at the same time you clobber your site with ads.