Los passwords son mejores con Sal y Pimienta

Published 25 Mar 2017 by Pablo Estrada

¿Alguna vez has desarrollado un sistema web? Por ejemplo, una página con PHP-MySQL, Django-Postgress, o Node-MongoDB? ¿Tu sistema tiene cuentas de usuario con passwords guardados en la base de datos? Y… le pusiste sal a tus passwords?

Estabilidad numérica y números de punto flotante

Published 27 Feb 2017 by Pablo Estrada

Como usuarios, e incluso como programadores, estamos acostumbrados a utilizar nuestras computadoras y que funcionen. Dependemos de capas y capas concéntricas de abstracción que permiten ocultar la complejidad de las capas anteriores. Sin embargo, para un buen programador es importante ser consciente de estas capas, de las implicaciones y de las mejores maneras de utilizarlas.

¿Porqué no puedo usar paralelismo en Python?

Published 07 Nov 2016 by Pablo Estrada

Ya tiene muchos años que nuestras computadoras personales incluyen microprocesadores con más de un núcleo. Esto le permite a nuestros programas ejecutar varias tareas en paralelo. Diversos lenguajes de programación permiten explotar este modelo a través del uso de multiprocesamiento. Ejemplos muy bien conocidos son la librería de Threads de Java y los hilos POSIX en C.

Las 3 Lecciones que aprendí tras una semana en Google

Published 22 Oct 2016 by Pablo Estrada

En Marzo de 2016 recibí una de las noticias más importantes de mi vida: Una oferta de trabajo de Google. Dos semanas después acepté la oferta, y para Septiembre del mismo año me uní a la empresa. Ésta es la historia de mi primera demana en el gigante de Mountain View.

4 Redes Complejas Increibles - De Facebook al FC Barcelona

Published 15 Oct 2016 by Pablo Estrada

Uno de mis temas favoritos en análisis de datos es el análisis de Redes Complejas. El estudio de relaciones entre múltiples agentes nos permite entender características interesantísimas de los sistemas en que se desenvuelven. Vamos a estudiar algunas visualizaciones y ejemplos reales de redes sociales, y de información que nos han ayudado a descubrir y entender el mundo que nos rodea.

Un ejemplo real de Big Data en Python

Published 06 Oct 2016 by Pablo Estrada

¿Qué es Big Data? Todo mundo habla de Big Data de una manera difusa y poco concreta. Todas las empresas quieren ‘entrarle al Big Data’, pero ¿qué significa eso? En este post vamos a platicar de manera sencila sobre a qué nos referimos con el término Big Data, y vamos a hacer un pequeño ejemplo en Python que permita demostrar cuándo y porqué es necesario utilizar herramientas de Big Data.

Python en entornos aislados - virtualenv

Published 29 Sep 2016 by Pablo Estrada

Este post va a ser bastante sencillo. Les voy a contar de una herramienta de desarrollo en Python llamada virtualenv; que te permite crear entornos aislados para probar y desarrollar proyectos en Python. La ventaja de virtualenv es que te permite tener varias instalaciones funcionales de Python en una misma máquina.

¿Bitcoin?

Published 17 Jul 2016 by Pablo Estrada

En los últimos años, hemos escuchado por aquí y por allá sobre criptomonedas. Al principio eran los bitcoins, y después fueron los dogecoins, coinye, y una larga lista de ejemplos. Estas monedas digitales se convirtieron en interesantes iniciativas que buscan crear sistemas monetarios que no dependan de bancos, gobiernos o entidades centralizadas.

Asi funcionan los Hash Tables

Published 11 Jul 2016 by Ricardo Zavaleta

En esta ocasión hablaremos de una estructura de datos muy interesante. Se trata de las Hash Tables (en español a veces se les conoce como tabla hash, matriz asociativa, mapa hash, tabla de dispersión o tabla fragmentada (1), en este post nos apegaremos a los nombres usados en inglés puesto que son más estándar y porque así podrán saber qué términos buscar si desean investigar más por su cuenta).

Un Panorama del fenómeno Big Data

Published 09 Jul 2016 by Pablo Estrada

En los últimos años, Big Data se ha convertido en una de las expresiones favoritas del mundo de la computación. Empresas grandes y pequeñas han buscado ‘adoptar’ el Big Data, y muchas otras han decidido ‘enseñarlo’. El campo es un poquito confuso y no es fácil encontrar un buen resumen de qué es big data, y cómo funciona. Así que aquí te lo vamos a platicar! Antes de tomar un curso, o rendirte, checa este post para darte una idea de qué onda con el Big Data!

El algoritmo RSA y la criptografía de llave pública

Published 05 Jul 2016 by Pablo Estrada

Algunos algoritmos de la ciencia de la computación que son importantísimos son los algoritmos de encripción. Estos algoritmos permiten esconder información para transmitirla en medios públicos, y son la abse de muchísimos servicios del internet.

3 preguntas comunes en una entrevista de programación

Published 03 Jul 2016 by Pablo Estrada

Software is eating the world, dicen muchos. En los últimos años, la industria del software ha vivido una increíble explosión en tamaño, ventas y atención de medios. El mundo hispanohablante no es la excepción, y en especial México, que se ha convertido en una fuente de talento para Silicon Valley.

Decodificando el algoritmo de Huffman

Published 19 Jun 2016 by Pablo Estrada

