<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
	<title>Tanguy Ortolo</title>
	<link>http://tanguy.ortolo.eu/blog/</link>
	<language>en</language>
	<description>a blog about Debian and self-hosting</description>
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://tanguy.ortolo.eu/blog/feed.php" />
	<lastBuildDate>Sat, 12 May 2012 15:58:00 +0200</lastBuildDate>
	<generator>PluXml</generator>
	<item>
		<title>Signing-party and crypto conference in Paris</title> 
		<link>http://tanguy.ortolo.eu/blog/article53/announce-signing-party-2012-05</link>
		<guid>http://tanguy.ortolo.eu/blog/article53/announce-signing-party-2012-05</guid>
		<description>&lt;a href=&quot;http://commons.wikimedia.org/wiki/File:Muenster-100725-15996-%C3%9Cberwasserkirche-Schl%C3%BCssel.jpg&quot; title=&quot;Wikimedia Commons, GFDL 1.2&quot;&gt;&lt;img src=&quot;http://tanguy.ortolo.eu/blog/data/images/illustrations/st_peter_key.jpg&quot; alt=&quot;Statue of Saint Peter holding the heaven&#039;s key&quot; style=&quot;float: right; margin: .7em 0 0 1em;&quot; /&gt;&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;Content: explanations about cryptography, SSL and PGP, then
signing-party&lt;/li&gt;
&lt;li&gt;Location: &lt;a href=&quot;http://www.openstreetmap.org/?mlat=48.8553&amp;amp;mlon=2.3042&amp;amp;zoom=16&quot;&gt;EPN la Bourdonnais, 105 avenue de la Bourdonnais, 75007
Paris&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Date: 2012-05-21 18:45+02:00&lt;/li&gt;
&lt;li&gt;Duration: 02:15&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Monday 21st during at 18:45, in Paris, there will be a &lt;a
href=&quot;http://www.parinux.org/content/conference-sur-la-cryptographie-ssl-et-pgp-avec-signing-party-par-tanguy-ortolo&quot;
title=&quot;Conference page&quot;&gt;conference&lt;/a&gt; organized by &lt;a
href=&quot;http://www.parinux.org/&quot;&gt;Parinux&lt;/a&gt;, where I will explain the principles
of cryptography and their application in the SSL and PGP systems. This
conference will be followed at 20:30 by a &lt;a
href=&quot;http://fr.wikipedia.org/wiki/Key_signing_party&quot; title=&quot;Key signing party
on Wikipedia&quot;&gt;signing-party&lt;/a&gt; &lt;a
href=&quot;http://fr.wikipedia.org/wiki/Pretty_Good_Privacy&quot; title=&quot;PGP no
Wikipedia&quot;&gt;PGP&lt;/a&gt; et &lt;a href=&quot;http://www.cacert.org/&quot;
title=&quot;CAcert&quot;&gt;CAcert&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For the signing-party, I will ask participants to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;generate a key pair if you do not already have one;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;mailto:tanguy+signingparty[chez]ortolo.eu?subject=[PGP]%20Key%20for%20the%20signing-party%20on%202012-05-21&quot; title=&quot;Tanguy Ortolo&quot;&gt;send me you public key&lt;/a&gt; and
&lt;a href=&quot;http://www.parinux.org/content/conference-sur-la-cryptographie-ssl-et-pgp-avec-signing-party-par-tanguy-ortolo#signing-form&quot; title=&quot;Formulaire d&#039;inscription&quot;&gt;register&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;print some copies of your key fingerprint;&lt;/li&gt;
&lt;li&gt;print the list of participants I will send you;&lt;/li&gt;
&lt;li&gt;come with all that stuff and one or two identity documents.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is a partial translation of the full article I wrote in French, in case
foreigners could attend. Sorry for the very late notice…&lt;/p&gt;</description>
		<pubDate>Sat, 12 May 2012 15:58:00 +0200</pubDate>
		<dc:creator>Tanguy</dc:creator>
	</item>
	<item>
		<title>Signing-party et conférence crypto</title> 
		<link>http://tanguy.ortolo.eu/blog/article52/annonce-signing-party-2012-05</link>
		<guid>http://tanguy.ortolo.eu/blog/article52/annonce-signing-party-2012-05</guid>
		<description>&lt;a href=&quot;http://commons.wikimedia.org/wiki/File:Muenster-100725-15996-%C3%9Cberwasserkirche-Schl%C3%BCssel.jpg&quot; title=&quot;Wikimedia Commons, GFDL 1.2&quot;&gt;&lt;img src=&quot;http://tanguy.ortolo.eu/blog/data/images/illustrations/st_peter_key.jpg&quot; alt=&quot;Statue of Saint Peter holding the heaven&#039;s key&quot; style=&quot;float: right; margin: .7em 0 0 1em;&quot; /&gt;&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;Contenu : explications sur la cryptographie, SSL et PGP puis
