<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: alexbyd</title>
    <description>The latest articles on DEV Community by alexbyd (@alexbyd).</description>
    <link>https://dev.to/alexbyd</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F939125%2F2726f5b2-f211-433b-a6ee-20e599d7a5a5.jpeg</url>
      <title>DEV Community: alexbyd</title>
      <link>https://dev.to/alexbyd</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alexbyd"/>
    <language>en</language>
    <item>
      <title>Open Source... ¿Cómo llegamos hasta aquí?</title>
      <dc:creator>alexbyd</dc:creator>
      <pubDate>Mon, 02 Feb 2026 20:45:35 +0000</pubDate>
      <link>https://dev.to/alexbyd/open-source-como-llegamos-hasta-aqui-3pcj</link>
      <guid>https://dev.to/alexbyd/open-source-como-llegamos-hasta-aqui-3pcj</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Te cuento un poco de lo que he aprendido con un proyecto open source.&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
&lt;/h2&gt;

&lt;p&gt;En el octoberfest de github la hackathon, en los proyectos open source este llamo la atención porque los &lt;a href="https://docs.google.com/spreadsheets/d/1WKHbT-7KOgjEawq5h5Ic1qUWzpfAzuD_J06N1JwOCGs/edit?gid=0#gid=0" rel="noopener noreferrer"&gt;bounties&lt;/a&gt; eran pagos, descargue el &lt;a href="https://github.com/tinygrad/tinygrad" rel="noopener noreferrer"&gt;repo&lt;/a&gt; y un par de meses después fue que pude comenzar a trabajar en el.&lt;/p&gt;

&lt;p&gt;Estas personas también tienen un canal de &lt;a href="https://discord.com/channels/1068976834382925865/1068976834928193609" rel="noopener noreferrer"&gt;discord&lt;/a&gt;, donde a diario se postea todo lo referente a el proyecto y donde todos podemos comunicar nuestros avances o ideas, es como si estuviera trabajando con un equipo que desarrolla un framework o &lt;strong&gt;biblioteca de aprendizaje automático&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Al leer la documentación y descubrí que comparado con mi repo local faltaban algunos archivos importantes que trataban de como &lt;strong&gt;tinygrad convertía el tensor en código maquina (kernel gpu)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Actualizar el repo porque tenia 520 commits atrasados: ver el ultimo commit o los últimos commits de la rama master&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git log -1 origin/master --format="%h%n%an%n%ad%n%s" --date=iso&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;guardar cambios locales: &lt;code&gt;git stash save "aqui el mensaje"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;descargar cambios: &lt;code&gt;git fetch&lt;/code&gt; (o pull) origin master&lt;br&gt;
aplicar cambios descargados: &lt;code&gt;git merge master&lt;/code&gt;&lt;br&gt;
recuperar cambios locales: &lt;code&gt;git stash apply stash@{#}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Ahora con la copia actualizada en los bounties escojo &lt;a href="https://docs.google.com/spreadsheets/d/1WKHbT-7KOgjEawq5h5Ic1qUWzpfAzuD_J06N1JwOCGs/edit?gid=0#gid=0&amp;amp;range=A23" rel="noopener noreferrer"&gt;uno que llame la atención&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;buscamos en los archivos locales con find y grep partes claves del mensaje del bounties, si no encontramos nada entonces buscamos con git log:&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;find . -name "&lt;em&gt;speed_v_torch&lt;/em&gt;" -type f&lt;/p&gt;

&lt;p&gt;grep -r "test_sum" .github/workflows/&lt;/p&gt;

&lt;p&gt;git log -1 --pretty=format:"%cd" -- test/test_speed_v_torch.py&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lo &lt;strong&gt;primero es entender el problema&lt;/strong&gt;, quien lo causa y porque?&lt;/p&gt;

&lt;p&gt;Ahora que encontramos el archivo toca aplicar técnicas de ingeniería para comprender que hace cada parte del código:&lt;/p&gt;

&lt;p&gt;Identificar las clases principales: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cual es la entrada principal? (args, tensores)&lt;/li&gt;
&lt;li&gt;Cual es la salida principal? (return, resultado)&lt;/li&gt;
&lt;li&gt;Que transformacion hace? (suma, compilacion, optimizacion)&lt;/li&gt;
&lt;li&gt;Que estado mantiene? (cache, contadores)&lt;/li&gt;
&lt;li&gt;Que dependencias tiene? (imports, otras clases)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Una función misteriosa?: mira de donde viene, analiza los imports, busca su definición y responsabilidad, que hace la clase a la que pertenece y cual es su responsabilidad particular.&lt;br&gt;
Sigue la pista de las variables, busca todos los usos y contexto&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;quien lo crea? &lt;/li&gt;
&lt;li&gt;que contiene? &lt;/li&gt;
&lt;li&gt;quien lo usa? &lt;/li&gt;
&lt;li&gt;donde se modifica?&lt;/li&gt;
&lt;li&gt;encuentra factory methods (from_, create_, build_)&lt;/li&gt;
&lt;li&gt;identifica patrones de diseño (singleton, factory, etc.)&lt;/li&gt;
&lt;li&gt;traza flujos de datos (inputs -&amp;gt; outputs): mapas mentales de cual es el flujo&lt;/li&gt;
&lt;li&gt;encuentra configuraciones (constants, settings)&lt;/li&gt;
&lt;li&gt;busca tests para ejemplos (test/)&lt;/li&gt;
&lt;li&gt;analiza excepciones (try/except blocks)&lt;/li&gt;
&lt;li&gt;documenta lo que entiendes (explica como si tuvieras 5 años)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;... Hasta aquí he aplicado git, pdb para debug (si, uso &lt;strong&gt;vim&lt;/strong&gt; y edebugueo con pdb: n, l, p, w, r) y he mejorado la forma en la que leo el código de alguien mas mejorando mi lógica de programación&lt;/p&gt;

&lt;p&gt;próximamente hablare del flujo de datos de un tensor en tinygrad, por ahora...&lt;/p&gt;

&lt;p&gt;gracias por leer...&lt;/p&gt;

&lt;p&gt;Continuando  y buscando en la descripcion encontramos la &lt;a href="https://rocm.docs.amd.com/projects/llvm-project/en/latest/LLVM/llvm/html/index.html" rel="noopener noreferrer"&gt;user guide for amd gpu: kernel-descriptor&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://rxresu.me/alex.baena/cv" rel="noopener noreferrer"&gt;mi cv&lt;/a&gt;&lt;/p&gt;

</description>
      <category>notas</category>
      <category>tinygrad</category>
      <category>framework</category>
      <category>llvm</category>
    </item>
  </channel>
</rss>
