Depuis l’adolescence, je rêvais de ce genre de contenu, et c’est agréable de voir de plus en plus de programmeurs travaillant sur des projets assez avancés streamer leur processus de travail.
Quand on peut ainsi voir les coulisses, beaucoup de ce qui paraissait magique et complexe disparaît.
J’envie les enfants d’aujourd’hui, qui peuvent trouver à peu près tout ce qu’ils veulent apprendre. Avant, ce n’était pas du tout le cas.
J’en rêvais aussi, mais je pense qu’il reste difficile de trouver du contenu profond et techniquement excellent.
Ce serait bien de partager ce genre de chaînes entre nous, et j’aimerais en connaître d’autres.
Une autre chaîne que je connais est https://www.youtube.com/@LowLevelLearning
Ce n’est pas à proprement parler une chaîne de programmation, mais j’aime aussi beaucoup https://www.youtube.com/@StuffMadeHere. C’est une excellente chaîne d’ingénierie.
La chaîne de Marcan vaut aussi le détour. Le processus pour faire tourner Linux sur le silicium ARM d’Apple dure presque 12 heures et est impressionnant, et montre qu’Apple a utilisé pas mal de matériel custom. https://www.youtube.com/live/GxnWuXgj3JI?si=lUJ_7KdkylzXLryj
Il y a quelques mois, j’ai écrit un driver hôte USB pour STM32F4, et le plus difficile a été le manque de bonne documentation.
Sur le périphérique, des registres en lecture/écriture étaient mappés en lecture seule dans le SVD, il fallait définir des bits non documentés, et l’USB bulk-only transport renvoyait vers une spécification SCSI inexistante.
J’ai fini par tomber sur un billet de blog expliquant que, pour faire fonctionner une clé USB, il fallait quasiment copier ce que fait Windows.
Heureusement, j’avais un oscilloscope capable de décoder les trames USB, ce qui m’a fait gagner beaucoup de temps pour comprendre pourquoi ça ne marchait pas.
L’USB semble dépendre énormément de connaissances transmises de bouche à oreille ; malgré cela, c’est impressionnant de voir à quel point il est universel et fonctionne le plus souvent immédiatement.
Je serais curieux de savoir quel oscilloscope tu as utilisé pour le décodage USB.
Je me demande si tu as déjà envisagé de streamer ce genre de travail.
Les contrôleurs USB Intel pardonnent extrêmement bien les bugs du logiciel de contrôle. Vraiment extrêmement tolérants.
J’ai commencé à contribuer à un projet de décompilation, et même si je ne suis absolument pas le meilleur décompilateur, j’ai déjà pensé à streamer pendant que je travaille.
Je me demande si ce genre de contenu intéresserait des gens. Est-ce que les traces de l’influence du signe des variables sur l’assembleur, les différences entre accès à des structures et accès à des tableaux, les bizarreries que même des compilateurs vieux de 30 ans produisent autour des structures de contrôle, la réutilisation des registres, ou les façons d’amener le code à produire un assembleur identique au byte près sur une console ancienne, ça intéresserait quelqu’un ?
J’ai créé un compte parce que voir ce genre de choses serait vraiment génial. J’ai essayé de rassembler ce genre de savoirs obscurs de reverse engineering, mais il est difficile de savoir ne serait-ce qu’où les trouver.
Ça m’intéresse. À l’université, j’ai appris les bases de l’assembleur 8086 et j’ai lu quelques livres de reverse engineering, mais je ne suis jamais allé plus loin.
Je me demande si tu travailles sur un projet open source.
Je suis en train de créer un système d’exploitation et j’avais envisagé de streamer quelques sessions de travail ; si les gens trouvent réellement ça intéressant, je pourrais m’y mettre.
Ce qui rend fascinant le fait de regarder quelqu’un faire quelque chose de difficile, c’est d’accéder à son processus de réflexion. Écrire un système d’exploitation entre clairement dans la catégorie des choses difficiles.
Si tu as vraiment le temps, j’aimerais beaucoup que tu le fasses, et je te soutiendrais financièrement.
Le police de caractères du terminal/de l’éditeur est ce qu’il y a de plus intéressant.
Il manque une nuance dans le titre : il s’agit d’un pilote de périphérique USB pour un appareil relativement simple, avec du code existant, donc c’est en pratique plus proche d’une « traduction » de code vers du code.
Ça peut paraître très impressionnant, mais personnellement je vois surtout quelqu’un de compétent dans son métier en train de travailler.
Oui. Le titre est un peu à côté. Je ne connais pas particulièrement bien le noyau, et même si j’ai appris des choses en regardant la vidéo, une bonne partie m’a semblé presque magique.
Ce serait bien si un modérateur pouvait retirer « from scratch » du titre et préciser qu’il s’agit d’un pilote de périphérique, mais ce n’est pas grave sinon.
On dirait un pilote qui n’a presque aucune raison d’exister au départ. Pour un panneau avant, il serait probablement préférable de gérer ça en espace utilisateur avec une application libusb.
J’adore vraiment ce genre de vidéos et de tutoriels approfondis, mais l’expression « from scratch » n’est pas très appropriée.
Dire « en partant de dix ans d’expérience à faire exactement ce genre de choses » n’aurait pas le même effet, certes.
La spécification USB ne fait-elle pas quelque chose comme 500 pages ? Impressionnant.
Il n’est pas nécessaire de lire tous les détails de la spécification USB ; il suffit d’en comprendre globalement le fonctionnement.
Le noyau fournit beaucoup de fonctions utilisables. On peut déjà apprendre en lisant le code du pilote le plus simple qu’on trouve dans les sources du noyau, puis passer à des pilotes plus difficiles.
En trois heures, je n’arriverais même pas à recopier 500 pages.
Une bonne API de pilote devrait cacher tout cela, afin que les pilotes USB individuels n’aient pas à se soucier de la spécification USB. C’est le rôle du code commun du cœur USB.
Et ici, la plupart de ces détails ne sont de toute façon pas vraiment pertinents.
1 commentaires
Avis sur Hacker News
Depuis l’adolescence, je rêvais de ce genre de contenu, et c’est agréable de voir de plus en plus de programmeurs travaillant sur des projets assez avancés streamer leur processus de travail.
Quand on peut ainsi voir les coulisses, beaucoup de ce qui paraissait magique et complexe disparaît.
Ce serait bien de partager ce genre de chaînes entre nous, et j’aimerais en connaître d’autres.
Une autre chaîne que je connais est https://www.youtube.com/@LowLevelLearning
Ce n’est pas à proprement parler une chaîne de programmation, mais j’aime aussi beaucoup https://www.youtube.com/@StuffMadeHere. C’est une excellente chaîne d’ingénierie.
https://www.youtube.com/live/GxnWuXgj3JI?si=lUJ_7KdkylzXLryj
Il y a quelques mois, j’ai écrit un driver hôte USB pour STM32F4, et le plus difficile a été le manque de bonne documentation.
Sur le périphérique, des registres en lecture/écriture étaient mappés en lecture seule dans le SVD, il fallait définir des bits non documentés, et l’USB bulk-only transport renvoyait vers une spécification SCSI inexistante.
J’ai fini par tomber sur un billet de blog expliquant que, pour faire fonctionner une clé USB, il fallait quasiment copier ce que fait Windows.
Heureusement, j’avais un oscilloscope capable de décoder les trames USB, ce qui m’a fait gagner beaucoup de temps pour comprendre pourquoi ça ne marchait pas.
L’USB semble dépendre énormément de connaissances transmises de bouche à oreille ; malgré cela, c’est impressionnant de voir à quel point il est universel et fonctionne le plus souvent immédiatement.
J’ai commencé à contribuer à un projet de décompilation, et même si je ne suis absolument pas le meilleur décompilateur, j’ai déjà pensé à streamer pendant que je travaille.
Je me demande si ce genre de contenu intéresserait des gens. Est-ce que les traces de l’influence du signe des variables sur l’assembleur, les différences entre accès à des structures et accès à des tableaux, les bizarreries que même des compilateurs vieux de 30 ans produisent autour des structures de contrôle, la réutilisation des registres, ou les façons d’amener le code à produire un assembleur identique au byte près sur une console ancienne, ça intéresserait quelqu’un ?
Je me demande si tu travailles sur un projet open source.
Je suis en train de créer un système d’exploitation et j’avais envisagé de streamer quelques sessions de travail ; si les gens trouvent réellement ça intéressant, je pourrais m’y mettre.
Si tu as vraiment le temps, j’aimerais beaucoup que tu le fasses, et je te soutiendrais financièrement.
Le police de caractères du terminal/de l’éditeur est ce qu’il y a de plus intéressant.
https://tosche.net/fonts/comic-code
Il manque une nuance dans le titre : il s’agit d’un pilote de périphérique USB pour un appareil relativement simple, avec du code existant, donc c’est en pratique plus proche d’une « traduction » de code vers du code.
Ça peut paraître très impressionnant, mais personnellement je vois surtout quelqu’un de compétent dans son métier en train de travailler.
Ce serait bien si un modérateur pouvait retirer « from scratch » du titre et préciser qu’il s’agit d’un pilote de périphérique, mais ce n’est pas grave sinon.
J’adore vraiment ce genre de vidéos et de tutoriels approfondis, mais l’expression « from scratch » n’est pas très appropriée.
Dire « en partant de dix ans d’expérience à faire exactement ce genre de choses » n’aurait pas le même effet, certes.
La spécification USB ne fait-elle pas quelque chose comme 500 pages ? Impressionnant.
Le noyau fournit beaucoup de fonctions utilisables. On peut déjà apprendre en lisant le code du pilote le plus simple qu’on trouve dans les sources du noyau, puis passer à des pilotes plus difficiles.