signing-party&lt;/li&gt;
&lt;li&gt;Lieu : &lt;a href=&quot;http://www.openstreetmap.org/?mlat=48.8553&amp;amp;mlon=2.3042&amp;amp;zoom=16&quot;&gt;EPN la Bourdonnais, 105 avenue de la Bourdonnais, 75007
Paris&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Date : 2012-05-21 18:45+02:00&lt;/li&gt;
&lt;li&gt;Durée : 02:15&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Le lundi 21 mai au soir, à Paris, se tiendra une &lt;a href=&quot;http://www.parinux.org/content/conference-sur-la-cryptographie-ssl-et-pgp-avec-signing-party-par-tanguy-ortolo&quot; title=&quot;Page de la conférence&quot;&gt;conférence&lt;/a&gt; organisée par &lt;a href=&quot;http://www.parinux.org/&quot;&gt;Parinux&lt;/a&gt;, où
j&#039;expliquerai les principes de base de la cryptographie et leur
application dans les systèmes SSL et PGP. Cette conférence sera suivie
par une &lt;a href=&quot;http://fr.wikipedia.org/wiki/Key_signing_party&quot; title=&quot;Key signing party sur Wikipédia&quot;&gt;signing-party&lt;/a&gt; &lt;a href=&quot;http://fr.wikipedia.org/wiki/Pretty_Good_Privacy&quot; title=&quot;PGP sur Wikipédia&quot;&gt;PGP&lt;/a&gt; et &lt;a href=&quot;http://www.cacert.org/&quot; title=&quot;CAcert&quot;&gt;CAcert&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Pour le déroulement de la signing-party, je vous demanderai de :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;générer un paire de clefs si vous n&#039;en avez pas déjà une ;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;mailto:tanguy+signingparty[chez]ortolo.eu?subject=[PGP]%20Clef%20pour%20la%20signing-party%20du%202012-05-21&quot; title=&quot;Tanguy Ortolo&quot;&gt;m&#039;envoyer votre clef publique&lt;/a&gt; et
&lt;a href=&quot;http://www.parinux.org/content/conference-sur-la-cryptographie-ssl-et-pgp-avec-signing-party-par-tanguy-ortolo#signing-form&quot; title=&quot;Formulaire d&#039;inscription&quot;&gt;vous inscrire&lt;/a&gt; ;&lt;/li&gt;
&lt;li&gt;imprimer quelques exemplaires de votre empreinte de clef ;&lt;/li&gt;
&lt;li&gt;imprimer la liste des participants que je vous enverrai ;&lt;/li&gt;
&lt;li&gt;venir munis de tout cela ainsi que d&#039;un stylo et d&#039;une ou deux pièce d&#039;identité.&lt;/li&gt;
&lt;/ol&gt;&lt;h2&gt;Conférence&lt;/h2&gt;

&lt;p&gt;Cette conférence commencera à 18:45. Elle aura pour but de &lt;em&gt;comprendre&lt;/em&gt;
les principes et les enjeux des systèmes cryptographiques utilisés
aujourd&#039;hui. Pour cela, je donnerai :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;une brève description de l&#039;histoire de la cryptographie ;&lt;/li&gt;
&lt;li&gt;une petite explication des principes mathématiques des cryptosystèmes
asymétriques ;&lt;/li&gt;
&lt;li&gt;une explication des systèmes de certification ;&lt;/li&gt;
&lt;li&gt;une présentation pratique du système OpenPGP avec son implémentation
libre GnuPG.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Signing-party&lt;/h2&gt;

&lt;p&gt;À l&#039;issue de la conférence, vers 20:30, nous procéderons à une
&lt;a href=&quot;http://fr.wikipedia.org/wiki/Key_signing_party&quot; title=&quot;Key signing party sur Wikipédia&quot;&gt;signing-party&lt;/a&gt;. Il s&#039;agira pour les participants de
vérifier mutuellement leur identité afin de certifier leurs &lt;a href=&quot;http://fr.wikipedia.org/wiki/Pretty_Good_Privacy&quot; title=&quot;PGP sur Wikipédia&quot;&gt;clefs
PGP&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Cette signing-party sera également l&#039;occasion, pour les utilisateurs de
&lt;a href=&quot;http://www.cacert.org/&quot; title=&quot;CAcert&quot;&gt;l&#039;autorité de certification SSL CAcert&lt;/a&gt;, de certifier leur
identité dans le cadre de cette organisation.&lt;/p&gt;

&lt;h2&gt;Détails pratiques&lt;/h2&gt;

