Desde que era adolescente soñaba con contenido así, y me gusta que cada vez se vea más a programadores que trabajan en proyectos bastante avanzados transmitiendo su proceso de trabajo.
Poder mirar detrás de la cortina hace que desaparezcan mucho de lo que parecía magia y mucha de la complejidad.
Envidio a los chicos de hoy, que pueden encontrar casi cualquier cosa que quieran aprender. Antes no era para nada así.
Yo también soñaba con lo mismo, pero sigo pensando que el contenido profundo y técnicamente excelente es difícil de encontrar.
Sería bueno que compartiéramos este tipo de canales entre nosotros, y me gustaría conocer más.
Otro canal que conozco es https://www.youtube.com/@LowLevelLearning
Estrictamente no es un canal de programación, pero https://www.youtube.com/@StuffMadeHere también me gusta mucho. Es un gran canal de ingeniería.
El canal de Marcan también vale la pena. El proceso de hacer correr Linux en el silicio Apple ARM dura casi 12 horas y es impresionante; deja ver que Apple usó bastante hardware personalizado. https://www.youtube.com/live/GxnWuXgj3JI?si=lUJ_7KdkylzXLryj
Hace unos meses escribí un driver de host USB para STM32F4, y lo más difícil fue la falta de buena documentación.
En los periféricos había registros de lectura/escritura mapeados como solo lectura en el SVD, había que configurar bits que no estaban documentados, y USB bulk-only transport apuntaba a una especificación SCSI que no existe.
Al final encontré una entrada de blog que decía que, para hacer funcionar una unidad USB, básicamente había que copiar casi exactamente lo que hace Windows.
Por suerte tenía un osciloscopio capaz de decodificar tramas USB, lo que me ahorró mucho tiempo para entender por qué no funcionaba.
USB parece depender mucho del conocimiento transmitido de boca en boca, y aun así es impresionante que sea tan universal y que la mayoría de las veces funcione de inmediato.
Me da curiosidad qué osciloscopio usaste para decodificar USB.
Me pregunto si no pensaste en transmitir este tipo de trabajo.
Los controladores USB de Intel son extremadamente tolerantes con los bugs del software de control. Realmente, extremadamente indulgentes.
Empecé a contribuir a un proyecto de descompilación y, aunque no soy ni de cerca el mejor descompilador, alguna vez pensé en transmitir mientras trabajo.
Me pregunto si habría interés en este tipo de contenido. No sé si a la gente le interesan cosas como las huellas que deja en el ensamblador el signo de las variables, la diferencia entre accesos a structs y accesos a arreglos, las rarezas que incluso compiladores de hace 30 años hacen con las estructuras de control, la reutilización de registros, o cómo guiar el código para que en una consola clásica salga ensamblador idéntico byte por byte.
Me creé una cuenta porque ver algo así me parecería genial. He intentado reunir este tipo de conocimiento oscuro de ingeniería inversa, pero es difícil incluso saber dónde buscarlo.
Me interesa. En la universidad aprendí ensamblador 8086 básico y leí algunos libros de ingeniería inversa, pero no avancé más.
Me pregunto si estás trabajando en algún proyecto open source.
Estoy haciendo un sistema operativo y pensé en transmitir algunas sesiones de trabajo; si a la gente realmente le parece interesante, quizá me anime a empezar.
El atractivo de ver a alguien hacer algo difícil está en poder asomarse a su proceso de pensamiento. Escribir un sistema operativo sin duda entra en la categoría de cosas difíciles.
Si de verdad tienes tiempo, me encantaría que lo hicieras, y hasta te apoyaría económicamente.
Lo más interesante es la fuente tipográfica para terminal/código.
Al título le falta una parte: esto es un driver de dispositivo USB para un dispositivo relativamente simple, y además ya existe código, así que en la práctica se parece más a una “traducción” de código a código.
Puede verse muy impresionante, pero personalmente lo veo parecido a mirar trabajar a alguien que es competente en su oficio.
Exacto. El título se desvió un poco. No es que yo sepa muchísimo del kernel, y aprendí cosas viendo el video, pero muchas partes me parecieron casi magia.
Sería bueno si un moderador pudiera quitar “from scratch” del título y agregar que es un driver de dispositivo, pero tampoco pasa nada si no.
Para empezar, parece un driver que casi no tiene razón de existir. Si es para el panel frontal, probablemente sería mejor manejarlo en espacio de usuario con una aplicación libusb.
Me encantan este tipo de videos y los tutoriales profundos, pero la expresión “from scratch” no encaja mucho.
“Partiendo de 10 años de experiencia haciendo exactamente este tipo de cosas” no tendría la misma gracia, aunque sea más preciso.
¿La especificación USB no tiene algo así como 500 páginas? Impresionante.
No hace falta leer todos los detalles de la especificación USB; basta con entender más o menos la funcionalidad.
El kernel ofrece muchas funciones con las que se puede trabajar. Se puede aprender leyendo el código del driver más simple que encuentres en el código fuente del kernel, y después avanzar hacia drivers más difíciles.
Ni siquiera podría transcribir 500 páginas en tres horas.
Una buena API de drivers debería ocultar todo eso para que cada driver USB no tenga que preocuparse por la especificación USB. Ese es trabajo del código común del núcleo USB.
Y además, en este caso, la mayor parte ni siquiera es muy relevante.
1 comentarios
Opiniones de Hacker News
Desde que era adolescente soñaba con contenido así, y me gusta que cada vez se vea más a programadores que trabajan en proyectos bastante avanzados transmitiendo su proceso de trabajo.
Poder mirar detrás de la cortina hace que desaparezcan mucho de lo que parecía magia y mucha de la complejidad.
Sería bueno que compartiéramos este tipo de canales entre nosotros, y me gustaría conocer más.
Otro canal que conozco es https://www.youtube.com/@LowLevelLearning
Estrictamente no es un canal de programación, pero https://www.youtube.com/@StuffMadeHere también me gusta mucho. Es un gran canal de ingeniería.
https://www.youtube.com/live/GxnWuXgj3JI?si=lUJ_7KdkylzXLryj
Hace unos meses escribí un driver de host USB para STM32F4, y lo más difícil fue la falta de buena documentación.
En los periféricos había registros de lectura/escritura mapeados como solo lectura en el SVD, había que configurar bits que no estaban documentados, y USB bulk-only transport apuntaba a una especificación SCSI que no existe.
Al final encontré una entrada de blog que decía que, para hacer funcionar una unidad USB, básicamente había que copiar casi exactamente lo que hace Windows.
Por suerte tenía un osciloscopio capaz de decodificar tramas USB, lo que me ahorró mucho tiempo para entender por qué no funcionaba.
USB parece depender mucho del conocimiento transmitido de boca en boca, y aun así es impresionante que sea tan universal y que la mayoría de las veces funcione de inmediato.
Empecé a contribuir a un proyecto de descompilación y, aunque no soy ni de cerca el mejor descompilador, alguna vez pensé en transmitir mientras trabajo.
Me pregunto si habría interés en este tipo de contenido. No sé si a la gente le interesan cosas como las huellas que deja en el ensamblador el signo de las variables, la diferencia entre accesos a structs y accesos a arreglos, las rarezas que incluso compiladores de hace 30 años hacen con las estructuras de control, la reutilización de registros, o cómo guiar el código para que en una consola clásica salga ensamblador idéntico byte por byte.
Me pregunto si estás trabajando en algún proyecto open source.
Estoy haciendo un sistema operativo y pensé en transmitir algunas sesiones de trabajo; si a la gente realmente le parece interesante, quizá me anime a empezar.
Si de verdad tienes tiempo, me encantaría que lo hicieras, y hasta te apoyaría económicamente.
Lo más interesante es la fuente tipográfica para terminal/código.
https://tosche.net/fonts/comic-code
Al título le falta una parte: esto es un driver de dispositivo USB para un dispositivo relativamente simple, y además ya existe código, así que en la práctica se parece más a una “traducción” de código a código.
Puede verse muy impresionante, pero personalmente lo veo parecido a mirar trabajar a alguien que es competente en su oficio.
Sería bueno si un moderador pudiera quitar “from scratch” del título y agregar que es un driver de dispositivo, pero tampoco pasa nada si no.
Me encantan este tipo de videos y los tutoriales profundos, pero la expresión “from scratch” no encaja mucho.
“Partiendo de 10 años de experiencia haciendo exactamente este tipo de cosas” no tendría la misma gracia, aunque sea más preciso.
¿La especificación USB no tiene algo así como 500 páginas? Impresionante.
El kernel ofrece muchas funciones con las que se puede trabajar. Se puede aprender leyendo el código del driver más simple que encuentres en el código fuente del kernel, y después avanzar hacia drivers más difíciles.