En un post anterior aprendimos cómo comprimir datos utilizando el algoritmo de Huffman, que es un algoritmo que permite obtener códigos óptimos para un conjunto de bits. En ese mismo post publicamos un programa en Python que dado un archivo de texto, genera dos archivos: Un diccionario en JSON, y un archivo binario que contiene los datos comprimidos del archivo de entrada. Sin embargo, no publicamos el programa para descomprimir datos.

Organizando tus módulos de Python - __init__.py

Published 03 May 2016 by Pablo Estrada

Python es un lenguaje súper fácil de usar. Se ha vuelto muy popular en escuelas, investigación, y para “Data Science”. Éste es un post sobre ‘buenas prácticas’ con tu códgo de Python.

Modelos de programacion - JavaScript - Asincrono y orientado a eventos

Published 27 Apr 2016 by Pablo Estrada

Éste es el primer post en una serie de post sobre modelos de programación. En esta serie vamos a estudiar algunos lenguajes de programación interesantes, y cómo funcionan sus modelos de ejecución. En esta ocasión vamos a hablar de JavaScript.

Comprimiendo datos - el algoritmo de Huffman en Python

Published 28 Mar 2016 by Pablo Estrada

Hoy vamos a platicar sobre cómo hacer un pequeño programa para comprimir datos de un archivo de texto. Nuestro programa va a funcional con un algoritmo de compresión bastante famoso: El algoritmo de Huffman. Con él vamos a utilizar menos bits para guardar la misma cantidad de información.

¿Cómo empezar a crear software libre?

Published 22 Mar 2016 by Pablo Estrada

El software libre está presente en todas nuestras actividades tecnológicas. Desde el sistema Android en nuestros celulares, el sitema Linux en la mayor parte de los servidores del mundo, y la librería OpenSSL que ayuda a encriptar tus comunicaciones. Es software muy importante, y grandes desarrolladores han empezado sus carreras con software libre (e.g. Miguel de Icaza y Linus Torvalds); sin embargo, también es un entorno desconocido y donde es difícil adentrarse.

Humanidad vs Inteligencia Artifical - El juego de Go

Published 17 Mar 2016 by Pablo Estrada

Hace unos días ocurrió un evento que sorprendió a la comunidad de inteligencia artificial en todo el mundo. Investigadores en DeepMind (una compañía de Inteligencia Artificial que le pertenece a Google) desarrollaron software que tras ser entrenado, logró vencer a el campeón mundial del juego de mesa Go, llamado Sedol Lee. El duelo fue de 5 juegos, donde la puntuación final fue de 4 a 1, a favor de la máquina.

Programando una red neuronal simple

Published 03 Mar 2016 by Pablo Estrada

El día de hoy toca hablar de redes neuronales. Las redes neuronales han estado empujando el horizonte de lo que se creía posible en la inteligencia artificial, y casi cada semana hay noticias nuevas de un sistema inteligente basado en redes neuronales. Hoy vamos a programar una red neuronal muuuy sencilla.

Hay de Math.random() a Math.random()

Published 31 Dec 2015 by Pablo Estrada

JavaScript es uno de los lenguajes de programación más utilizados en el mundo; y la función Math.random() es la función estándar de JavaScript para obtener números pseudoaleatorios. ¿Me creerían si les dijera que hasta hace unos días, la función Math.random() en uno de los motores de JavaScript más usados en el mundo era medio mala?

Población y producción en el territorio Mexicano

Published 22 Dec 2015 by Pablo Estrada

Hace unas semanas encontré un mapa en TopoJSON de México, y decidí utilizar información que obtuve del sitio web del INEGI para hacer una pequeña visualización de Producción bruta total, y población en el territorio Mexicano. Aquí la pueden ver:

Sacudiendo el mundo de los algoritmos

Published 20 Dec 2015 by Pablo Estrada

Hace un poco más de dos meses, el mundo de los algoritmos fue sacudido con un nuevo resultado en Isomorfismo de Grafos. El profesor Lázló Babai de la Universidad de Chicago es un brillante académico de ciencia de la computación y matemáticas. De origen Húngaro, el profesor Lázló realiza investigación en la Teoría de la Complejidad, matemáticas discretas y algoritmos. Hace un par de meses, el profesor Lázló (conocido entre sus amigos como Laci) anunció que había descubierto un algoritmo cuasi-polinomial que permite resolver el el problema de Isomorfismo de Grafos. Vamos a ver qué significa todo esto…

Hablemos de PageRank

Published 20 Nov 2015 by Pablo Estrada

Recientemente, investigadores de la Universidad de Fribourg en Suiza han estado trabajando en un nuevo artículo donde estudian el profundamente el algoritmo de PageRank. Particularmente, este estudio se centra en el comportamiento de PageRank caundo es utilizado para analizar redes (también conocidas como grafos) que crecen con el tiempo. El artículo fue mencionado en la lista ‘Emerging Technology from the ArXiv’, de MIT Technology Review: Una lista semanal donde se seleccionan artículos novedosos e interesantes. Acabo de leer el artículo (en parte porque tengo que presentarlo en la escuela:P) y decidí escribir un pequeño post al respecto, dado que PageRank es un algoritmo famoso e importante.

Las Tortillas nos Unen

Published 12 Nov 2015 by Pablo Estrada

Hace poco descargué una base de datos con información de negocios de “manufactura” del sitio web del INEGI. La información está disponible para todos, y hay muchas cosas interesantes. Me puse a jugar con esos datos, y decidí hacer mi primera visualización de mapa con la información de los negocios y algunos datos extra.

Hola Mundox

Published 25 Oct 2015 by Pablo Estrada

Saludos!