La rétrospective de l’année 2014 de French Coding

J’aime bien l’idée de faire une rétrospective annuelle. Je crois qu’il est important de faire un point d’arrêt périodiquement afin d’avoir une vue d’ensemble de l’évolution de son projet. Alors, je profite de cette période pour faire la rétrospective du Nouvel An de French Coding.

En quelques mots, pour moi French Coding est devenu un élément central dans ma vie. Ce projet me permet de mettre en mots ce que j’apprends sur les différents sujets qui me passionnent. Cette année aura été l’année de la technologie et de la course à pied.

Sans plus attendre, voici mon année!

Dans le rétroviseur

L’an passé, je m’étais avancé trois objectifs: trouver un meilleur logo et thème pour le blogue, m’impliquer dans l’open source et doubler les statistiques pour le lectorat de French Coding.

Les deux premiers objectifs n’ont pas été atteints. Pour ce qui est du thème, j’ai fait mes recherches sans rien trouver de vraiment excitant. J’ai préféré garder mes vieilles chaussettes que d’y aller pour une paire de chaussures inconfortables. D’ailleurs, j’aime l’apparence de ce thème pour le format mobile. C’est comme ça.

Par contre, en ce qui concerne l’objectif de doubler le lectorat, une image vaut mille mots!

statistiques-2014

En plein dans le mile! 11 sur 10! Cette année, le nombre de visites à ce blogue a plus que doublé pour atteindre presque la barre de 30 000 vues. J’en suis très fier. Surtout que je n’y ai pas porté une attention particulière dans le courant de l’année. Cool, hein?

Ce que j’ai retenu de mon année

  • Continuité de l’horaire de publication bihebdomadaire
  • Participation à deux demi-marathons

J’ai parlé un peu de ma passion pour la course à pied sur ce blogue. Au début, la course à pied s’est révélée comme une façon de faire sortir de l’énergie et du stress accumulé. Là où j’en suis, la course est devenue une partie centrale de ma routine quotidienne. J’en ai besoin pour garder cet équilibre entre la famille et le travail. Quand je cours, c’est uniquement avec moi-même.

Depuis quelques semaines, toutefois, j’ai un peu plus de difficultés à trouver de l’inspiration. Je sais qu’en 2015 je dois trouver une façon de corriger le tir là dessus. Une des choses qui doit arriver pour corriger cela est de me remettre à me fixer un horaire d’écriture. J’ai été un peu paresseux dernièrement sur ce plan.

2014 en statistiques

Les visites sur le blogue ont doublé. Est-ce que les statistiques de visite peuvent en dire plus?

D’ailleurs, si vous êtes curieux, vous pouvez aussi consulter le résumé de l’année de French Coding produit par WordPress.

En regardant par en avant

L’année qui va commencer sera celle du troisième anniversaire de French Coding. Je suis très fier de cette réalisation.

Ce que je me souhaite le plus avec ce projet c’est de la continuité. Continuer à découvrir et à partager avec mes lecteurs. Lecteurs qui, d’ailleurs, sont de plus en plus nombreux à venir tous les jours lire ce que j’ai à écrire.

Le principal défi que je dois relever est celui de la gestion du temps. Pour continuer ce beau projet, je dois prendre le temps d’écrire et de cesser d’arriver le mardi soir pour publier un billet le mercredi matin.

Côté apprentissage, je souhaite pouvoir découvrir de nouveaux horizons en apprenant d’autres langages web. J’ai toujours été très clair. Je suis un développeur web ASP.NET et C#. Alors, la principale question que je souhaite répondre c’est: à quoi ressemble le monde du développement web à l’extérieur de .NET? J’ai bien hâte de me lancer là-dedans.

Un autre projet que je souhaite est, encore une fois, l’implication dans un projet Open Source. J’ai encore les mêmes ambitions que celle de l’an passé à ce sujet. Voir du code d’autres développeurs est une très belle façon d’apprendre de nouvelles techniques de développement.

Mes souhaits

En cette veille du Nouvel An, à tous ceux qui auront pris le temps de lire ceci, je me permets de vous souhaiter les meilleurs vœux pour l’année 2015. Réalisez vos projets, geekez autant que possible. Paix!

Bonne et heureuse année à tous!!

Publicité

Les liens de la semaine – Édition #112

Développement

.NET

Web

Technologie

Science et autres

Toujours penser à paramétrer correctement l’attribut executionTimeout en production

Je vous mets en contexte pour ce billet. Pour le site du client que je ne peux nommer, j’ai eu à développer un ajustement au module de génération du sitemap.xml pour ce site. La fonctionnalité à ajouter était d’ajouter le support pour l’annotation hreflang. Le hreflang permet de faciliter le travail des moteurs de recherche pour identifier le contenu multilingue et multirégion.