&lt;p&gt;Il vous est demandé de &lt;a href=&quot;http://www.parinux.org/content/conference-sur-la-cryptographie-ssl-et-pgp-avec-signing-party-par-tanguy-ortolo#signing-form&quot; title=&quot;Formulaire d&#039;inscription&quot;&gt;vous inscrire&lt;/a&gt; afin d&#039;évaluer le
nombre de participants.&lt;/p&gt;

&lt;p&gt;Si vous n&#039;utilisez pas encore PGP, vous pouvez générer une paire de
clefs avec la commande suivante, ou en utilisant un outil graphique tel
que ceux fournis avec les bureaux GNOME et KDE :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gpg --gen-key
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Pour faciliter le déroulement de cette signing-party, veuillez
&lt;a href=&quot;mailto:tanguy+signingparty[chez]ortolo.eu?subject=[PGP]%20Clef%20pour%20la%20signing-party%20du%202012-05-21&quot; title=&quot;Tanguy Ortolo&quot;&gt;m&#039;envoyer&lt;/a&gt; votre clef publique. Vous pouvez
exporter votre clef dans un fichier avec la commande suivante (indiquez
votre adresse à la place de celle de Tintin…), ou en utilisant un outil
graphique :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gpg --armor --export tintin@example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Pour permettre aux participants tardifs de participer, il sera également
utile de vous munir de morceaux de papier indiquant votre empreinte de
clef ; vous pouvez en générer avec l&#039;outil &lt;code&gt;gpg-key2ps&lt;/code&gt; du paquet Debian
&lt;em&gt;signing-party&lt;/em&gt;, ou copier plusieurs fois la sortie de la commande :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gpg --fingerprint tintin@example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Le jour venu, vous aurez besoin à cette signing-party d&#039;un exemplaire
imprimé par vos soins de la liste des participants que je vous enverrai,
ainsi que d&#039;un stylo.&lt;/p&gt;

&lt;p&gt;Pour les utilisateurs de CAcert, veuillez venir avec une bonne liasse de
formulaires d&#039;accréditation pré-remplis à votre nom (en tant que
demandeur &lt;em&gt;et&lt;/em&gt; en tant qu&#039;accréditeur pour ceux qui ont assez de points
pour cela).&lt;/p&gt;</description>
		<pubDate>Fri, 04 May 2012 19:59:00 +0200</pubDate>
		<dc:creator>Tanguy</dc:creator>
	</item>
	<item>
		<title>Debian: switch to UEFI boot</title> 
		<link>http://tanguy.ortolo.eu/blog/article51/debian-efi</link>
		<guid>http://tanguy.ortolo.eu/blog/article51/debian-efi</guid>
		<description>&lt;a href=&quot;http://commons.wikimedia.org/wiki/File:Uefi_logo.svg&quot; title=&quot;From Wikimedia Commons, public domain&quot;&gt;&lt;img src=&quot;http://tanguy.ortolo.eu/blog/data/images/logos/uefi.png&quot; alt=&quot;UEFI logo: a cube with u, e and fi written on each visible face&quot; style=&quot;float: right; margin: .5em 0 0 1em;&quot; /&gt;&lt;/a&gt;

&lt;p&gt;For those interested, here is a way to install Debian and boot it with UEFI
if you have an UEFI motherboard.
Using UEFI with Debian requires expert knowledge so if you do not feel up to
it, keep your BIOS system.&lt;/p&gt;

&lt;h2&gt;1  Background&lt;/h2&gt;

&lt;p&gt;UEFI is a specification for motherboard&#039;s firmwares which is replacing the old
BIOS. For now, UEFI motherboards still include a BIOS compatibility layer.&lt;/p&gt;

&lt;p&gt;The UEFI boot process is quite different from the BIOS one. It involves one
specific piece of the motherboard&#039;s firmware, the UEFI Boot Manager, which is
able to load boot loaders from FAT file systems on specially-typed partitions.
It can offer a boot menu (boot: Debian from HDD, Windows from HDD, USB stick,
DVD?), which can be configured &lt;em&gt;from a running operating system&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;So, basically, to boot a system with UEFI, you need two things:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;to install an UEFI boot loader on a FAT-formated EFI System
    Partition;&lt;/li&gt;
    &lt;li&gt;to tell the UEFI Boot Manager to create an entry for that boot
    loader.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;2  Installation or preparation&lt;/h2&gt;

&lt;p&gt;If you are installing a new Debian system, read the first part. If you
already have a BIOS-bootable Debian system installed, read the second one.&lt;/p&gt;

&lt;p&gt;In both cases you will have to use Debian testing, because stable&#039;s GRUB has
problems with UEFI. You can also use Debian stable while taking only GRUB from
testing though.&lt;/p&gt;

&lt;h3&gt;2.1  Installation of a new Debian system&lt;/h3&gt;

