Assembleur ARM sur Android 3/3: Déboguage à l'aide de GDB
par Benoit, 2014-04-11

Pour qui désire apprendre la programmation en langage d’assemblage, la plate-forme ARM est une option particulièrement recommandable: cette architecture RISC est relativement simple, la plate-forme est facile d’accès du fait de son vif succès commercial et l’outillage nécessaire à la mise en oeuvre des programmes est mature et bien documenté. Cette série d’articles montre comment on peut utiliser divers éléments de la plate-forme Android pour s’exercer à diverses approches de programmation en langage d’assemblage ARM, facilement et sans aucun coût (sinon un peu de téléchargement), à partir d’une machine Linux.

Dans cette troisième et dernière partie (partie 1, partie 2), j’offre un tutoriel sur le déboguage à distance d’un exécutable binaire avec GDB, le GNU Debugger.

Lire le texte complet
Assembleur ARM sur Android 2/3: Deux modèles de programmation
par Benoit, 2014-03-26

Pour qui désire apprendre la programmation en langage d’assemblage, la plate-forme ARM est une option particulièrement recommandable: cette architecture RISC est relativement simple, la plate-forme est facile d’accès du fait de son vif succès commercial et l’outillage nécessaire à la mise en oeuvre des programmes est mature et bien documenté. Cette série d’articles montre comment on peut utiliser divers éléments de la plate-forme Android pour s’exercer à diverses approches de programmation en langage d’assemblage ARM, facilement et sans aucun coût (sinon un peu de téléchargement), à partir d’une machine Linux.

Dans cette deuxième partie de trois (partie 1), je présente les outils de développement pour l’assemblage d’un code source ARM en un programme exécutable. J’illustre l’usage de ces outils en me basant sur deux modèles de programmation: l’un qui se base sur les librairies de l’environnement d’exécution du langage C, l’autre qui roule sans aucune dépendance, sur la base de conventions minimales de chargement.

Lire le texte complet
Assembleur ARM sur Android 1/3: Mise en place
par Benoit, 2014-03-19

Pour qui désire apprendre la programmation en langage d’assemblage, la plate-forme ARM est une option particulièrement recommandable: cette architecture RISC est relativement simple, la plate-forme est facile d’accès du fait de son vif succès commercial et l’outillage nécessaire à la mise en oeuvre des programmes est mature et bien documenté. Cette série d’articles montre comment on peut utiliser divers éléments de la plate-forme Android pour s’exercer à diverses approches de programmation en langage d’assemblage ARM, facilement et sans aucun coût (sinon un peu de téléchargement), à partir d’une machine Linux.

Dans cette première partie de trois, j’illustre comment mettre en place le SDK et le NDK Android sur l’hôte Linux qui soutient le développement ARM. Je présente aussi l’usage de l’émulateur Android et de l’outil adb pour communiquer avec cet émulateur.

Lire le texte complet
Démonstration du combinateur Y, l'opérateur de récursivité
par Benoit, 2013-05-01

La définition récursive d’un algorithme est-elle mathématiquement naturelle, ou faut-il absolument donner un nom à une fonction récursive, et utiliser un artifice tel qu’un environnement d’évaluation pour la calculer? La réponse est que la récursivité est un calcul naturel, exprimé en analyse fonctionnelle par le combinateur Y. Cet article présente ce concept par une approche constructive, en utilisant une notation de calcul fonctionnel inspirée du langage Ruby. Cet article requiert une connaissance de base de la programmation fonctionnelle.

Lire le texte complet
Commentaire: Hacking debt
par Benoit, 2013-04-24

Du blogue de John D. Cook, avec mes excuses de reproduire la quasi-totalité du texte:

I’d like to propose hacking debt to describe a person who has been focused on “real work” for so long that he or she hasn’t spent enough time playing around, making useless stuff for the fun of it. Some portion of a career should be devoted to hacking. Not 100%, but not 0% either. Without some time spent exploring and having fun, people become less effective and eventually burn out.

Totalement d’accord. Un peu à la manière de Google, mon employeur Arcadia Labs m’offre une journée par semaine pour de la programmation exploratoire et cet avantage est dans mon top-3 des raisons pour lesquelles j’adore ce travail. La passion de la programmation doit être entretenue et le travail rémunéré ne suffit pas, étant donné que les projets ne sont pas toujours proches, ni même connexes à mes intérêts. Il est aussi important de pratiquer ses compétences pour ne pas s’enliser dans des ornières cognitives.

À mesure qu’on vieillit, les responsabilités s’accumulent et les priorités s’ajustent. Il devient alors impensable de se consacrer à la programmation pour le plaisir au milieu de la nuit (comme quand j’étais jeune étudiant) ou des durant des fins de semaines entières (comme avant de devenir papa). Comme ce genre d’activité requiert de longues périodes d’attention soutenue (e.g. quelques heures), la possibilité de prendre ce temps sur ma semaine de travail est incroyablement précieuse pour moi.

Clefs SSH: génération, usage, programmation
par Benoit, 2013-04-22

SSH est la manière moderne d’exécuter une session de shell sur un hôte distant, et son implantation libre OpenSSH est l’un de mes outils préférés. Dans ce texte, je présente comment on peut générer une paire de clefs publique et privée de manière à s’authentifier à l’hôte sans transfert d’information privée. En boni, je décris aussi comment une telle paire de clef peut être utilisée pour mettre en oeuvre la cryptographie RSA en Python.

Lire le texte complet
Commentaire: Why your games are made by childless, 31-year-old white men and how one studio is fighting back
par Benoit, 2013-04-15

J’applaudis de tout mon coeur cet effort de Guillaume Boucher-Vidal, interviewé ici par Ben Kuchera.

We need to ditch the romantic idea that your best work is done when you’re in your 20s and willing to give everything to the project; men and women in their 30s and 40s are creatively fertile and thoughtful in a way that only comes with age and experience. That’s also the age people are less likely to be satisfied with the lifestyle of a full-time developer, and the industry chases them out.

Je pense que je suis encore un amoureux passionné de la programmation parce que je ne me suis pas brûlé de cette façon. Comme tout le monde, j’ai affronté des séquences plus intenses et j’ai travaillé à travers la nuit pour rencontrer une date limite de publication. Je crois toutefois qu’il n’y a aucune fierté à tirer du travail excessif en soi. Plutôt, j’admire ceux qui savent maintenir un rythme durable, mu par des bonnes habitudes de vie, une saine discipline de travail et de bons trucs de productivité et d’organisation. En outre, je suis beaucoup plus sensible aux idées, à l’art et à la créativité de gens plus matures, avec qui je peux dialoguer sur nos parcours de vie. J’espère de tout mon coeur que de telles personnes peuvent produire des jeux vidéos et ainsi m’inviter à ce dialogue.