<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>Adrien Humilière</title>
 <link href="https://adhumi.fr/atom.xml" rel="self"/>
 <link href="https://adhumi.fr/"/>
 <updated>2026-06-05T16:10:46Z</updated>
 <id>https://adhumi.fr/</id>
 <author>
   <name>Adrien Humilière</name>
 </author>

 
 
 <entry>
   <title>Build an iOS app from an iPad</title>
   <link href="https://adhumi.fr/ios-app-from-ipad"/>
   <updated>2022-06-30T19:00:00Z</updated>
   <id>https://adhumi.fr/ios-app-from-ipad</id>
   <content type="html"></content>
 </entry>
 
 
 <entry>
   <title>Something about Xcode ^^</title>
   <link href="https://adhumi.fr/xcode-11"/>
   <updated>2019-07-11T19:00:00Z</updated>
   <id>https://adhumi.fr/xcode-11</id>
   <content type="html"></content>
 </entry>
 
 
 <entry>
   <title>Inside Brut.</title>
   <link href="https://adhumi.fr/inside-brut"/>
   <updated>2019-04-18T19:00:00Z</updated>
   <id>https://adhumi.fr/inside-brut</id>
   <content type="html">&lt;p&gt;Presented with &lt;a href=&#34;https://github.com/liquidsoul&#34;&gt;Sebastion Duperron&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 
 <entry>
   <title>Quiche à la feta, poivron et tomates séchées</title>
   <link href="https://adhumi.fr/quiche-tomates-feta-poivron"/>
   <updated>2019-02-19T00:00:00Z</updated>
   <id>https://adhumi.fr/quiche-tomates-feta-poivron</id>
   <content type="html">&lt;p&gt;Préchauffer le four à 180°C.&lt;/p&gt;
&lt;p&gt;Battre les oeufs avec le lait et la crème fraîche. Ajouter le sel, le poivre et les herbes de provences&lt;/p&gt;
&lt;p&gt;Couper les poivrons, les tomates et la feta en petits dés. Les ajouter au mélange précédent.&lt;/p&gt;
&lt;p&gt;Etaler la pâte, la froncer et y verser l&amp;rsquo;appareil. Attention à bien répartir la garniture sur la pâte.&lt;/p&gt;
&lt;p&gt;Mettre au four et laisser cuire pendant 40 min.&lt;/p&gt;
</content>
 </entry>
 
 
 <entry>
   <title>Tarte normande</title>
   <link href="https://adhumi.fr/tarte-normande"/>
   <updated>2019-02-05T00:00:00Z</updated>
   <id>https://adhumi.fr/tarte-normande</id>
   <content type="html">&lt;p&gt;Étaler la pâte et un moule à tarte avec.&lt;/p&gt;
&lt;p&gt;Disposer les pommes en lamelles assez épaisses.&lt;/p&gt;
&lt;p&gt;Battre les oeufs, le sucre, l’amande en poudre, la crème fraîche et le Calvados dans un saladier.&lt;/p&gt;
&lt;p&gt;Verser sur les pommes et disposer quelques amandes éffilées pour la décoration.&lt;/p&gt;
&lt;p&gt;Cuire 25 à 30 minutes à four chaud (180°C)&lt;/p&gt;
</content>
 </entry>
 
 
 <entry>
   <title>Cannelés Bordelais</title>
   <link href="https://adhumi.fr/canneles-bordelais"/>
   <updated>2019-01-26T00:00:00Z</updated>
   <id>https://adhumi.fr/canneles-bordelais</id>
   <content type="html">&lt;p&gt;La veille, mettez le lait à bouillir avec les gousses de vanille fendues en deux dans le sens de la longueur et les grains extraits des gousses. Ajoutez le beurre au lait chaud. Battez les oeufs et le sucre dans une jatte. Tamisez la farine et incorporez en plus dans le mélange sucre/œufs. Versez le lait chaud en filet et remuez vigoureusement pour obtenir une pâte homogène. Ajoutez le rhum. Couvrez d’un papier film alimentaire, gardez 24h au réfrigérateur.&lt;/p&gt;
&lt;p&gt;A l’aide d’un pinceau, badigeonnez les moules à canelés de beurre. Mettez les moules à glacer dans le freezer quelques minutes. Posez-les sur une plaque, puis remplissez-les aux trois-quarts de leur hauteur.&lt;/p&gt;
&lt;p&gt;Faites-les cuire dans le four préchauffé à 200°C (thermostat 7) pendant une heure environ (55 minutes pour les petits formats). Le repère : quand c’est noir, c’est cuit !&lt;/p&gt;
&lt;p&gt;Dès que les canelés sont sortis du four, démoulez-les sans attendre en les tapant de façon énergique sur le plan de travail. Disposez-les sur une grille à patisserie. Les canelés se mangent le jour même.&lt;/p&gt;
</content>
 </entry>
 
 
 <entry>
   <title>C'est une île et elle est belle</title>
   <link href="https://adhumi.fr/belle-ile-2018"/>
   <updated>2018-09-24T01:00:00Z</updated>
   <id>https://adhumi.fr/belle-ile-2018</id>
   <content type="html">&lt;p&gt;Ce week-end, j’ai couru le 83 km de Belle Île en Trail. Une petite course sympathique qui consiste principalement à faire le tour de Belle-Île-en-Mer, par le sentier côtier.&lt;/p&gt;