&lt;p&gt;There is no installer image for UEFI, so you can either:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;make your own, by installing an UEFI boot loader to an USB stick, which
    will load a regular installer kernel and initrd;&lt;/li&gt;
    &lt;li&gt;use a regular BIOS installer image, using the compatibility mode of your
    motherboard.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The installer does not provide a convenient way to install an UEFI boot
loader, so you are going to install a regular BIOS boot loader at first, and
switch to UEFI later.&lt;/p&gt;

&lt;p&gt;Use the expert mode and format your hard drive with a GUID Partition Table
(GPT). Create a small partition (1 MiB would be far enough), type it as a BIOS
Boot Partition (this is the untitled flag above the “bootable” one in Partman),
do not format it and do not mount it: this will be needed for BIOS booting.
Create another small partition (same kind of size), type it as an EFI System
Partition (this is the“bootable” flag), format it as FAT and mount it on &lt;em
    class=&quot;filename&quot;&gt;/boot/efi&lt;/em&gt;: this will be needed for UEFI booting.&lt;/p&gt;

&lt;p&gt;Finish the installation as usual, installing GRUB for BIOS, and boot your new
system.&lt;/p&gt;

&lt;h3&gt;2.2  Preparation of an existing Debian system for UEFI&lt;/h3&gt;

&lt;p&gt;You need to use a GUID Partition Table on your hard drive. If you used an
MBR, you lost; you may try to convert it to GPT using a tool such as &lt;a
    href=&quot;http://www.rodsbooks.com/gdisk/&quot;&gt;gdisk&lt;/a&gt;, but that means operating
without a net, loosing your current boot loader in the process.&lt;/p&gt;

&lt;p&gt;If there is no space left on your hard drive, use &lt;a
    href=&quot;http://live.debian.net/&quot;&gt;Debian Live&lt;/a&gt; to make some. Create a small
partition (1 MiB would be far enough), type it as an EFI System Partition, format
it as FAT and mount it (permanently, using the &lt;em class=&quot;filename&quot;&gt;fstab&lt;/em&gt;)
on &lt;em class=&quot;filename&quot;&gt;/boot/efi&lt;/em&gt; (that directory will not exist, so create
it first).&lt;/p&gt;

&lt;h2&gt;3  Switch to GRUB UEFI&lt;/h2&gt;

&lt;p&gt;Install the package &lt;em class=&quot;package&quot;&gt;grub-efi-amd64&lt;/em&gt;. Prepare it by
running the command (assuming your hard drive is &lt;em
    class=&quot;filename&quot;&gt;/dev/sda&lt;/em&gt;):&lt;/p&gt;

&lt;pre class=&quot;cli&quot;&gt;# grub-install /dev/sda&lt;/pre&gt;

&lt;p&gt;That will do three things:&lt;/p&gt;

&lt;ol&gt;
    &lt;li&gt;generate a GRUB image;&lt;/li&gt;
    &lt;li&gt;install it to the EFI partition at &lt;em
        class=&quot;filename&quot;&gt;efi/debian/grubx64.efi&lt;/em&gt;;&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;try&lt;/em&gt; to configure the UEFI Boot Manager (the motherboard&#039;s boot
    menu) to load it on start-up&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That last step will fail. This is expected, because the UEFI Boot Manager can
only be configured from an operating system that was started from UEFI. So if
you stop here, you get an unbootable system.&lt;/p&gt;

&lt;p&gt;Now, copy (a symlink would be relevant here, but that cannot be done on a FAT
file system!) the GRUB image to that other path on the EFI System Partition: &lt;em
    class=&quot;filename&quot;&gt;efi/boot/bootx64.efi&lt;/em&gt;. This is where the UEFI firmware
looks for a boot loader when it has not been configured for a specific path,
typically on removable media. Reboot to check that…&lt;/p&gt;

&lt;p&gt;If that trick worked, you are now on UEFI-booted system. Run
&lt;code&gt;grub-install&lt;/code&gt; again, which should now succeed to configure the UEFI
Boot Manager. Reboot to check that you get a “debian” entry on the motherboard&#039;s
boot menu, and remove &lt;em  class=&quot;filename&quot;&gt;efi/boot/bootx64.efi&lt;/em&gt; which is
no longer needed.&lt;/p&gt;</description>
		<pubDate>Wed, 25 Apr 2012 20:06:00 +0200</pubDate>
		<dc:creator>Tanguy</dc:creator>
	</item>
	<item>
		<title>Des urnes électorales</title> 
		<link>http://tanguy.ortolo.eu/blog/article50/urnes</link>
		<guid>http://tanguy.ortolo.eu/blog/article50/urnes</guid>
		<description>&lt;p&gt;L&#039;approche d&#039;élections en France est l&#039;occasion de se pencher sur les
caractéristiques des urnes utilisées : elles ont l&#039;air d&#039;objets communs, mais
malgré leur conception assez simple, elles respectent des caractéristiques
particulières essentielles aux garanties de secret et de vérifiabilité.&lt;/p&gt;&lt;h2&gt;Des garanties&lt;/h2&gt;

