Javier G. Sogo

Javier G. Sogo

Software developer

May the forc++ be with you

  • Magnum example using Emscripten

    November 10, 2021
    c++
    wasm
    emsdk
    magnum
    conan
    In this article I use Emscripten to render an STL model in the browser with the help of Magnum library. I'll use Conan and packages from ConanCenter to get the libraries and build everything needed. Finally we will get the files we need to deploy in a web server to interact with the 3D model. In this blogpost I'm not entering into the logic or sources, the purpose is to show a working project that can be used in future developments.


  • Webassembly, OpenGL y Qt - Un cubo interactivo en la web

    January 19, 2021
    c++
    wasm
    qt
    web
    Hace mucho tiempo publiqué un tweet que tuvo cierta tracción, en él mostraba un cubo interactivo en el navegador que había hecho con C++. La magia detrás de ese cubo era una aplicación de Qt compilada para Webassembly utilizando un visor de OpenGL.


  • Un bot de Telegram con C++

    March 24, 2019
    chatbot
    c++
    telegram
    conan
    Un punto de encuentro habitual entre la programación y la lingüística son los chatbots, se trata de aplicaciones que permiten interactuar con los usuarios a través de plataformas como WhatsApp o Telegram. Para alguien como yo, con interés en ambos campos, éste es un lugar habitaual al que vuelvo una y otra vez, y así ha sido, esta vez desde el mundo del C++.


  • Métodos lazy (opcionales) en una clase

    April 13, 2018
    python
    lazy
    snippet
    Este post es un apunte rápido para documentar una implementación de funciones lazy a través de decoradores en una clase de Ptyhon. La idea es tener una forma sencilla de definir funciones de una clase que: se puedan ejecutar tan pronto como se crea un objeto (o no), almacenen en caché el resultado de la función.


  • No hay PLN sin lingüística

    December 22, 2017
    pln
    ontology,
    semantics,
    word2vec,
    chatbot
    El Procesamiento de Lenguaje Natural tiene que apoyarse necesariamente en los profesionales del lenguaje, lingüistas y filólogos que desde los inicios de la Inteligencia Artificial han propuesto modelos para trabajar con él, analizarlo y extraer información. Los enfoques simbólico y estadístico con los que se trabaja en PLN actualmente deben colaborar estrechamente para generar las herramientas que nos permitirán interactuar con las máquinas utilizando el lenguaje.


  • Variadic templates and std::tuple - Motivación

    March 21, 2016
    variadic templates
    metaprogramming
    django queryset
    Debo confesar que me he pasado prácticamente todo el fin de semana dándole vueltas a las variadic templates para utilizarlas con las estructuras std::tuple. Y debo confesar que me parece impresionante lo que se puede conseguir (y eso que me imagino que no he raspado más que la superficie), son una herramienta increiblemente potente para construir librerías genéricas sin incrementar la complejidad ciclomática del programa.


  • ChimpPunch

    September 27, 2015
    information retrieval
    startup
    chimppunch
    rafacampoamor
    oneeyedman
    Como últimamente mucha gente me pregunta por ChimpPunch voy a dejar escritas aquí algunas cosas para tenerlas como referencia. ChimpPunch fue un proyecto de startup que inicié junto a Rafael P. Campoamor (CEO) y Carlos Mañas (UI/UX) allá por 2012, con la idea de hacer un sistema que facilitara la gestión de redes sociales (la tríada discover, stream, analyze) para las pequeñas empresas o marcas personales.


  • Mapa dinámico con los trenes (continuará...)

    September 22, 2015
    renfe
    railway
    geo
    cartodb
    El proyecto RENFE empieza a dar sus frutos a pesar de que no puedo dedicarle todo el tiempo que quisiera (y que probablemente se merezca), así que en un pequeño paréntesis os voy a contar los avances: ya saco los horarios de todos los trenes, he logrado posicionar la mayoría de las estaciones (aunque aún me quedan más de 2000 alias por identificar) y ahora también sitúo los trenes dentro de su trayecto entre estaciones, es decir, que calculo su posición para cualquier instante temporal.


  • Lingẅars: Desafíos y juegos

    September 15, 2015
    lingwars
    django
    architecture
    plugins
    Esta semana he estado entretenido creando una arquitectura web para que el grupo de Lingẅars pueda publicar online juegos y desafíos de forma sencilla. Básicamente el objetivo que perseguía era que se puediera crear un juego implementando un par de funciones y que el sistema lo dotara automáticamente de presencia en la web, registro de las respuestas de los jugadores y, además, de jugabilidad a través de la línea de comandos (principalmente para pruebas).


  • Circulaciones de trenes (RENFE)

    September 1, 2015
    renfe
    railway
    geo
    cartodb
    Una fuente de información importantísima para el proyecto RENFE son los horarios de los trenes, gracias a ellos he podido estimar la zona que debe ocupar cada estación (algoritmo de trilateración) identificando errores de posicionamiento gracias a los tiempos de circulación entre estaciones. Sin embargo, esta información no es facilitada por RENFE en un formato adecuado sino que hay que extraerla a través de los formularios de su web. Podéis haceros una idea de la técnica empleada.


  • La infraestructura ferroviaria (ADIF)

    August 31, 2015
    renfe
    railway
    geo
    cartodb
    El primer paso del proyecto RENFE consistió en posicionar las estaciones. Una vez realizada esta tarea puedo construir un mapa con los recorridos de los trenes utilizando la información de horarios y paradas que aparece en la web de RENFE. De esta forma puedo construir el trayecto seguido por un tren cualquiera, por un tipo de trenes o por todos ellos y, lo que es más importante, puedo saber qué estaciones están conectadas con cuales, lo que me permitirá construir el grafo de la infraestructura.


  • Geolocalización de estaciones (ADIF)

    August 27, 2015
    renfe
    railway
    geo
    cartodb
    trilateration
    Dentro del proyecto RENFE una de las partes más importantes es determinar la posición de las estaciones en el mapa (latitud y longitud). Una vez más tengo que reunir información de diversas fuentes y hacerla coherente para generar el dataset que necesito, en concreto voy a utilizar las siguientes fuentes:


  • RENFE -- Mapa dinámico de circulaciones

    August 25, 2015
    renfe
    railway
    geo
    cartodb
    Hace unos días me propuse hacer un mapa dinámico con CartoDB en el que se mostraran los trenes de RENFE moviéndose con la intención de probar la herramienta y experimentar con sus posibilidades. El caso es que el proyecto crece, los datos no están tan disponibles como uno quisiera y empiezan a aparecer los famosos "ya que...".


  • WordNet-blast. Con `boost::add_edge` hemos topado.

    August 20, 2015
    profiling
    boost-graph-library
    _ITERATOR_DEBUG_LEVEL
    workaround
    WordNet-blast es una biblioteca de C++ creada por Ugo Jardonnet para construir en memoria el gráfico de WordNet y permitir un acceso rápido a los synsets y sus relaciones.



  • Mi primer paquete en PyPI

    July 29, 2015
    pypi
    apicultur
    Nadie tiene dudas de que PyPI es una de las joyas de Python, el simple hecho de tener a tu alcance infinitud de librerías con sólo escribir pip install library lo convierte en una herramienta tremendamente útil y probablemente sea una de las razones del éxito de Python entre los que empiezan a programar.


  • Mejorar la corrección de textos producidos por OCR

    July 29, 2015
    notebook
    lingwars
    ocr
    machine learning
    El lunes pasado Leticia planteaba si es posible mejorar la corrección automática de un texto producido por OCR, y recapitulaba algunas de las dificultades que se había encontrado con más frecuencia. Yo quiero dividirlas en dos categorías diferentes: las debidas al proceso de reconocimiento del OCR y las que están relacionadas con las sugerencias de corrección.


  • Clustering -- presentación en h4ckademy

    March 17, 2015
    h4ckademy
    talk
    El otro día os presentaba h4ckademy, la escuela de programación de mi amigo Israel Gutiérrez (). Después de visitarla ese día decidí que podía ser una buena oportunidad para salir de mi zona de confort y ofrecer a los alumnos una breve clase como introducción al clustering (clasificación no supervisada).


  • H4ckademy

    March 6, 2015
    h4ckademy
    gootyfer
    H4ckademy es un proyecto que dirige mi amigo Israel (). Se trata de un concepto de academia de programación innovador: los candidatos deben pasar un proceso de selección para incorporarse al programa y durante este colaborarán entre ellos para aprender y desarrollar proyectos propuestos por ellos mismos o por alguna empresa externa que se compromete a ofrecer mentoring durante su desarrollo.