&lt;p&gt;Arrivée sur l’île vers 15h le vendredi. Je pars tout de suite faire un petit footing de 30 minutes pour me dégourdir les jambes après le voyage. Récupération du dossard (298) puis préparation du sac et de la tenue. Un dîner à base de riz, sauce tomate et œufs durs. Au lit à 22h, le réveil sonne tôt le lendemain matin.&lt;/p&gt;
&lt;img src=&#34;/assets/belle-ile/belleile-prepa.jpg&#34; alt=&#34;Préparation du matériel&#34; class=&#34;rounded mx-auto d-block&#34; /&gt;
&lt;p&gt;&lt;strong&gt;3h30&lt;/strong&gt;, le réveil sonne.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4h15&lt;/strong&gt;, je me lève. Préparation et dégustation du porridge d’avant course (lait d’amande, flocons d’avoine, baies de goji).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5h45&lt;/strong&gt;, direction le briefing d’avant course.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6h15&lt;/strong&gt;, briefing « On va avoir du vent de secteur sud-ouest, mais la pluie n’arrivera que demain, donc on devrait avoir une belle journée »&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6h45&lt;/strong&gt;, tout le monde est sur la ligne de départ. Ça papote. Il faut bon, short/t-shirt de rigueur.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6h55&lt;/strong&gt;, allumage des lampes frontales. Le speaker met l’ambiance.&lt;/p&gt;
&lt;img src=&#34;/assets/belle-ile/belleile-depart.jpg&#34; alt=&#34;Départ&#34; class=&#34;rounded mx-auto d-block&#34; /&gt;
&lt;p&gt;&lt;strong&gt;7h00&lt;/strong&gt;, c’est parti ! Le départ est sonné par la corne de brume et les coureurs passent entre les fumigènes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7h02&lt;/strong&gt;, coucou Maman 👋&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7h03&lt;/strong&gt;, on quitte le port par une jolie montée dans l’herbe et dans la nuit. Cette fois c’est vraiment parti.&lt;/p&gt;
&lt;p&gt;Le peloton s’étire progressivement, avec quelques ralentissements dans les passages techniques. Je me cale à une allure qui me convient bien. Je vérifie sur la montre : 7,8 km/h. Parfait, c’est ce que j’estimais pour cette portion, la vitesse diminuera progressivement au fur et à mesure que la course avancera.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7h35&lt;/strong&gt;, le jour commence à se lever. Je coupe la frontale. Le ciel est couvert mais pas menaçant.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;9h15&lt;/strong&gt;, premier ravitaillement à Locmaria, au kilomètre 18, 393ème position. Je suis super frais et je suis dans les temps que je me suis fixé. Je remplis ma gourde droite avec de la St Yorre (erreur, les bulles dans les flasques c’est vraiment pas terrible). Je tâte la gauche, elle est encore bien remplie. J’ai de quoi faire les 21 kilomètres qui me séparent de Bangor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;9h17&lt;/strong&gt;, j’attrape quelques morceaux de banane, deux TUCs, et c’est reparti, direction Bangor.&lt;/p&gt;
&lt;img src=&#34;/assets/belle-ile/belleile-landscape.jpg&#34; alt=&#34;Un beau paysage&#34; class=&#34;rounded mx-auto d-block&#34; /&gt;
&lt;p&gt;Cette portion est une alternance de petites descentes et montées raides et techniques, de portions roulantes sur les épaules entre les criques, et de grandes lignes droites vers l’intérieur des terres. Je reste très à l’aise. Je me surprend parfois à des vitesses supérieures à 10 km/h (vitesses que j’avais du mal à tenir en footing il y a encore quelques mois). La vitesse moyenne se maintien, la météo se maintien, pas de douleurs, le moral est bon… on continue !&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;12h05&lt;/strong&gt;, arrivée au ravitaillement de Bangor, 358ème position. Coucou Maman 👋&lt;/p&gt;
&lt;p&gt;J’avale deux Pom’potes. Je prend une nouvelle flasque d’Hydrixir, je recharge les deux pâtes de fruits, deux pâtes d’amande et le gel que j’ai consommé jusque là. Deux verres de coca, quelques morceaux de banane et deux TUCs, et c’est reparti !&lt;/p&gt;
&lt;img src=&#34;/assets/belle-ile/belleile-bangor.jpg&#34; alt=&#34;Bangor&#34; class=&#34;rounded mx-auto d-block&#34; /&gt;
&lt;p&gt;&lt;strong&gt;12h06&lt;/strong&gt;, il commence à tomber quelques goutes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;12h07&lt;/strong&gt;, il pleut.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;12h08&lt;/strong&gt;, à la sortie d’un petit bois, une grosse rafale de vent. Ok, ca semble sérieux, j’enfile la veste.  Je met un peu de musique pour entrer dans ma bulle et rester concentré.&lt;/p&gt;
&lt;p&gt;32 kilomètres à parcourir avant le prochain ravitaillement à Sauzon. Je prévois d’y être à 16h15. Dans un premier temps une belle alternance de montées et descentes raides et d’épaules roulantes sur lesquelles le vent souffle abondamment, puis des grandes lignes droites à l’intérieur des terres après Port-Cotton. Mon genoux droit lance quelques signaux d’alerte, j’essaye d’y faire attention dans les descentes raides.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;14h01&lt;/strong&gt;, arrivée à Anterre où l’organisation a prévu un point d’eau. Je bois un bon coup, je recharge les flasques, échange quelques mots avec le bénévole qui distribue l’eau et c’est reparti. Je suis surpris par le rythme toujours constant que j’arrive à tenir.&lt;/p&gt;
&lt;p&gt;Depuis Anterre, il faut remonter jusqu’à la Pointe des Poulains (le cap Nord de l’île), avec des longues portions roulantes, puis redescendre sur Sauzon, où le parcours redevient très cassant jusqu’à l’arrivée, avec une succession interminable de petites criques.&lt;/p&gt;
&lt;p&gt;Je maintiens le rythme sans trop de difficultés jusqu’à la Pointe des Poulains. Quand on bascule vers l’autre rive, le changement de terrain me ramène rapidement à la réalité. Ma vitesse moyenne chute et les 3 kilomètres jusqu’à Sauzon sont interminables. Je commence à avoir des difficultés à courir et le genoux qui montrait des signaux d’alerte 30 kilomètres plus tôt n’en et plus au stade des signaux.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;16h14&lt;/strong&gt;, arrivée au ravitaillement sur le port de Sauzon, 292ème position. Coucou Maman 👋&lt;/p&gt;
&lt;p&gt;J’avale mes deux Pom’potes appuyé sur une grille. C’est dur. Une nouvelle flasque d’Hydrixir, je recharge les pâtes de fruit et la Cliff consommés sur le dernier tronçon. La pluie s’est arrêtée et cette rive est moins exposée au vent, je retire la veste et la remet dans le sac.&lt;/p&gt;
&lt;img src=&#34;/assets/belle-ile/belleile-sauzon.jpg&#34; alt=&#34;Sauzon, dur !&#34; class=&#34;rounded mx-auto d-block&#34; /&gt;
&lt;p&gt;Deux verres de coca, une demi banane, deux TUC, et c’est reparti jusqu’à l’arrivée.&lt;/p&gt;
&lt;p&gt;La reprise est dure. Du mal à courir, le genoux fait de plus en plus mal et chaque rupture de pente me fait souffrir. 13 kilomètres, c’est encore long. Je me cale sur un rythme de marche rapide en me disant que ça ira peut-être mieux par la suite.&lt;/p&gt;
&lt;p&gt;Ça ne s’améliore pas par la suite, mais je me force quand même à courir sur quelques tronçons roulants, pour ne pas trop perdre le rythme.&lt;/p&gt;
&lt;p&gt;J’arrive à la citadelle de Palais, le parcours traverse le fort et descend sur le port. J’arrive à dérouler et courir un peu en serrant les dents. Une belle remontée vers les hauts de la ville avant de descendre sur la ligne d’arrivée.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;18h43&lt;/strong&gt;, la dernière ligne droite en descente est très douloureuse avec mon genoux droit, mais je me concentre et j’arrive à passer la ligne en courant (pas avec le sourire).&lt;/p&gt;
&lt;img src=&#34;/assets/belle-ile/belleile-arrivee.jpg&#34; alt=&#34;Enfin l&#39;arrivée&#34; class=&#34;rounded mx-auto d-block&#34; /&gt;
&lt;p&gt;11 heures, 43 minutes et 28 secondes&lt;/p&gt;
&lt;p&gt;323ème sur 467 finishers&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Petit bilan :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Malgré mon explosion au vol un peu avant Sauzon, je suis très content de ma course. Je ne m’imaginais pas capable de tenir ce rythme (et avec cette facilité) pendant aussi longtemps. Les 38 premiers kilomètres n’étaient que du plaisir. Les 25 suivants entre Bangor et la Pointe des Poulains ont été rendus difficiles par le mauvais temps, mais les sensations étaient là. Pour la suite, j’ai au moins réussi à ne pas m’écrouler complètement et à faire bonne figure dans les 2 kilomètres avant l’arrivée.
C’est ma meilleur performance en course (cette place me met dans les 2/3 du peloton, alors que mes classements habituels sont dans les 10% du fond) et ça fait suite à une grosse préparation pendant l’été et depuis le début de l&amp;rsquo;année. Merci à &lt;a href=&#34;http://www.fartleck.com&#34;&gt;Christophe&lt;/a&gt; pour le coaching.&lt;/p&gt;
&lt;p&gt;Merci aussi à Maman pour m’avoir accompagné sur l&amp;rsquo;île et assisté aux ravitaillements (on sous estime le bien que ça fait de voir un visage familiers dans les moments difficile).&lt;/p&gt;</content>
 </entry>
 
 
 <entry>
   <title>Localization done bien</title>
   <link href="https://adhumi.fr/localization-done-bien"/>
   <updated>2018-04-12T19:00:00Z</updated>
   <id>https://adhumi.fr/localization-done-bien</id>
   <content type="html">&lt;p&gt;Presented with &lt;a href=&#34;https://twitter.com/vidriloco&#34;&gt;Alejandro Cruz&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 
 <entry>
   <title>Test and distribute an iOS app with Gitlab CI</title>
   <link href="https://adhumi.fr/gitlab-ci-ios"/>
   <updated>2017-11-09T19:00:00Z</updated>
   <id>https://adhumi.fr/gitlab-ci-ios</id>
   <content type="html"></content>
 </entry>
 
 
 <entry>
   <title>Pushing Forward iOS Notifications</title>
   <link href="https://adhumi.fr/user-notifications"/>
   <updated>2017-09-23T09:45:00Z</updated>
   <id>https://adhumi.fr/user-notifications</id>
   <content type="html">&lt;img src=&#34;/talks/assets/frenchkit-2017.jpg&#34; alt=&#34;FrenchKit 2017&#34; class=&#34;rounded float-right img-fluid&#34; style=&#34;margin-bottom:15px;&#34;/&gt;
&lt;p&gt;If you used a smartphone for some time, you may have experienced noisy and annoying notifications. This talk gives an overview of the possibilities of notification APIs and show how to be a good citizen with your apps.&lt;/p&gt;
</content>
 </entry>
 
 
 <entry>
   <title>Trail trip Oisans : préparation</title>
   <link href="https://adhumi.fr/trail-trip-oisans-1"/>
   <updated>2017-07-31T00:00:00Z</updated>
   <id>https://adhumi.fr/trail-trip-oisans-1</id>
   <content type="html">&lt;p&gt;&lt;em&gt;Quelques jours de liberté pendant l’été (tout le reste de la famille en vacances), pas de vacances en montagne prévues, que faire ?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;C’est globalement ce qui m’a animé quand j’ai réservé un aller-retour en train-couchette pour Briançon — le dernier pour les Alpes. Départ le samedi soir et retour le mardi matin, à l’heure pour aller bosser.&lt;/p&gt;