&lt;p&gt;Pour être plus précis, dans un scrutin public, &lt;em&gt;chacun&lt;/em&gt; doit
pouvoir (j&#039;en oublie sans doute) :&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;voter sans que quiconque puisse déterminer le vote en question ;&lt;/li&gt;
    &lt;li&gt;détecter les fraudes (ajout, retrait ou modification de votes) ;&lt;/li&gt;
    &lt;li&gt;vérifier le décompte des votes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Le système de vote actuel avec isoloir, feuille d&#039;émargement, urne et
comptage public fournit toutes ces garanties (à vrai dire, le secret du vote
n&#039;est pas applicable dans le cas marginal d&#039;une unanimité), mais je vais ici
m&#039;attacher particulièrement aux caractéristiques des urnes elles-mêmes. Notons
tout de même qu&#039;il ne s&#039;agit pas garanties absolues : dans le cas d&#039;une fraude,
ce qui est garanti, c&#039;est qu&#039;il sera &lt;em&gt;possible&lt;/em&gt; de la détecter, pas
qu&#039;elle sera effectivement détectée.&lt;/p&gt;

&lt;h2&gt;Des urnes&lt;/h2&gt;

&lt;p&gt;Parmi leurs caractéristiques générales, les urnes utilisées sont
transparentes et grandes :&lt;/p&gt;

&lt;dl&gt;
    &lt;dt&gt;Transparentes&lt;/dt&gt;
    &lt;dd&gt;Pour que chacun puisse constater ce que devient le bulletin de vote, et
    vérifier qu&#039;il n&#039;y a pas de mécanisme caché à l&#039;intérieur, qui irait par
    exemple empiler les enveloppes dans l&#039;ordre : un tel système permettrait à
    un observateur notant l&#039;ordre de passage des électeurs de déterminer
    précisément le vote de chacun.&lt;/dd&gt;

    &lt;dt&gt;Grandes&lt;/dt&gt;
    &lt;dd&gt;Ou, pour être plus précis, grandes par rapport à la taille d&#039;une
    enveloppe, afin que celles-ci puissent s&#039;entasser dans le désordre : avec
    une petite urne, elles s&#039;empileraient nécessairement dans l&#039;ordre faute de
    place…&lt;/dd&gt;
&lt;/dl&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Quand vous irez voter, vérifiez bien ces caractéristiques de l&#039;urne, et
si vous constatez qu&#039;elle est opaque, plaignez-vous !&lt;/p&gt;

&lt;p&gt;Ce dernier conseil n&#039;est pas seulement hypothétique, puisque certaines
mairies ont réellement mis en place des urnes opaques : il s&#039;agit d&#039;ordinateurs
de votes, dont le mécanisme interne est caché au public (quand bien même ils
auraient le capot ouvert, on ne pourrait pas les vérifier pour autant), qui
pourraient tout à fait noter l&#039;ordre des votes, voire modifier ceux-ci.
Peut-être le font-ils réellement d&#039;ailleurs, mais il n&#039;y a aucun moyen de le
savoir…&lt;/p&gt;</description>
		<pubDate>Thu, 19 Apr 2012 22:49:00 +0200</pubDate>
		<dc:creator>Tanguy</dc:creator>
	</item>
	<item>
		<title>Camera with a standard USB cable?</title> 
		<link>http://tanguy.ortolo.eu/blog/article49/camera-usb</link>
		<guid>http://tanguy.ortolo.eu/blog/article49/camera-usb</guid>
		<description>&lt;img src=&quot;http://tanguy.ortolo.eu/blog/data/images/icons/tango-camera-128.png&quot; alt=&quot;Digital camera icon&quot; title=&quot;From the Tango Desktop Project, Public Domain&quot; style=&quot;float: left; margin-right: 1em;&quot; /&gt;

&lt;p&gt;Since some years, there has been a movement towards standardization: mobile
devices are now using Micro-USB for data transfer and charging, and SD or
Micro-SD for storage extension (except Apple of course).&lt;/p&gt;

&lt;p&gt;One piece is lacking to this perfection, however; as far as I know, digital
camera producers did realize that SD won for storage, but they do not seem to
have acknowledged the Micro-USB standard yet.&lt;/p&gt;

&lt;p&gt;Now, since manufacturers and resellers do not indicate the connector type, I
have no way to be sure that this is still the case. So, dear lazyweb, do you
know if, by chance, there exists a compact digital camera that would use SD
cards and a Micro-USB connector for data transfer and integrated charging?&lt;/p&gt;</description>
		<pubDate>Tue, 17 Apr 2012 19:01:00 +0200</pubDate>
		<dc:creator>Tanguy</dc:creator>
	</item>
	<item>
		<title>“Everything is a file” rocks</title> 
		<link>http://tanguy.ortolo.eu/blog/article48/everything-file</link>
		<guid>http://tanguy.ortolo.eu/blog/article48/everything-file</guid>
		<description>&lt;div style=&quot;text-align: center; margin: 1em;&quot;&gt;&lt;a href=&quot;http://commons.wikimedia.org/wiki/File:UNIX-Licence-Plate.JPG&quot; title=&quot;From KHanger at Wikimedia Commons, CC-BY 3.0&quot;&gt;&lt;img src=&quot;http://tanguy.ortolo.eu/blog/data/images/illustrations/unix-license-plate.jpg&quot; alt=&quot;Licence plate with “UNIX” written, subtitle “live free or die”&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;Unix rocks, or at least one of its design feature does: everything is a
file.&lt;/p&gt;

&lt;p&gt;Here is one funny use of that feature. I consider that programs that
manipulate text should basically take it on their standard input, and write it
to their standard output, while specifying the name of an input or output file
should be an optional refinement.&lt;/p&gt;

&lt;p&gt;Well, at least one program was designed the other way: when used to import a
foreign key, &lt;em class=&quot;software command&quot;&gt;ssh-keygen -i&lt;/em&gt; has no option to
read it on its standard input. No problem, this can be worked around:&lt;/p&gt;

&lt;pre class=&quot;cli&quot;&gt;# ssh-keygen -i&lt;strong&gt;f /dev/stdin&lt;/strong&gt;
[paste the foreign key here]&lt;/pre&gt;

&lt;p&gt;Unfortunately, that does not work with every action of &lt;em class=&quot;software
    command&quot;&gt;ssh-keygen&lt;/em&gt; since not all of them were written to be able to
handle streams, which cannot be rewound.&lt;/p&gt;</description>
		<pubDate>Mon, 16 Apr 2012 19:34:00 +0200</pubDate>
		<dc:creator>Tanguy</dc:creator>
	</item>
	<item>
		<title>Why “www.”?</title> 
		<link>http://tanguy.ortolo.eu/blog/article47/why-www</link>
		<guid>http://tanguy.ortolo.eu/blog/article47/why-www</guid>
		<description>&lt;a href=&quot;http://commons.wikimedia.org/wiki/File:WWW_logo_by_Robert_Cailliau.svg&quot; title=&quot;From Hell Pé at Wikimedia Commons, Public Domain&quot;&gt;&lt;img src=&quot;http://tanguy.ortolo.eu/blog/data/images/logos/www.png&quot; alt=&quot;Three big “W”s in shades of green&quot; style=&quot;float: right; margin: 1em 0 0 1em;&quot;/&gt;&lt;/a&gt;

&lt;p&gt;Many websites have addresses that use a &lt;code class=&quot;domainname&quot;&gt;www.-&lt;/code&gt;
prefix. Some people are &lt;a href=&quot;http://www.yes-www.org/&quot;&gt;encouraging this
    practice&lt;/a&gt;, other are &lt;a href=&quot;http://no-www.org/&quot;&gt;advising against
    it&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I, for one, think this prefix makes sense and is really useful, so here is 
an explanation of my opinion. In a nutshell: the Wold Wide Web is one Internet
service among many other such as domain name, mail, mailboxes or instant
messenging; using a dedicated prefix allows to distribute all these services to
specific servers in a convenient way.&lt;/p&gt;&lt;p&gt;On Internet, you can expose several services, the most common being domain
names (DNS), websites (HTTP), incoming mail (SMTP), outgoing mail submission
(submission), mailbox fetching (POP) or consultating (IMAP) and instant
messenging (XMPP).&lt;/p&gt;

&lt;h2&gt;Constraints&lt;/h2&gt;

&lt;p&gt;Modern Internet services can have constraints such as load balancing,
failover and most importantly &lt;em&gt;the
    possibility to use specific servers for each service&lt;/em&gt; instead of having
    all of them on the same server.&lt;/p&gt;

&lt;h2&gt;Dedicated records&lt;/h2&gt;

&lt;p&gt;Some service were designed or revised to take these contraints into account;
this include the domain name, incoming mail and instant messenging, by using
dedicated DNS records:&lt;/p&gt;

&lt;pre class=&quot;dns&quot;&gt;
example.com.                    NS              roquefort.example.com.
example.com.                    MX  10          morbier.example.com.
_xmpp-server._tcp.example.com.  SRV 10 100 5269 morbier.example.com.
&lt;/pre&gt;

&lt;p&gt;In that example, the name service of &lt;code class=&quot;dns&quot;&gt;example.com.&lt;/code&gt; is
provided by the server &lt;em class=&quot;hostname&quot;&gt;Roquefort&lt;/em&gt; while the incoming
mail and instant messenging service are provided by &lt;em
    class=&quot;hostname&quot;&gt;Morbier&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;Dedicated prefixes&lt;/h2&gt;

&lt;p&gt;On the contrary, some services were not designed to take these constraint
into account, and may be too fossilized to be revised for that; this includes
the Web and mailbox service. A convenient way to work around the antiquated
design of these services is to use a well known prefix:&lt;/p&gt;

&lt;pre class=&quot;dns&quot;&gt;
www.example.com.                CNAME           ossau-iraty.example.com.
smtp.example.com.               CNAME           morbier.example.com.
pop.example.com.                CNAME           morbier.example.com.
imap.example.com.               CNAME           morbier.example.com.
&lt;/pre&gt;

&lt;p&gt;In that example, the Web service of &lt;code class=&quot;dns&quot;&gt;example.com.&lt;/code&gt; is
provided by the server &lt;em class=&quot;hostname&quot;&gt;Ossay-Iraty&lt;/em&gt; while the email
submission and  mailbox services are provided by &lt;em
    class=&quot;hostname&quot;&gt;Morbier&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;Readability and flexibility&lt;/h2&gt;

&lt;p&gt;Using dedicated records and prefixes increases the consistency and
readability of a DNS zone, since it allows to refer to the servers by their
canonical host name, and to define their IP addresses once and for all:&lt;/p&gt;

&lt;pre class=&quot;dns&quot;&gt;
; Services
example.com.                    NS              roquefort.example.com.
example.com.                    MX  10          morbier.example.com.
pop.example.com.                CNAME           morbier.example.com.
imap.example.com.               CNAME           morbier.example.com.
www.example.com.                CNAME           ossau-iraty.example.com.

; Hosts
roquefort.example.com.          A               192.2.0.12
                                AAAA            2001:db8::12
morbier.example.com             A               192.2.0.42
                                AAAA            2001:db8::42
ossau-iraty.example.com.        A               192.2.0.51
                                AAAA            2001:db8::51
&lt;/pre&gt;

&lt;p&gt;You can think of that practice as connecting dots between services and
hosts:&lt;/p&gt;

&lt;pre class=&quot;ascii-art&quot;&gt;
name service  •────────────────────→• Roquefort
incoming mail •────────┬───────────→• Morbier
mailboxes     •────────╯ ╭─────────→• Ossau-Iraty
website       •──────────╯
&lt;/pre&gt;

&lt;p&gt;With such a DNS zone, it is very easy to identify which server is hosting
each service. Using host names rather than IP addresses multiple times reduces
the information duplication, which in turn facilitates future chances and
reduces the risk of error (it is easier to swith the website from &lt;em
    class=&quot;hostname&quot;&gt;Ossay-Iraty&lt;/em&gt; to &lt;em class=&quot;hostname&quot;&gt;Morbier&lt;/em&gt; than
from 192.2.0.51/2001:db8::51 to 192.2.0.42/2001:db8::42).&lt;/p&gt;</description>
		<pubDate>Thu, 12 Apr 2012 19:23:00 +0200</pubDate>
		<dc:creator>Tanguy</dc:creator>
	</item>
	<item>
		<title>JSON License considered harmful</title> 
		<link>http://tanguy.ortolo.eu/blog/article46/json-license</link>
		<guid>http://tanguy.ortolo.eu/blog/article46/json-license</guid>
		<description>&lt;h2&gt;Summary&lt;/h2&gt;

&lt;p&gt;The &lt;a href=&quot;http://www.json.org/license.html&quot;&gt;JSON License&lt;/a&gt; may
seem interesting, but it a bad license, both non-free and ambiguous: do
&lt;em&gt;not&lt;/em&gt; use it. If you are the author of a piece of software that
uses &lt;a href=&quot;http://www.crockford.com/javascript/jsmin.html&quot;&gt;JSMin&lt;/a&gt;
or its &lt;a href=&quot;https://github.com/rgrove/jsmin-php/&quot;&gt;PHP port&lt;/a&gt;,
consider dropping that non-free part or at least rendering it
optional.&lt;/p&gt;&lt;h2&gt;The JSON license&lt;/h2&gt;

&lt;p&gt;Do you know the &lt;a href=&quot;http://www.json.org/license.html&quot;&gt;JSON License&lt;/a&gt;?
It is a software license inspired by the &lt;a
    href=&quot;http://www.jclark.com/xml/copying.txt&quot;&gt;MIT/Expat license&lt;/a&gt; with one
additional morality clause:&lt;/p&gt;

&lt;blockquote class=&quot;license&quot;&gt;&lt;p&gt;The Software shall be used for Good, not
    Evil.&lt;/p&gt;&lt;/blockquote&gt;

&lt;h2&gt;Non-free&lt;/h2&gt;

&lt;p&gt;For novices that clause can be perceived as a good idea serving a
noble goal. But the problem here is that is would make your software
&lt;em&gt;non-free&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Indeed, there are two common definitions of free software: the &lt;a
    href=&quot;http://www.gnu.org/philosophy/free-sw.html&quot;&gt;FSF
    definition&lt;/a&gt;, and the &lt;a
    href=&quot;http://www.debian.org/social_contract#guidelines&quot;&gt;Debian Free
    Software Guidelines&lt;/a&gt;, also known as the &lt;a
    href=&quot;http://opensource.org/docs/osd&quot;&gt;Open Source Definition&lt;/a&gt;.
Basically, both definitions indicate that to be free, a piece of
software must be usable with no restrictions, and forbidding evil uses
&lt;em&gt;is&lt;/em&gt; such a restriction. Specifically, it violates:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;the FSF&#039;s zeroth liberty: &lt;cite&gt;“A program is free software if
        the program&#039;s users have the four essential freedoms: The
        freedom to run the program, for &lt;em&gt;any&lt;/em&gt; purpose (freedom
        0).  […]”&lt;/cite&gt;&lt;/li&gt;
    &lt;li&gt;the DFSG/OSD sixth point: &lt;cite&gt;“No Discrimination Against
        Fields of Endeavor: The license must &lt;em&gt;not&lt;/em&gt; restrict
        anyone from making use of the program in a specific field of
        endeavor.”&lt;/cite&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Ambiguous&lt;/h2&gt;

&lt;p&gt;In addition to these incompatibilities to being free, this morality
clause implies additional problems, the most important one being that it
is ambiguous, which is very bad for a license clause: &lt;em&gt;who&lt;/em&gt;
exactly defines what is Good and what is Evil? If it is the author, then
this clause could be used for arbitrarily forbidding &lt;em&gt;any&lt;/em&gt; use;
it it is the licensee, then this clause it as good as &lt;em&gt;void&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;Do not use it&lt;/h2&gt;

&lt;p&gt;For all these reasons, the JSON License with that infamous morality
clause is not suitable for free software, so if you plan to use that
license for your work, please consider these suggestions: 1. do
&lt;em&gt;not;&lt;/em&gt; 2.  do not, &lt;em&gt;really;&lt;/em&gt; 3. if still in doubt, refer
to point 1. There are several standard free software licenses, the
closest one being the &lt;a
    href=&quot;http://www.jclark.com/xml/copying.txt&quot;&gt;MIT/Expat&lt;/a&gt; one, that
you should consider instead.&lt;/p&gt;

&lt;p&gt;Now, if you really want to be &lt;a
    href=&quot;http://www.gnu.org/licenses/license-list.html#JSON&quot;&gt;considered as
    non-free&lt;/a&gt;, and rejected by &lt;a
    href=&quot;http://lists.debian.org/debian-legal/2012/03/msg00016.html&quot;&gt;Debian&lt;/a&gt;,
&lt;a href=&quot;https://bugzilla.redhat.com/455507&quot;&gt;Red Hat/Fedora&lt;/a&gt;, &lt;a
    href=&quot;http://wonko.com/post/jsmin-isnt-welcome-on-google-code&quot;&gt;Google
    Code&lt;/a&gt; and more generally any free software distributor, this is the way
to go.&lt;/p&gt;

&lt;p&gt;On thing worth noting is that this morality clause only annoys free
software distributors, that are certainly not doing Evil, but will not
prevent any evil person to do Evil things with your software. To
encourage people to do Good rather than Evil, it would be better to
formulate that clause as a suggestion rather than an order:&lt;/p&gt;

&lt;blockquote class=&quot;license&quot;&gt;&lt;p&gt;The Software &lt;em&gt;should&lt;/em&gt; rather be used
    for Good, not Evil.&lt;/p&gt;&lt;/blockquote&gt;

&lt;h2&gt;The JSMin case&lt;/h2&gt;

&lt;p&gt;This infamous JSON License is known to be used by &lt;a
    href=&quot;http://www.crockford.com/javascript/jsmin.html&quot;&gt;JSMin&lt;/a&gt; and
its &lt;a href=&quot;https://github.com/rgrove/jsmin-php/&quot;&gt;PHP port&lt;/a&gt;. If you
are a Web application author, be careful when embedded external content,
since it can render you &lt;em&gt;whole&lt;/em&gt; piece of software non-free! If
you are using JSMin, I would suggest that you drop it, or at least make
it optional by using a conditional (if JSMin is here, use it, otherwise
do nothing) so that distributors such as Debian can expurgate that
non-free part.&lt;/p&gt;</description>
		<pubDate>Fri, 09 Mar 2012 23:34:00 +0100</pubDate>
		<dc:creator>Tanguy</dc:creator>
	</item>
</channel>
</rss>