Pour des raisons pratico-pratiques, notre sitemap.xml est généré par une tâche planifiée s’exécutant la nuit. Avec l’ajout du hreflang, si vous êtes du genre à aimer les chiffres, le sitemap.xml de ce site fait plus de 15 mégaoctets et prend plus de 10 minutes à se générer. Avec un site qui est dupliqué dans 48 pays et 27 langues. Vous vous imaginez un peu pourquoi c’est si long!

Lors de son développement, cette nouvelle fonctionnalité a passé haut la main toutes les étapes de tests et de contrôle qualité. Comme dirait l’autre: c’est long, mais ça marche!

Works On My MachineSauf qu’une fois en production, invariablement la tâche échouait au bout de quelques minutes. Au pif, le délai était très court. Alors, comment le même code qui s’exécute haut la main sur mon poste peut-il faire patate une fois en production?

Après une investigation de l’historique des événements, il s’avère que l’erreur suivante arrivait près de deux minutes suivant l’exécution de la tâche planifiée:

System.Web.HttpException (0x80004005): Request timed out.

Or, une recherche rapide sur Google démontre qu’il y a une explication très simple qui fait en sorte que cette situation se produit. Sur l’environnement de production, l’application web est déployée en mode Release.

Il s’avère que certains comportements d’ASP.NET ne sont pas les mêmes en Debug qu’en Release. C’est conçu ainsi et j’avais oublié! Je ne m’étais surtout pas méfié!

Il fallait lire la documentation! C’est indiqué très clairement.

Lorsqu’on déploie une application en mode Release et qu’on exécute une longue requête, il est important de spécifier un délai d’exécution plus grand sur l’élément <httpRuntime> comme suit:


<configuration>
<system.web>
<httpRuntime executionTimeout="300" />
</system.web>
</configuration>

view raw

web.config.xml

hosted with ❤ by GitHub

Voilà! C’est tout!

Je profite de cette occasion pour souhaiter un joyeux Noël à tous. Profitez de cette période pour apprécier le moment présent.

Sur une note plus personnelle, je vous remercie de tout mon cœur de visiter mon blogue quotidiennement et en grand nombre.

Joyeux Noël!

Les liens de la semaine – Édition #111

désolé du retard, avec le début du congé des fêtes, j’avais la tête ailleurs ;-)

Développement

.NET

ASP.NET vNext

Technologie

Web

Science et autres

Un hommage à Basecamp

Basecamp-1[1]Ce billet s’adresse à tous ceux qui ont eu à travailler sur un projet avec un client avec le service web Basecamp. Si vous l’avez utilisé plus de dix minutes dans les six derniers mois, vous devriez vous retrouver dans ce que je vais y décrire dans ce billet.

Basecamp est un outil permettant à des intervenants impliqués dans un projet de collaborer ensemble via un site web. Cela fait presque deux ans que j’utilise Basecamp quotidiennement. Il s’agit d’un outil formidable vous permettant d’accomplir beaucoup avec peu de fonctionnalités.

Parlant de ce peu de fonctionnalités, j’ai quand même quelques anecdotes à ce sujet. Dernièrement, j’ai passé pas mal de temps dans cet outil. En voici quelques-unes…

  • Si ce n’est pas écrit dans Basecamp, ce n’est pas arrivé.
  • Écrire un message et réaliser une grossière erreur dans celui-ci. Ne pas prendre la peine de la corriger parce que, de toute façon, tout le monde a reçu un courriel de notification avec cette erreur.
  • Réaliser qu’un élément d’une liste de tâche (todo list) a plus de notification sur son changement d’état dans la liste que de vrais messages.
  • Avoir une liste de tâches qui est un véritable champ de bataille. Au menu: réassignations de tâches, statuts d’avancement dans le titre des tâches et réouverture de tâches déjà résolues.
  • Au bout d’un certain temps, la liste des collaborateurs pouvant être notifiés est tellement longue que tu ne sais plus vraiment qui doit être notifié de tes messages.
  • Parlant de collaborateurs, tu as un surnom pour chacun d’eux en te basant sur leur avatar.
  • Apprendre après 1 an d’utilisation quotidienne qu’il est possible de gérer un calendrier d’événements.
  • Te servir tellement de Basecamp que la page de résumé de ton activité dans ton profil te sert d’aide mémoire pour tes feuilles de temps.
  • Tu as lancé des injures à la fonctionnalité de recherche pour cette raison: dans ton projet tu fais une recherche dans la boîte en haut à droite. T’a pas les résultats souhaités. Tu refais une recherche à cet endroit. Pouf! Tu fais une recherche globale dans tous les projets Basecamp.
  • Pour une raison que j’ignore, être incapable de connecter via l’URL https://launchpad.37signals.com/basecamp. Je dois avoir absolument l’URL exacte d’un de mes projets sous l’identifiant de mon employeur (ex.: https://basecamp.com/3755413/)