&lt;p&gt;Maintenant, il va falloir trouver de quoi s’occuper pendant ces deux jours. Et pourquoi pas du trail ? 😇&lt;/p&gt;
&lt;h1 id=&#34;départ-et-arrivée&#34;&gt;Départ et arrivée&lt;/h1&gt;
&lt;p&gt;Trouver un (bon) parcours est toujours assez complexe. Quand on a que deux jours et qu’on ne veut pas faire un aller-retour, ça l’est encore plus.&lt;/p&gt;
&lt;p&gt;Le train pour Briançon fait une série d’arrêts avant sa destination finale (Embrun, Montdauphin-Guillestre, L&amp;rsquo;argentière-Les-Écrins…), ce qui laisse une palette de possibilités pour les points de départ et d’arrivée.&lt;/p&gt;
&lt;p&gt;Embrun est un bon point d&amp;rsquo;arrivée, parce que Lucie et Antoine y habitent et que ça serait l&amp;rsquo;occasion de les voir.&lt;/p&gt;
&lt;p&gt;Le Queyras est intéressant, d’autant que je n’y ai jamais vraiment mis les pieds, mais pas facile de relier Embrun de agréablement depuis ce massif.&lt;/p&gt;
&lt;p&gt;Il y a quelques années, j’ai randonné sur le tour de l’Oisans et ai particulièrement apprécié les paysages. Pourquoi ne pas partir sur ce secteur ?&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.flickr.com/photos/jetef2/9434136677/sizes/l&#34;&gt;&lt;img src=&#34;/assets/oisans/oisans.jpg&#34; class=&#34;img-fluid&#34; alt=&#34;E. D&#39;Ascoli Photographies&#34;/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;L’Argentière-la-Bessée -&amp;gt; Embrun pourrait être un bon choix. 24,5 km les séparent à vol d’oiseau. L’itinérance et un lieu de départ différent de l’arrivée représentent un défi supplémentaire. &lt;em&gt;C&amp;rsquo;est parti !&lt;/em&gt;&lt;/p&gt;
&lt;h1 id=&#34;le-parcours&#34;&gt;Le parcours&lt;/h1&gt;
&lt;p&gt;Cherchons maintenant un parcours précis. Ce que je recherche, c’est de la haute montagne. Et si possible rester perché le plus longtemps possible sans redescendre dans les vallées.&lt;/p&gt;
&lt;p&gt;Le refuge du Pré de la Chaumette semble être un bon point de chute pour la nuit du dimanche au lundi. 1800m d’altitude, entouré de cols à plus de 2400m, j’y suis déjà passé en 2010 pendant le tour de l’Oisons et c’est un refuge très sympathique.&lt;/p&gt;
&lt;h2 id=&#34;jour-1-largentière-la-bessée--refuge-du-pré-de-la-chaumette&#34;&gt;Jour 1 : L’Argentière-la-Bessée → Refuge du Pré de la Chaumette&lt;/h2&gt;
&lt;p&gt;J’ai d’abord envisagé de passer par Valouise et le col de l’Aup Martin. Ça avait été ma grande frustration du tour de l’Oisons : la gardienne du refuge m’avait dissuadé d’emprunter ce chemin à cause de l’enneigement, alors que c’était promis comme l’un des plus beaux passages de la randonnée.&lt;/p&gt;
&lt;p&gt;Problème : passer par ce Valon ajoute beaucoup de kilomètres. Pas trés raisonnable pour un premier jour, surtout quand on est pas acclimaté à l’altitude.&lt;/p&gt;
&lt;p&gt;Ce sera donc en passant par le col de la Pousterle (au dessus de Puy Saint-Vincent), remontée jusqu’au Pas de la Cavale et descente sur le refuge du Pré de la Chaumette.&lt;/p&gt;
&lt;p&gt;Ce qui représentera tout de même 33,5 km et 2300 m de dénivelé positif.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.strava.com/routes/9460498&#34;&gt;&lt;img src=&#34;/assets/oisans/jour1.png&#34; class=&#34;img-fluid&#34; alt=&#34;Profil du jour 1&#34;/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;jour-2-refuge-du-pré-de-la-chaumette--embrun&#34;&gt;Jour 2 : Refuge du Pré de la Chaumette → Embrun&lt;/h2&gt;
&lt;p&gt;L’itinéraire était moins évident pour le deuxième jour. Il s’agit de rejoindre Embrun, mais il n’y a pas d’itinéraire franc et direct.&lt;/p&gt;
&lt;p&gt;Ce sera donc le col du Cheval de Bois puis celui de Prelles (2800 m), descente sur le Grand Lac des Estaris (qui promet d’être magnifique) puis Prapic (1500 m). Depuis Prapic, direction Embrun en ligne droite par le col des Tourettes (2600 m).&lt;/p&gt;
&lt;p&gt;Là aussi, un parcours long et plutôt engagé, mais un passage au village de Prapic pour éventuellement recharger quelques batteries.&lt;/p&gt;
&lt;p&gt;Au total, 51 km et 2350 m de dénivelé positif, en deux cols.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.strava.com/routes/9460622&#34;&gt;&lt;img src=&#34;/assets/oisans/jour2.png&#34; class=&#34;img-fluid&#34; alt=&#34;Profil du jour 2&#34;/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;entraînement&#34;&gt;Entraînement&lt;/h1&gt;
&lt;p&gt;Rien de magique ici. Pour être capable d’encaisser plusieurs (entre 6 et 10) heures de course par jour, il faut courir. 🙃&lt;/p&gt;
&lt;p&gt;Vincent, mon entraineur à l’ESN m’a concocté un plan d’entrainement incluant des séances de VMA, du travail au seuil et des sorties longues.&lt;/p&gt;
&lt;p&gt;Pendant 3 mois, ça sera donc 3 à 4 entrainements par semaine, soit environ 30 à 40 kilomètres.&lt;/p&gt;
&lt;p&gt;La difficulté principale sera de trouver les moments pour s’entraîner. J’ai fini par opter pour le rythme suivant :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stade un soir par semaine&lt;/li&gt;
&lt;li&gt;Sortie longue le dimanche soir (une fois les enfants couchés, vivent les longues soirées d’été)&lt;/li&gt;
&lt;li&gt;Le reste des entraînements le midi pendant la pause déjeuner&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A quelques exceptions prêt (par exemple, &lt;a href=&#34;https://www.strava.com/activities/1081240058&#34;&gt;une sortie sur les 25 bosses à Fontainebleau&lt;/a&gt;), j’ai tenu ce rythme pendant les 3 mois de preparation.&lt;/p&gt;
&lt;h1 id=&#34;équipement&#34;&gt;Équipement&lt;/h1&gt;
&lt;p&gt;La difficulté ici réside dans plusieurs points :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pour courir, il faut être le plus léger possible.&lt;/li&gt;
&lt;li&gt;La montagne est imprévisible, il faut prévoir le matériel de sécurité nécessaire.&lt;/li&gt;
&lt;li&gt;Une nuit en refuge, donc repas et hébergement compris, mais requiert un peu de matériel (drap de couchage, t-shirt propre, etc.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Au total, environ 2 kg de matériel (hors vivres de course et eau).&lt;/p&gt;
&lt;h2 id=&#34;vêtements&#34;&gt;Vêtements&lt;/h2&gt;
&lt;p&gt;Je compte partir directement en tenue de course à pieds : un short, un t-shirt ou débardeur (selon la météo) et une bonne paire de chaussures.&lt;/p&gt;
&lt;p&gt;En montagne, la météo peut être complètement imprévisible. Je partirai donc avec ce qu&amp;rsquo;il faut pour rester dans des conditions de sécurité suffisantes (seconde couche, veste et pantalon imperméable, gants) et aussi avec ce qu&amp;rsquo;il faut pour se protéger du soleil (casquette, tour de cou).&lt;/p&gt;
&lt;p&gt;Pour la soirée au refuge, un t-shirt propre est toujours du meilleur effet pour ne pas importuner mes colocataires.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;Quantité&lt;/th&gt;
          &lt;th&gt;Poids&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Veste imperméable&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;193 g&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pantalon imperméable&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;178 g&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;T-shirt respirant&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;89 g&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Débardeur respirant&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;0 g&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Deuxième couche&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;217 g&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tour de cou&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;0 g&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Short (slip intégré)&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;67 g&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Chapeau/casquette&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;48 g&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Chaussettes&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;43 g&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Gants&lt;/td&gt;
          &lt;td&gt;2&lt;/td&gt;
          &lt;td&gt;30 g&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;matériel&#34;&gt;Matériel&lt;/h2&gt;
&lt;p&gt;Rien que tu très basique ici, mais expliquons un peu les choses.&lt;/p&gt;
&lt;p&gt;Je pars avec des bâtons. Je n&amp;rsquo;en ai pas l&amp;rsquo;habitude en trail, mais plus en randonnée (et en ski nordique), et je pense qu&amp;rsquo;ils apportent un vrai plus (notamment en cas de grosse fatigue) dans des terrains hostiles comme en montagne, sur des névés ou dans des pentes régulières. Ils représentent tout de même 10% du poids total du sac, mais je pense que ça les vaux.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;emmène une &lt;em&gt;toute petite&lt;/em&gt; serviette en microfibre pour pouvoir prendre une douche au refuge. Quand je dis &lt;em&gt;toute petite&lt;/em&gt;, elle fait à peine 30 cm par 30 cm. Le drap de couchage est rendu obligatoire par la nuit en refuge.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;Quantité&lt;/th&gt;
          &lt;th&gt;Poids&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Sac de trail&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;291 g&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Bâtons&lt;/td&gt;
          &lt;td&gt;2&lt;/td&gt;
          &lt;td&gt;294 g&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Flasques de 500 mL&lt;/td&gt;
          &lt;td&gt;2&lt;/td&gt;
          &lt;td&gt;52 g (vides)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Couteau léger&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;30 g&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Papiers et argent&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;30 g&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Téléphone portable&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;68 g&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Lunettes de soleil&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;21 g&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Drap de couchage&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;110 g&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Frontale légère de secours&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;27 g&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Piles pour la frontale&lt;/td&gt;
          &lt;td&gt;2&lt;/td&gt;
          &lt;td&gt;6 g&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Carte IGN&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;86 g&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;[Toute petite] Serviette&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;14 g&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Papier toilette&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;pharmacie&#34;&gt;Pharmacie&lt;/h2&gt;
&lt;p&gt;Une petite pharmacie pour fermer des micro-bobos, faire passer des douleurs et aussi faire le minimum pour attendre les secours en cas de gros pépin.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;Quantité&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Couverture de survie&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Elastoplaste&lt;/td&gt;
          &lt;td&gt;50 cm&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Coheban&lt;/td&gt;
          &lt;td&gt;1 m&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Compeed de différentes tailles&lt;/td&gt;
          &lt;td&gt;6&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Désinfectant&lt;/td&gt;
          &lt;td&gt;2 pipettes&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Compresses stériles&lt;/td&gt;
          &lt;td&gt;6&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Steristrips&lt;/td&gt;
          &lt;td&gt;1 pochette&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Coalgan&lt;/td&gt;
          &lt;td&gt;2 sachet&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Doliprane&lt;/td&gt;
          &lt;td&gt;8 * 100 mg&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Aerius&lt;/td&gt;
          &lt;td&gt;2 cachets&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Spasfon&lt;/td&gt;
          &lt;td&gt;6 cachets&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Crème solaire&lt;/td&gt;
          &lt;td&gt;1 tube&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Lentilles jetables&lt;/td&gt;
          &lt;td&gt;2 paires&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h1 id=&#34;nourriture&#34;&gt;Nourriture&lt;/h1&gt;
&lt;p&gt;La nourriture en trail, c’est traître. Le moindre faux-pas peut vous renvoyer chez vous en quelques heures, donc autant en prendre soin.&lt;/p&gt;
&lt;p&gt;J’ai travaillé ma stratégie nutritionnelle pendant ma préparation (et ces derniers mois/années), je sais précisément ce qui me convient et avec quels aliments je ne prend pas de risques.&lt;/p&gt;
&lt;p&gt;Je partirai donc avec des gels Aptonia 700 (trouvables chez Décathlon) et des &lt;a href=&#34;http://www.clifbar.fr&#34;&gt;Cliff Bars&lt;/a&gt;. Je profiterai aussi des passages dans différents refuges et auberges pour prendre une soupe, un plat de pâtes et/ou un Coca.&lt;/p&gt;
&lt;p&gt;Les recommandations font état d’un besoin en sucres de 60 g par heure. Je sais que je suis un peu en dessous de ces besoin (et que j&amp;rsquo;ai de la réserve) donc je prévois de partir avec 45 g par heure de course prévue et je m’appuierai sur les arrêts intermédiaires pour consommer d&amp;rsquo;autres aliments si le besoin s&amp;rsquo;en fait sentir (en cas de saturation sucrée, par exemple).&lt;/p&gt;
&lt;p&gt;Le total représente 1,1 kg, soit 20 gels et 8 barres. A celà s&amp;rsquo;ajoute 1 litre d’eau, qui sera renouvellé régulièrements aux torrents sur le chemin.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Au moment de la publication de ce billet, le départ est dans 6 jours. La météo semble plutôt clémente et le matériel est prêt. En ce qui concerne le bonhomme, c&amp;rsquo;est moins évident. Il a subit une méchante crève la semaine dernière et a du mal à en revenir.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Ça va le faire !&lt;/em&gt;&lt;/p&gt;</content>
 </entry>
 
 
 <entry>
   <title>Good practices for iOS releases</title>
   <link href="https://adhumi.fr/good-practices-ios-releases"/>
   <updated>2017-06-21T11:00:00Z</updated>
   <id>https://adhumi.fr/good-practices-ios-releases</id>
   <content type="html"></content>
 </entry>
 
 
 <entry>
   <title>Buns</title>
   <link href="https://adhumi.fr/buns"/>
   <updated>2017-01-13T10:00:00Z</updated>
   <id>https://adhumi.fr/buns</id>
   <content type="html">&lt;p&gt;Tout mélanger dans le saladier.&lt;/p&gt;
&lt;p&gt;Une fois une pâte bien homogène obtenue, la couvrir avec du film plastique et/ou un torchon, et laisser monter à température ambiante pendant au moins une heure.&lt;/p&gt;
&lt;p&gt;Une fois que la pâte a doublée de volume (sinon laissez reposer encore), retravailler la avec un peu de farine pour qu’elle n’accroche plus.&lt;/p&gt;
&lt;p&gt;Préchauffer le four à 190 °c.&lt;/p&gt;
&lt;p&gt;Découper en 4 boules de taille égale.&lt;/p&gt;
&lt;p&gt;Faire fondre les 43 g de beurre et brosser le dessus des pains de beurre fondu.&lt;/p&gt;
&lt;p&gt;Rajouter si vous le souhaitez des grains de sésame, pavot, etc.&lt;/p&gt;
&lt;p&gt;Faire cuire entre 15 et 18 minutes les pains.&lt;/p&gt;
&lt;p&gt;Sortez les pains du four.&lt;/p&gt;
&lt;p&gt;Rebrossez les avec du beurre fondu avant de servir.&lt;/p&gt;
</content>
 </entry>
 
 
 <entry>
   <title>Tapenade verte</title>
   <link href="https://adhumi.fr/tapenade-verte"/>
   <updated>2017-01-13T10:00:00Z</updated>
   <id>https://adhumi.fr/tapenade-verte</id>
   <content type="html">&lt;p&gt;Si les olives sont très salées, les faire blanchir quelques minutes dans l&amp;rsquo;eau chaude.&lt;/p&gt;
&lt;p&gt;Disposer olives, anchois et câpres dans la cuve du mixer. Ajouter de l&amp;rsquo;huile d&amp;rsquo;olive, des herbes aromatiques selon le goût. Saler, poivrer.&lt;/p&gt;
&lt;p&gt;Mixer.&lt;/p&gt;
&lt;p&gt;Compléter en huile d&amp;rsquo;olive, ajuster les arômes et répéter l&amp;rsquo;opération jusqu&amp;rsquo;à obtenir la texture et le goût souhaité.&lt;/p&gt;
</content>
 </entry>
 
 
 <entry>
   <title>What's new in iOS 9</title>
   <link href="https://adhumi.fr/whats-new-ios9"/>
   <updated>2017-01-12T19:00:00Z</updated>
   <id>https://adhumi.fr/whats-new-ios9</id>
   <content type="html"></content>
 </entry>
 
 
 <entry>
   <title>Crème à cornets</title>
   <link href="https://adhumi.fr/creme-cornets"/>
   <updated>2016-11-13T10:00:00Z</updated>
   <id>https://adhumi.fr/creme-cornets</id>
   <content type="html">&lt;p&gt;&lt;em&gt;Cette recette est celle d&amp;rsquo;une crème dessert que préparait ma grand-mère.&lt;/em&gt;&lt;/p&gt;
&lt;img src=&#34;/recipes/assets/creme-cornets.jpg&#34; alt=&#34;Crème à cornets de ma grand-mère&#34; class=&#34;center-image&#34; /&gt;
&lt;p&gt;Réserver quelques cuillèrées de lait froid.&lt;/p&gt;
&lt;p&gt;Mettre le reste du lait à chauffer avec le sucre et le parfum.&lt;/p&gt;
&lt;p&gt;Délayer la Maïzéna avec le lait froid ; ajouter les oeufs entiers. Bien fouetter.&lt;/p&gt;
&lt;p&gt;Verser le lait bouillant sur ce mélange en continuant de fouetter.&lt;/p&gt;
&lt;p&gt;Remettre dans la casserole, puis sur le feux. Faire cuire en tournant très soigneusement. Retirer après 2 à 3 minutes d&amp;rsquo;ébulition.&lt;/p&gt;
</content>
 </entry>
 
 
 <entry>
   <title>Feuilletés à la feta</title>
   <link href="https://adhumi.fr/feuilletes-feta"/>
   <updated>2016-11-13T10:00:00Z</updated>
   <id>https://adhumi.fr/feuilletes-feta</id>
   <content type="html">&lt;p&gt;Faites fondre le beurre au bain-marie à feu doux. Laissez le tiédir. Emiettez grossièrement la feta du bout des doigts. Râpez l’emmental avec une grille fine. Cassez l’oeuf dans une terrine. Battez-le à la fourchette. Incorporez la feta, l’emmental râpé et l’aneth finement ciselé. Poivrez au moulin. Ne salez pas, le fromage étant lui-même salé. M ́elangez.&lt;/p&gt;
&lt;p&gt;Sortez les feuilles de brick de leur emballage et placez les dans un linge humide afin d’éviter que la pâte ne sèche. Sortez chaque feuille au fur et à mesure de vos besoins. Coupez une première feuille en deux de façon à obtenir des rectangles d’environ 30 cm x 20 cm. Posez un rectangle sur le plan de travail. Badigeonnez-le soigneusement de beurre fondu à l’aide d’un pinceau.&lt;/p&gt;
&lt;p&gt;Repliez ce rectangle en trois. Vous obtenez de cette façon une bande d’environ 7 cm de large et toujours de 30 cm de long. Dans le coin supérieur droit, déposez une cuillerée à soupe de préparation à la feta. Rabattez ce coin de la droite vers la gauche. La farce est alors parfaitement enfermée dans un triangle de pâte. Continuez à replier la pâte, puis glissez l’extrémité de la bande à l’intérieur du triangle.&lt;/p&gt;
&lt;p&gt;Préchauffez le four sur thermostat 6-7 (200 ̊C). Procédez de la même manière pour les autres beurrecks avec le reste de feuilles de brick et la préparation à la feta. Posez-les au fur et à mesure sur la plaque du four légèrement beurrée. Badigeonnez-les de jaune d’oeuf à l’aide d’un pinceau en prenant soin de ne pas déborder sur la plaque. Enfournez les beurrecks et laissez cuire 10 à 12 min. Servez les chauds ou froids.&lt;/p&gt;
</content>
 </entry>
 
 
 <entry>
   <title>Carbonade flamande</title>
   <link href="https://adhumi.fr/carbonade-flamande"/>
   <updated>2016-11-12T16:57:51Z</updated>
   <id>https://adhumi.fr/carbonade-flamande</id>
   <content type="html">&lt;p&gt;Couper la viande en cube de 2 à 3 centimètres de côté. Découper grossièrement les oignons et couper le lard en gros lardons.&lt;/p&gt;
&lt;p&gt;Faire fondre le beurre et faire suer les oignons dedans 10 minutes pour les ramollir (feu au mini à couvert). Ajouter le lard en augmentant légèrement le feu, remuer régulièrement en essayant de garder couvert le plus possible. Une fois le lard bien rose, retirer le tout (sauf le jus) et le réserver dans un plat.&lt;/p&gt;
&lt;p&gt;Mettre le feu au maxi et mettre la viande dans la cocotte, remuer régulièrement (ne pas couvrir), la viande doit se colorer de tous les côtés, elle va finir par rendre pas mal de jus. Retirer la cocotte du feu, mettre la viande dans un plat en conservant le jus dans la cocotte.&lt;/p&gt;
&lt;p&gt;Diluer la cassonade dans le jus de viande et mettre sur le feu à fond pour le réduire de moitié. Une fois réduit, mettre le feu au mini et remettre le mélange lard-oignons en le mêlant au &amp;lsquo;sirop&amp;rsquo;, ajouter la viande et re-mélanger, ajouter le bouquet garni et recouvrir de bière (entre 80 cl et 1 litre), saler très légèrement.&lt;/p&gt;
&lt;p&gt;Recouvrir délicatement toute la surface avec le pain d&amp;rsquo;épices &amp;lsquo;moutardé&amp;rsquo;. Laisser mijoter à couvert 3 heures sans remuer, tant que le pain d&amp;rsquo;épices n&amp;rsquo;est pas fondu (retirer le bouquet après 1 heure ou 2 maxi).&lt;/p&gt;
&lt;p&gt;En cours de &amp;lsquo;mijotage&amp;rsquo;, rectifier l&amp;rsquo;assaisonnement si besoin.&lt;/p&gt;
&lt;p&gt;Si après trois heures, le jus est encore trop liquide, laisser encore mijoter en laissant le couvercle en partie ouvert, la sauce doit être légèrement collante en surface mais bien liquide en dessous et ne doit surtout pas brûler au fond.
Remarques
L&amp;rsquo;idéal est de préparer la veille ou 2 jours avant (c&amp;rsquo;est encore meilleur) et donc de faire mijoter en 2 fois :
la première fois laisser mijoter 1h30 à 2 heures laisser refroidir et réserver au frais (à ce moment, la préparation doit être encore très liquide)&lt;/p&gt;
&lt;p&gt;Le lendemain, retirer la pellicule en surface de gras rejeté par le lard, et réchauffer encore a feu mini pendant 1h30 à 2 heures en ouvrant ou non le couvercle en fonction de l&amp;rsquo;épaisseur de la sauce.&lt;/p&gt;
</content>
 </entry>
 
 
 <entry>
   <title>Biscuits champêtres</title>
   <link href="https://adhumi.fr/biscuits-champetres"/>
   <updated>2016-11-07T10:00:00Z</updated>
   <id>https://adhumi.fr/biscuits-champetres</id>
   <content type="html">&lt;p&gt;Mélangez dans un saladier la farine, les flocons d&amp;rsquo;avoine, le sucre, le sel, les graines de tournesol, de pavot, le sésame et le beurre coupé en petits morceaux. Travaillez la pâte du bout des doigts et ajoutex l&amp;rsquo;oeuf puis le lait. Formez une belle boule de pâte.&lt;/p&gt;
&lt;p&gt;Allumez le four à 180˚C. Etalez la pâte sur un plan de travail fariné, sur une épaisseur d&amp;rsquo;un petit centimètre. Découpez des biscuits avec un emporte-pièce rond. Déposez-les sur une plaque recouverte de papier sufurisé. Faites cuire au four pendant 15 à 20 minutes. Les biscuits champêtres doivent être joliment dorés !&lt;/p&gt;
</content>
 </entry>
 
 
 <entry>
   <title>Rebranding an iOS app</title>
   <link href="https://adhumi.fr/rebranding-ios-app"/>
   <updated>2016-09-08T19:00:00Z</updated>
   <id>https://adhumi.fr/rebranding-ios-app</id>
   <content type="html"></content>
 </entry>
 
 
 <entry>
   <title>Cocoapods for private libraries</title>
   <link href="https://adhumi.fr/cocoapods-private-libraries"/>
   <updated>2016-02-11T19:00:00Z</updated>
   <id>https://adhumi.fr/cocoapods-private-libraries</id>
   <content type="html"></content>
 </entry>
 
 
 <entry>
   <title>Objective-C coding styles</title>
   <link href="https://adhumi.fr/objc-coding-styles"/>
   <updated>2014-05-22T16:57:51Z</updated>
   <id>https://adhumi.fr/objc-coding-styles</id>
   <content type="html">&lt;p&gt;Where Java has its &lt;a href=&#34;http://www.oracle.com/technetwork/java/codeconvtoc-136057.html&#34;&gt;&lt;em&gt;Code Conventions for the Java Programming Language&lt;/em&gt;&lt;/a&gt;, Python its &lt;a href=&#34;http://legacy.python.org/dev/peps/pep-0008/&#34;&gt;&lt;em&gt;PEP 8&lt;/em&gt;&lt;/a&gt; or C# its &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/ff926074.aspx&#34;&gt;&lt;em&gt;Coding Conventions&lt;/em&gt;&lt;/a&gt;, Objective-C doesn&amp;rsquo;t have any official guidelines for formatting sourcecodes.&lt;/p&gt;
&lt;p&gt;The official &lt;a href=&#34;https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html&#34;&gt;Coding Guidelines for Cocoa&lt;/a&gt; exists, but doesn&amp;rsquo;t cover code formatting or recent features of Objective-C like object literals.&lt;/p&gt;
&lt;p&gt;However, there are guidelines that reference best practices, including about formatting that is missing in Apple&amp;rsquo;s official documentation. In this post, I will highlight topics that sounds particularly pertinents to me. It can be considered as &lt;em&gt;my&lt;/em&gt; guidelines for Objective-C code formatting and will be formalized soon in a Github repository.&lt;/p&gt;
&lt;h1 id=&#34;nytimes-objective-c-style-guidehttpsgithubcomnytimesobjective-c-style-guide&#34;&gt;&lt;a href=&#34;https://github.com/NYTimes/objective-c-style-guide&#34;&gt;NYTimes Objective-C Style Guide&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The iOS development team of &lt;em&gt;The New York Times&lt;/em&gt; formalized its coding conventions in a Github repo. It is a great document, that covers a lot of syntax topics. I globally agree with this coding style. Here is a list of my favorite tips.&lt;/p&gt;
&lt;h3 id=&#34;dot-notation-syntax&#34;&gt;Dot-notation syntax&lt;/h3&gt;
&lt;p&gt;NYTimes suggest to always use the dot-notation syntax for accessing or mutating properties, but to use bracket notation in every other cases.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-objc&#34; data-lang=&#34;objc&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;view&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;backgroundColor&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UIColor&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;orangeColor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UIApplication&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sharedApplication&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;delegate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;conditionals&#34;&gt;Conditionals&lt;/h3&gt;
&lt;p&gt;Always use braces when a conditional body could be written without, to prevent errors. It also help with reading.&lt;/p&gt;
&lt;p&gt;The ternary operator might be used only when it increase code neatness or readability. It should never been used to evaluate multiple conditions, except refactored in multiple boolean variables.&lt;/p&gt;
&lt;h3 id=&#34;error-handling&#34;&gt;Error handling&lt;/h3&gt;
&lt;p&gt;If a method returns a &lt;code&gt;NSError&lt;/code&gt; instance by reference, the good practice is to switch on the returned value, not on the error variable (switching on the error variable value can cause false negatives in some cases).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-objc&#34; data-lang=&#34;objc&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;NSError&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;error&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;self&lt;/span&gt; &lt;span class=&#34;nl&#34;&gt;trySomethingWithError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;error&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// Handle Error
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;methods&#34;&gt;Methods&lt;/h3&gt;
&lt;p&gt;Method signatures should be formated with a space after the scope (-/+ char)  and a space between each method segment.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-objc&#34; data-lang=&#34;objc&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;setExampleText:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NSString&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;text&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;image:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UIImage&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;variables&#34;&gt;Variables&lt;/h3&gt;
&lt;p&gt;Variables have to be named as descriptively as possible and single letter names should be reserved to &lt;code&gt;for()&lt;/code&gt; or &lt;code&gt;while()&lt;/code&gt; loops.&lt;/p&gt;
&lt;p&gt;The asterisk indicating pointers is sticker with the variable name, with a space before : &lt;code&gt;NSString *aString&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Property instances should be used instead of simple instances variables. Direct instance variables access may be reserved to initializer, dealloc and setter/getter methods.&lt;/p&gt;
&lt;p&gt;Apple naming guidelines should be followed at all time.&lt;/p&gt;
&lt;h3 id=&#34;comments&#34;&gt;Comments&lt;/h3&gt;
&lt;p&gt;When needed, comments have to be used to explain why a piece of code does something. Most of the comments could be avoided by great code formatting and variable/methods naming.&lt;/p&gt;
&lt;h3 id=&#34;init-and-dealloc&#34;&gt;&lt;code&gt;init&lt;/code&gt; and &lt;code&gt;dealloc&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;dealloc&lt;/code&gt; method should be placed at the top of the implementation, with &lt;code&gt;init&lt;/code&gt; just behind. &lt;code&gt;init&lt;/code&gt; methods should be formatted as follows :&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-objc&#34; data-lang=&#34;objc&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;instancetype&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;init&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nb&#34;&gt;self&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;super&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;init&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// or call the designated initalizer
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	      &lt;span class=&#34;c1&#34;&gt;// Custom initialization
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;instancetype&lt;/code&gt; is, here, prefered to &lt;code&gt;id&lt;/code&gt;, essentially because your compiler and IDE can check your code and autocomplete better.&lt;/p&gt;
&lt;h3 id=&#34;literals&#34;&gt;Literals&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;NSNumber&lt;/code&gt;, &lt;code&gt;NSString&lt;/code&gt;, &lt;code&gt;NSArray&lt;/code&gt; and &lt;code&gt;NSDictionnary&lt;/code&gt; haves literal notations that has to be used when creating immutable instances of those objects.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-objc&#34; data-lang=&#34;objc&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;NSArray&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;names&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;l&#34;&gt;@[&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;@&amp;#34;Brian&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;Matt&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;Chris&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;Alex&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;Steve&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;Paul&amp;#34;&lt;/span&gt;&lt;span class=&#34;l&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;NSDictionary&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;productManagers&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;l&#34;&gt;@{&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;@&amp;#34;iPhone&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;Kate&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;iPad&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;Kamal&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;Mobile Web&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;Bill&amp;#34;&lt;/span&gt;&lt;span class=&#34;l&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;NSNumber&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;shouldUseLiterals&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;@YES&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;NSNumber&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;buildingZIPCode&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;@10018&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;constants&#34;&gt;Constants&lt;/h3&gt;
&lt;p&gt;Constants should be declared as static constantes instead of &lt;code&gt;#define&lt;/code&gt; macros. &lt;code&gt;#define&lt;/code&gt; can be used only as an explicit macro.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-objc&#34; data-lang=&#34;objc&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;static&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;NSString&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;NYTAboutViewControllerCompanyName&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;The New York Times Company&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;enumerated-types&#34;&gt;Enumerated types&lt;/h3&gt;
&lt;p&gt;Use the macro &lt;code&gt;NS_ENUM()&lt;/code&gt;included with the SDK instead of &lt;code&gt;C&lt;/code&gt;&amp;rsquo;s &lt;code&gt;enum&lt;/code&gt;. It has stronger type checking and code completion.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-objc&#34; data-lang=&#34;objc&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;typedef&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;NS_ENUM&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NSInteger&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;NYTAdRequestState&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;NYTAdRequestStateInactive&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;NYTAdRequestStateLoading&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;private-properties&#34;&gt;Private properties&lt;/h3&gt;
&lt;p&gt;Private properties should be declared in the implementation file using a class extension. Man should avoid named categories, unless when extending external classes.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-objc&#34; data-lang=&#34;objc&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;@interface&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;NYTAdvertisement&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;@property&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;nonatomic&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;strong&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;GADBannerView&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;googleAdView&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;@property&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;nonatomic&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;strong&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ADBannerView&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;iAdView&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;@property&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;nonatomic&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;strong&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;UIWebView&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;adXWebView&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;@end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;images&#34;&gt;Images&lt;/h3&gt;
&lt;p&gt;Images should be named as a Camel Cased string in very descriptive way. It&amp;rsquo;s name must help preserve project organization and developers sanity. It is prefixed with the name of the class where it is used (wich has to be correctly named as well). For example : &lt;code&gt;RefreshBarButtonItem&lt;/code&gt; or &lt;code&gt;RefreshBarButtonItemSelected&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Images can be grouped in folders when they are used for similar purposes.&lt;/p&gt;
&lt;h3 id=&#34;singletons&#34;&gt;Singletons&lt;/h3&gt;
&lt;p&gt;Singleton objects should use a thread safe implementation for creating or getting their shared instances.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-objc&#34; data-lang=&#34;objc&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;instancetype&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;sharedInstance&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;static&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;id&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sharedInstance&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;nil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;static&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dispatch_once_t&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;onceToken&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;dispatch_once&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;onceToken&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;^&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  	&lt;span class=&#34;n&#34;&gt;sharedInstance&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;self&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;alloc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;init&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sharedInstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;xcode-projects&#34;&gt;Xcode projects&lt;/h3&gt;
&lt;p&gt;Each physical file should be kept in the project folder. Groups in Xcode may be reflected by folders in the file system. Source files should be grouped by types and modules for greater lisibility.&lt;/p&gt;
&lt;h1 id=&#34;githubs-coding-conventions-for-objective-c-projectshttpsgithubcomgithubobjective-c-conventions&#34;&gt;&lt;a href=&#34;https://github.com/github/objective-c-conventions&#34;&gt;Github&amp;rsquo;s Coding conventions for Objective-C projects&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Github&amp;rsquo;s documentation is less complete than the NYTimes&amp;rsquo; one. It is considered as a subclass of Apple&amp;rsquo;s official &lt;a href=&#34;https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html&#34;&gt;Coding Guidelines for Cocoa&lt;/a&gt;. It contains some interesting points of view.&lt;/p&gt;
&lt;h3 id=&#34;whitespaces&#34;&gt;Whitespaces&lt;/h3&gt;
&lt;p&gt;Tabs may be used instead of spaces (configure your Xcode that way). You can use as many empty lines as you want to divide code into logical chunks.&lt;/p&gt;
&lt;h3 id=&#34;documentation-and-organization&#34;&gt;Documentation and organization&lt;/h3&gt;
&lt;p&gt;Make use of &lt;code&gt;#pragma mark -&lt;/code&gt; to categorize methods into functional groupings and protocol implementations. A good practice could be to group methods that override methods from the same super class.&lt;/p&gt;
&lt;h3 id=&#34;declarations&#34;&gt;Declarations&lt;/h3&gt;
&lt;p&gt;Github suggest that you should declare an ivar only if you need to change its type from its declared property. Actually, I didn&amp;rsquo;t know that it was possible, but it sounds nice. Prefer exposing an immutable type for a property, it&amp;rsquo;s a valid reason to declare an ivar for a property.&lt;/p&gt;
&lt;p&gt;Don&amp;rsquo;t use a space between an object type and the protocol it conforms to. C functions should have no space before the opening parenthesis. It is suggested to name C functions just like Objective-C classes (with a capital letter at the beginning) but I don&amp;rsquo;t think it is a good practice.&lt;/p&gt;
&lt;h3 id=&#34;expressions&#34;&gt;Expressions&lt;/h3&gt;
&lt;p&gt;Each long form ternary operator should be wrapped in parenthesis for readability. Il might be used only for assignments and arguments. The shirt form can avoid parenthesis.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-objc&#34; data-lang=&#34;objc&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Blah&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stuff&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;thing&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;?&lt;/span&gt; &lt;span class=&#34;nl&#34;&gt;foo&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bar&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Blah&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;b&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;thingThatCouldBeNil&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;?:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;defaultValue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Separate binary operands with a single space, but unary operands with none.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-objc&#34; data-lang=&#34;objc&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ptr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;NewType&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NewType&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;doCoolThings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;control-structures&#34;&gt;Control structures&lt;/h3&gt;
&lt;p&gt;All the curvy braces should begin on the same line as their associated statement. They should end on a new line. Put a single space between the keyword and the parenthesis. No spaces between parenthesis and their content. (I &lt;em&gt;particularly&lt;/em&gt; love this list !)&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-objc&#34; data-lang=&#34;objc&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;something&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;nil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// do stuff
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// do other stuff
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;error-handling-and-exceptions&#34;&gt;Error handling and exceptions&lt;/h3&gt;
&lt;p&gt;You should use exceptions only to preserve from programmer error, for example to force the override of a method (abstract).&lt;/p&gt;
&lt;p&gt;&lt;code&gt;NSError&lt;/code&gt; should be passed as reference in methods that need to indicate errors.&lt;/p&gt;
&lt;h1 id=&#34;google-objective-c-style-guidehttpsgooglegithubiostyleguideobjcguidexml&#34;&gt;&lt;a href=&#34;https://google.github.io/styleguide/objcguide.xml&#34;&gt;Google Objective-C style guide&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Google&amp;rsquo;s style guide is the most complete and accomplished proposal. It is based on Apple&amp;rsquo;s &lt;a href=&#34;https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html&#34;&gt;Cocoa Coding Guidelines&lt;/a&gt;and Google&amp;rsquo;s &lt;a href=&#34;https://google.github.io/styleguide/cppguide.html&#34;&gt;Open Source C++ Style Guide&lt;/a&gt;. In this guide too, I picked some interesting things.&lt;/p&gt;
&lt;h3 id=&#34;line-length&#34;&gt;Line length&lt;/h3&gt;
&lt;p&gt;The maximum line length for Objective-C should be 100 colums. You may set Xcode to display a visual limit in text editor. *Please note that it is corresponding to the size of a text window with inspectors displayed on both side and the splitter view in the center. *&lt;/p&gt;
&lt;h3 id=&#34;classes&#34;&gt;Classes&lt;/h3&gt;
&lt;p&gt;You should always keep your class simple.  Don&amp;rsquo;t make it a &amp;ldquo;fourre-tout&amp;rdquo; by extending the class and it&amp;rsquo;s area. Methods that don&amp;rsquo;t need to be public may not. Better use private categories to prevent cluttering the public header.&lt;/p&gt;
&lt;p&gt;Root headers should be imported before individual files. Also keep in mind to &lt;code&gt;#import&lt;/code&gt; Objective-C headers and &lt;code&gt;#include&lt;/code&gt; C headers.&lt;/p&gt;
&lt;h3 id=&#34;memory-management&#34;&gt;Memory management&lt;/h3&gt;
&lt;p&gt;When creating new temporary objects, use &lt;code&gt;autorelease&lt;/code&gt; on the same line as the declaration rather than a separate &lt;code&gt;release&lt;/code&gt; a few lines later in the same method.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dealloc&lt;/code&gt; methods should process instances in the same order as declared in the interface, for readability issues.&lt;/p&gt;</content>
 </entry>
 
 
 <entry>
   <title>A propos des applications Freepod</title>
   <link href="https://adhumi.fr/about-app-freepod"/>
   <updated>2012-08-05T16:57:51Z</updated>
   <id>https://adhumi.fr/about-app-freepod</id>
   <content type="html">&lt;p&gt;Quelques mots à propos des apps Freepod, sorties depuis déjà un mois. Sur le bilan de cette sortie, sur &lt;i&gt;&amp;ldquo;comment on a fait le bébé&amp;rdquo;&lt;/i&gt; et sur les évolutions futures de l’application.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Edit du 22/05/2014 :&lt;/strong&gt; Le backend n&amp;rsquo;étant plus en ligne et suite à l&amp;rsquo;arrêt des activités de Freepod, j&amp;rsquo;ai pris la décision de retirer l&amp;rsquo;application de l&amp;rsquo;AppStore.&lt;/em&gt;&lt;/p&gt;
&lt;h1 id=&#34;2500-applications-freepod-dans-la-nature&#34;&gt;2500 applications Freepod dans la nature&lt;/h1&gt;
&lt;p&gt;En additionnant les scores de l’App Store et du Marketplace, on arrive à un score d’environ 2500 applications téléchargées depuis la sortie officielle le 4 juillet. Si la plupart ont été téléchargées les premier jours sur iOS, l’appli Windows Phone a sans doute bénéficié de sa présence dans le haut des classement puisque les plus gros scores de téléchargements ont eu lieu plus tard.&lt;/p&gt;
&lt;p&gt;Pas mal de flyers ont été distribués pendant Comic Con pour faire la promo des applications. Il en reste encore quelques centaines/milliers à distribuer (si vous en voulez pour aider à la com, n’hésitez pas à demander !).&lt;/p&gt;
&lt;p&gt;Merci également à tous pour vos retours et votre soutien. Les commentaires sur l’App Store et le Marketplace font souvent chaud au coeur, même si on sent bien qu’on vous a forcé la main. Pas non plus le temps de répondre à tous les mails qui nous parviennent via le formulaire sur apps.freepod.net.&lt;/p&gt;
&lt;p&gt;Bref, on tire un plutôt bon bilan de ce lancement, même si il faudrait relancer un peu la communication pour que tout le monde soit au courant !&lt;/p&gt;
&lt;h1 id=&#34;comment-on-a-fait-le-bébé&#34;&gt;Comment on a fait le bébé ?&lt;/h1&gt;
&lt;p&gt;Pas mal de choses ont déjà été dite pendant le lancement officiel des applications dans l’&lt;a href=&#34;http://www.captainweb.net/2012/07/29/le-concert-des-singes-cultivateurs-de-canabis/&#34; rel=&#34;external&#34;&gt;ADC #124&lt;/a&gt;, mais revenons-y un peu. Pour Michel comme pour moi, le dev pour mobile était quelque chose de nouveau. On a donc pas mal tâtonné avant d’arriver au résultat final.&lt;/p&gt;
&lt;p&gt;Depuis sa création en octobre 2011, Freepod souhaitait se doter d’applications mobiles pour faciliter la consommation des podcasts en mobilité. Le pas a été franchi ce printemps dans le cadre d’un projet universitaire : Michel a développé l’application Windows Phone 7, j’ai développé le web-service et l’application iPhone.&lt;/p&gt;
&lt;p&gt;Le web-service est la clé de voute de tout ça. Il est associé à une petite interface d’administration qui permet d’ajouter simplement de nouveaux podcasts, de modifier quelques paramètres et d’afficher des statistiques d’utilisation (à terme, il devrait permettre aussi d’autres choses, en lien avec les nouvelles fonctionnalités proposées dans les applis).
Il traite donc les flux RSS des podcasts (avec toutes leurs incohérences), insère ça dans une jolie base de données MySQL et propose à qui veut de récupérer une liste de podcasts ou d’épisodes au format JSON.&lt;/p&gt;
&lt;p&gt;L’application (que ce soit la version iOS ou la version WP7, puisqu’elles n’ont pas les mêmes fonctionnalités) ne fait que s’interfacer sur ce service. Elle récupère la liste des podcasts, puis des épisodes pour un podcast et affiche ces informations à l’écran (oui, comme ça, ça a l’air facile).&lt;/p&gt;
&lt;p&gt;Notre système de live audio est hébergé par Infomaniak et nous permet pour une somme modique d’obtenir un flux suivable par 200 personnes simultanément, soit plus que ce qui est aujourd’hui nécéssaire !&lt;/p&gt;
&lt;h1 id=&#34;et-maintenant&#34;&gt;Et maintenant ?&lt;/h1&gt;
&lt;p&gt;On a déjà annoncé pas mal de choses au niveau des évolutions futures des applis. La première chose à dire aujourd’hui, c’est que &lt;a href=&#34;http://twitter.com/longhost_&#34; rel=&#34;external&#34;&gt;Jérémie&lt;/a&gt; rejoint l’équipe de dev et va se charger de la version Android. Donc oui, ça devrait arriver un jour ou l’autre !&lt;/p&gt;
&lt;p&gt;La priorité numéro 1 pour les apps existantes, c’est d’uniformiser les fonctionnalités : permettre à l’appli iOS de lire des émissions offline, permettre à l’application Windows Phone de suivre les enregistrements en direct. On essaye de faire ça et de balayer quelques bugs pour la rentrée en septembre.&lt;/p&gt;
&lt;p&gt;Ensuite viendra le temps d’ajouter autre chose à l’application. Là aussi, plein d’idées : des notifications push à la sortie d’un nouvel épisode ou au démarrage d’un live, l’intégration d’un chat cross-plateforme pour discuter depuis son mobile avec ceux du navigateur pendant les lives et vice-versa, des versions compatibles avec les tablettes&amp;hellip;&lt;/p&gt;
&lt;p&gt;En bref, les choses partent bien et on a plein de beaux projets pour l’avenir !&lt;/p&gt;</content>
 </entry>
 
 
 <entry>
   <title>De l’importance de contrôler le flux RSS de son podcast</title>
   <link href="https://adhumi.fr/controler-flux-rss-podcast"/>
   <updated>2011-12-19T16:57:51Z</updated>
   <id>https://adhumi.fr/controler-flux-rss-podcast</id>
   <content type="html">&lt;p&gt;Il serait temps de faire revivre ce lieu&amp;hellip;&lt;/p&gt;
&lt;p&gt;Il y a quelques temps, j’ai publié ici un billet expliquant comment mettre en place un flux rss &amp;ldquo;à la main&amp;rdquo; pour son podcast (&lt;a href=&#34;http://adhumi.fr/flux-rss-podcast-manuel&#34;&gt;voir ici&lt;/a&gt;). Suites aux mésaventures traversées par quelques camarades podcasteurs autour de leur flux RSS, j’ai ressenti le besoin d’écrire une bafouille pour expliquer l’importance de contrôler soi-même son flux.&lt;/p&gt;
&lt;p&gt;J’en ai moi même fait les frais pour les extras de Poli*Geek. Ce podcast audio et vidéo est hébergés sur le service Blip.tv, qui propose un bon service d’hébergement gratuit pour des podcasts d’audience modeste (le débit de téléchargement n’est pas particulièrement rapide). Blip.tv propose de générer automatiquement un flux qui puisse être récupéré par iTunes pour en faire un podcast. La plupart des CMS génèrent eux aussi (plus ou moins nativement) un flux RSS exploitable par iTunes pour en faire un podcast.&lt;/p&gt;
&lt;p&gt;Naïf jeune podcasteur et informaticien que j’étais au moment du lancement de ce podcast, j’avais laissé Blip.tv gérer 100% de ce podcast, de l’hébergement des fichiers à la génération du flux RSS. Quelle erreur !
Suite à une erreur de manipulation, l’adresse du flux a été changée par Blip.tv, sans en notifier iTunes. Le podcast, ses commentaires et ses abonnés sont donc perdus, iTunes ne permettant de changer l’URL du flux RSS que dans le code de celui-ci (et ne permettant pas non plus de supprimer un podcast pour le recréer).&lt;/p&gt;
&lt;p&gt;Pour un podcasteur qui veut garder un minimum de continuité dans son travail et ne pas perdre ses abonnés et commentaires sur sa page iTunes, il est donc extrêmement important de garder un contrôle sur son flux rss. C’est à dire héberger soi-même le fichier .xml sur son site internet et le coder ou le générer &lt;a href=&#34;http://adhumi.fr/flux-rss-podcast-manuel&#34;&gt;&amp;ldquo;à la main&amp;rdquo;&lt;/a&gt;. Les fichiers peuvent par contre continuer à être hébergé ailleurs, c’est ce que j’ai fait pour les extras de Poli*Geek : les fichiers sont chez Blip.tv et le xml sur poligeek.fr.&lt;/p&gt;
&lt;p&gt;Si jamais vous avez besoin de modifier l’URL de votre flux, c’est simple : Ajouter la ligne de code suivante dans le fichier .xml change automatiquement le flux sur la page iTunes, et la répercute progressivement pour les abonnés.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;itunes:new-feed-url&amp;gt;&lt;/span&gt;http://nomdedomaine.com/nouveau-flux.xml&lt;span class=&#34;nt&#34;&gt;&amp;lt;/itunes:new-feed-url&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Bien sûr, il faut que &amp;ldquo;l’ancien&amp;rdquo; flux reste en place un moment pour que le transfert puisse se faire tranquillement.&lt;/p&gt;
&lt;p&gt;Bref, si vous vous lancez dans un projet de podcast, gardez ça en mémoire. Pour un podcasteur, le flux RSS, c’est la vie !&lt;/p&gt;</content>
 </entry>
 
 
 <entry>
   <title>Créer un flux RSS de podcast “à la main”</title>
   <link href="https://adhumi.fr/flux-rss-podcast-manuel"/>
   <updated>2011-03-02T16:57:51Z</updated>
   <id>https://adhumi.fr/flux-rss-podcast-manuel</id>
   <content type="html">&lt;p&gt;Quand on souhaite créer un podcast, il y a d’abord la phase de conception du podcast (la partie la plus important, on en parlera ici prochainement), puis vient le moment fatidique où il faut mettre tout ça en ligne pour le partager et le faire découvrir à ses futurs poditeurs.&lt;/p&gt;
&lt;p&gt;Pour rendre votre podcast disponible, les fichiers audio doivent d’abord être hébergés en ligne puis répertoriés dans un flux RSS qui permet leurs récupération facile par les auditeurs.&lt;/p&gt;
&lt;p&gt;La plupart des CMS de blogs forment des flux RSS compatibles avec les contraintes des podcasts, mais il manque toujours certaines informations. Le mieux est donc de créer &amp;ldquo;à la main&amp;rdquo; ce flux.&lt;/p&gt;
&lt;p&gt;Pour ça, Apple fournit une bonne documentation &lt;a href=&#34;https://itunespartner.apple.com/fr/podcasts/overview&#34; rel=&#34;external&#34;&gt;sur son site&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;En pratique, ça se passe de la façon suivante :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;On place l’ensemble de ce qui va suivre entre les balises suivantes.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;UTF-8&amp;#34;?&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;rss&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;xmlns:itunes=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://www.itunes.com/dtds/podcast-1.0.dtd&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;version=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;2.0&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;channel&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c&#34;&gt;&amp;lt;!-- INSERER LA SUITE ICI --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/channel&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/rss&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;On entre ensuite les données propres au podcast de la façon suivante.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Poli*Geek&lt;span class=&#34;nt&#34;&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;description&amp;gt;&lt;/span&gt;Poli*Geek, c&amp;#39;est le podcast qui revient toutes les deux semaines sur l&amp;#39;essentiel de l&amp;#39;actualité politique autour des nouvelles technologies. Retrouvez dans chaque épisode les news et le grand débat, avec des invités passionnants ! Blog et plus d&amp;#39;infos sur www.poligeek.fr&lt;span class=&#34;nt&#34;&gt;&amp;lt;/description&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;link&amp;gt;&lt;/span&gt;http://www.poligeek.fr&lt;span class=&#34;nt&#34;&gt;&amp;lt;/link&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;language&amp;gt;&lt;/span&gt;fr-fr&lt;span class=&#34;nt&#34;&gt;&amp;lt;/language&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;copyright&amp;gt;&lt;/span&gt;cc by-nc-sa 2.0 fr&lt;span class=&#34;nt&#34;&gt;&amp;lt;/copyright&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;lastBuildDate&amp;gt;&lt;/span&gt;Tue, 26 Feb 2011 11:00:00 +0200&lt;span class=&#34;nt&#34;&gt;&amp;lt;/lastBuildDate&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;pubDate&amp;gt;&lt;/span&gt;Tue, 26 Feb 2011 11:00:00 +0200&lt;span class=&#34;nt&#34;&gt;&amp;lt;/pubDate&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;docs&amp;gt;&lt;/span&gt;http://blogs.law.harvard.edu/tech/rss&lt;span class=&#34;nt&#34;&gt;&amp;lt;/docs&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;webMaster&amp;gt;&lt;/span&gt;email@podcast.com (Nom)&lt;span class=&#34;nt&#34;&gt;&amp;lt;/webMaster&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;itunes:author&amp;gt;&lt;/span&gt;Poli*Geek&lt;span class=&#34;nt&#34;&gt;&amp;lt;/itunes:author&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;itunes:subtitle&amp;gt;&lt;/span&gt;Le podcast qui vous parle politique et technologies !&lt;span class=&#34;nt&#34;&gt;&amp;lt;/itunes:subtitle&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;itunes:summary&amp;gt;&lt;/span&gt;Poli*Geek, c&amp;#39;est le podcast qui revient toutes les deux semaines sur l&amp;#39;essentiel de l&amp;#39;actualité politique autour des nouvelles technologies. Retrouvez dans chaque épisode les news et le grand débat, avec des invités passionnants ! Blog et plus d&amp;#39;infos sur www.poligeek.fr&lt;span class=&#34;nt&#34;&gt;&amp;lt;/itunes:summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;itunes:owner&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;itunes:name&amp;gt;&lt;/span&gt;Nom&lt;span class=&#34;nt&#34;&gt;&amp;lt;/itunes:name&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;itunes:email&amp;gt;&lt;/span&gt;email@podcast.com&lt;span class=&#34;nt&#34;&gt;&amp;lt;/itunes:email&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/itunes:owner&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;itunes:explicit&amp;gt;&lt;/span&gt;Clean&lt;span class=&#34;nt&#34;&gt;&amp;lt;/itunes:explicit&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;itunes:image&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://www.poligeek.fr/logo.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;itunes:category&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;text=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;News &amp;amp;amp; Politics&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;itunes:category&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;text=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Technology&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;itunes:category&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;text=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Tech News&amp;#34;&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/itunes:category&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;On doit ensuite ajouter pour chaque épisode le code suivant, en adaptant les données à son podcast bien sûr !&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;&amp;lt;!-- EPISODE 0 --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;item&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;title&amp;gt;&lt;/span&gt;&lt;span class=&#34;ni&#34;&gt;&amp;amp;#35;&lt;/span&gt;0 - Le ventilo du Captain Liban&lt;span class=&#34;nt&#34;&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;link&amp;gt;&lt;/span&gt;http://www.poligeek.fr/spip.php?article4&lt;span class=&#34;nt&#34;&gt;&amp;lt;/link&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;guid&amp;gt;&lt;/span&gt;http://upload.poligeek.fr/MP3/PoliGeek0.mp3&lt;span class=&#34;nt&#34;&gt;&amp;lt;/guid&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;description&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        On y cause :
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        # Les scarabés et le Vatican
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        # L’ACTA dévoilé
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        # Couvre-feu sur les Meuporgs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        # SeedFuck Hadopi !?
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;               
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Et dans le &amp;#34;grand débat&amp;#34; :
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        # Les droits d’auteurs et la rémunération des artistes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;               
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Plus d&amp;#39;infos sur www.poligeek.fr
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/description&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;enclosure&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;url=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://upload.poligeek.fr/MP3/PoliGeek0.mp3&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;type=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;audio/mpeg&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;category&amp;gt;&lt;/span&gt;Podcasts&lt;span class=&#34;nt&#34;&gt;&amp;lt;/category&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;pubDate&amp;gt;&lt;/span&gt;Thu, 22 Apr 2010 15:00:00 +0200&lt;span class=&#34;nt&#34;&gt;&amp;lt;/pubDate&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;itunes:author&amp;gt;&lt;/span&gt;Poli*Geek&lt;span class=&#34;nt&#34;&gt;&amp;lt;/itunes:author&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;itunes:explicit&amp;gt;&lt;/span&gt;No&lt;span class=&#34;nt&#34;&gt;&amp;lt;/itunes:explicit&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;itunes:subtitle&amp;gt;&lt;/span&gt;&lt;span class=&#34;ni&#34;&gt;&amp;amp;#35;&lt;/span&gt;0 - Le ventilo du Captain Liban&lt;span class=&#34;nt&#34;&gt;&amp;lt;/itunes:subtitle&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;itunes:summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        On y cause :
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        # Les scarabés et le Vatican
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        # L’ACTA dévoilé
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        # Couvre-feu sur les Meuporgs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        # SeedFuck Hadopi !?
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;               
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Et dans le &amp;#34;grand débat&amp;#34; :
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        # Les droits d’auteurs et la rémunération des artistes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;               
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Plus d&amp;#39;infos sur www.poligeek.fr
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/itunes:summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;itunes:duration&amp;gt;&lt;/span&gt;1:04:17&lt;span class=&#34;nt&#34;&gt;&amp;lt;/itunes:duration&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;itunes:image&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://upload.poligeek.fr/PNG/Jacquette0.png&amp;#34;&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;itunes:keywords&amp;gt;&lt;/span&gt;politique, technologie, droits, auteurs, majors, acta, hadopi&lt;span class=&#34;nt&#34;&gt;&amp;lt;/itunes:keywords&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/item&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Et le tour est joué !&lt;/p&gt;
&lt;p&gt;Pour optimiser les statistiques sur le téléchargement et les abonnements, le flux peut être passé par Feedburner.&lt;/p&gt;</content>
 </entry>
 
 
 <entry>
   <title>Connexion à internet : jusqu’où ?</title>
   <link href="https://adhumi.fr/internet-everest"/>
   <updated>2010-11-08T16:57:51Z</updated>
   <id>https://adhumi.fr/internet-everest</id>
   <content type="html">&lt;p&gt;Tout le monde a finit par le savoir. Il y a quelques jours, la société de téléphonie népalaise Ncell, filiale du groupe suédois &lt;a href=&#34;http://www.teliasonera.com/&#34; rel=&#34;external&#34;&gt;TeliaSonera&lt;/a&gt;, a annoncé avoir couvert en réseau 3G le sommet de l’Everest (8848 mètres). Les ingénieurs de la firme ont installé 8 antennes relais (dont 4 alimentées par des panneaux solaires), la plus haute se trouvant à 5164 mètres près du village de Gorakshep.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/fkehren/8250908421/&#34;&gt;&lt;img alt=&#34;8250908421_0de656b203_b&#34; src=&#34;https://farm9.staticflickr.com/8200/8250908421_0de656b203_b.jpg&#34; class=&#34;img-fluid&#34;/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On voit partout sur le net des réactions de blogueurs et journalistes s’enthousiasmant de ce fait, considérant que c’est un incroyable avancée pour les alpinistes qui pourront communiquer avec leurs familles et envoyer des rapports de leurs expéditions par internet. Bientôt un livetweet de l’ascension ?&lt;/p&gt;
&lt;p&gt;Comme le dit très bien le blogueur &lt;a href=&#34;http://www.presse-citron.net/la-3g-au-sommet-de-leverest-on-nest-plus-tranquille-nulle-part&#34; rel=&#34;external&#34;&gt;Presse Citron&lt;/a&gt;, &amp;ldquo;Avant, quand on atteignait un point de saturation à force d’être hyper-connecté au point de passer près des trois quarts de ses journées et de ses nuits sur internet, le remède était simple : hop, un petit trekking dans l’Anapurna, une escalade du K2 et on était désintoxiqué pour quelques semaines. Loin de tout, et du web, surtout.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Je suis loin d’être réfractaire à la technologie (bien au contraire), mais il y a clairement une évolution malsaine qui se trame dans cette histoire. Il n’y aura bientôt plus aucun espace sur terre où nous serons à l’abris du &amp;ldquo;tout connecté&amp;rdquo;. Ce qui est plaisant, en montagne, c’est justement d’être coupé de tout, quitte à sacrifier un certain confort. Il y a quelques années, il était encore extrêmement rare de trouver dans les refuges de montagne une douche, l’eau courante ou l’électricité. Aujourd’hui, il devient impossible de trouver un refuge qui ne dispose pas de ces ressources.&lt;/p&gt;
&lt;p&gt;Nous sommes dans une société où il devient impossible de prendre des risques. En montagne, toutes les activités sont dangereuses et nous y perdons régulièrement &lt;a href=&#34;http://www.ledauphine.com/savoie/2010/11/02/un-mort-et-deux-disparus-dans-une-avalanche&#34; rel=&#34;external&#34;&gt;des amis&lt;/a&gt;. Cela fait partie de l’aventure et les personnes qui s’y lancent (toujours avec passion) sont conscientes des risques qu’elles prennent.&lt;/p&gt;
&lt;p&gt;Essayons de gardez vierge ce formidable terrain de jeu.&lt;/p&gt;</content>
 </entry>
 

</feed>
