5 puntos por GN⁺ 2025-05-02 | 1 comentarios | Compartir por WhatsApp
  • El autor descargó todos los datos de Hacker News y los analizó con DuckDB
  • Guardó todos los ítems (historias + comentarios), que suman 20 GB, en archivos JSON, con una estructura que también permite actualizaciones futuras
  • Usó DuckDB para hacer un análisis de series de tiempo semanal de la proporción de menciones de “Python”, “JavaScript”, “Ruby” y “Rust”, entre otros
  • Utilizó un LLM para escribir SQL, lo que permitió realizar análisis complejos con facilidad incluso siendo principiante
  • El proyecto puede consultarse en el sitio público hn.unlurker.com, y cualquiera puede reutilizar estos datos como base para sus propios análisis

Rastreando todos los datos de Hacker News

  • Al crear hn.unlurker.com, el autor desarrolló su propio cliente de la API de HN en Go, comenzando como un proyecto personal para aprovechar funciones recientes de Go y linters
  • Implementó el comando scan para descargar secuencialmente todos los ítems de Hacker News (historias y comentarios en la API de HN) desde el 0 en adelante
  • Aunque la descarga se interrumpió varias veces, la estructura permitía reanudarla, y logró obtener unos 20 GiB de archivos JSON en pocas horas

Análisis temporal de texto con DuckDB

  • Mientras hacía búsquedas simples de patrones con grep, probó DuckDB como herramienta de análisis, una base de datos rápida optimizada para análisis en archivos únicos y pequeños
  • Cargó los archivos JSON como tablas y calculó semanalmente la proporción de menciones de distintos lenguajes dentro del texto de los ítems
  • Escribió SQL para visualizar, con un promedio móvil de 12 semanas, la proporción de menciones que incluyen palabras clave como Python, JavaScript, Java, Ruby y Rust
  • Gracias a la nueva UI de DuckDB, su uso resultó más sencillo, y con ayuda de un LLM también fue fácil escribir el SQL

Resultados y próximos pasos

  • DuckDB ofreció excelente rendimiento y facilidad de uso para analizar datos de esta escala
  • Tras completar la recolección de datos, el autor comentó medio en broma y medio en serio que “entrenará cientos de bots basados en LLM para reemplazar Hacker News”
  • Sin embargo, el objetivo real de recopilar y analizar los datos ya se cumplió, y el proyecto termina aquí
  • A partir de ahora, el análisis posterior queda en manos de quien quiera usar estos datos para extraer nuevos insights

Enlaces de referencia

1 comentarios

 
GN⁺ 2025-05-02
Comentarios de Hacker News
  • Hay dos BD que actualizan la tabla de Hacker News, así que se puede analizar sin necesidad de descargar nada

    • BigQuery requiere una cuenta de Google Cloud y parece que las consultas entrarían en la capa gratuita
    • ClickHouse permite ejecutar consultas directamente en el navegador sin registrarse
  • En el pasado hice algo parecido con las cuentas de Twitter/Bluesky de @fesshole

    • Descargué el archivo completo y ajusté finamente un modelo para generar confesiones más ingeniosas
    • Pero al final me di cuenta de que le había enseñado contenido inapropiado a una máquina inocente
  • Tenía un archivo JSON de 20 GiB con todo el contenido de Hacker News

    • Me sorprendió que fuera tanto, a pesar de ser un sitio de solo texto
    • En 18 años se publicaron más de 20 mil millones de bytes de texto
  • Las consultas sobre Java incluyen todas las instancias de JavaScript, así que Java queda sobrerrepresentado

  • Me pregunto cuál es la netiqueta al descargar Hacker News

    • Si debería consultar con Dang antes de cargar el servidor, o simplemente asumir que las grandes empresas tecnológicas ya lo han hecho varias veces
  • Predigo que en el futuro muchas APIs ofrecerán la opción de devolver archivos de duckdb

    • Si de todos modos vas a cargar el json en una base de datos, es más eficiente recibir la base de datos como respuesta
  • Hice algo parecido

    • Usé el dataset de BigQuery para exportar los datos a parquet, descargarlos y luego consultarlos con duckdb
  • Después de descargar localmente todo el contenido de Hacker News, se podría entrenar un bot basado en LLM y operarlo como colaborador

    • Lo digo en broma, pero me preocupa que algún día alguien lo intente
  • Piden no usar gráficos acumulativos

    • Es muy probable que distorsionen la percepción del lector
    • Es difícil juzgar la altura de puntos de datos específicos y pueden insinuar dependencias
  • En el pasado escribí un volcado de datos de Hacker News

    • Como los elementos recientes se actualizan más con el tiempo, podría ser buena idea implementar una función que haga que los elementos descargados recientemente parezcan más antiguos que los elementos realmente antiguos