Verano Innovador SkyKids

Verano Innovador SkyKids

Esta semana (y la siguiente) se lleva a cabo el "Verano Innovador SkyKids", donde El Garage da cursos de varios temas de innovación y tecnología a niños hijos de empleados de Skyworks Inc.

Yo estoy encargado de dar uno de los cursos de electrónica con Arduino. Para este tipo de talleres (niños + Arduino) me gusta utilizar Scratch 4 Arduino, en vez del Arduino IDE, porque resulta más intuitivo para los niños y al mismo tiempo enseña la lógica de la programación.

El pasado miércoles el taller trató sobre las bases de la electricidad (resistencias, LEDs, protoboard, multímetro, voltaje, etc.), hoy viernes trató sobre las bases de la programación (Scratch) y la siguiente semana será juntar ambas para realizar proyectos con Arduino.

Los niños se divirtieron mucho en el taller de hoy, aprendiendo a programar al crear su propio videojuego, y me pidieron que pusiera sus juegos en mi sitio web.

Y como lo prometido es deuda, aquí están los juegos hechos por los "SkyKids".


Escribiendo un mismo documento de LaTeX en dos idiomas

CTAN Lion

Soy fanático de LaTeX. Creo que es la forma correcta de escribir documentos, pues muchas veces en procesadores de texto WYSIWYG (como MS Word), el documento puede verse bien, pero estar semánticamente incorrecto, y eso me molesta. LaTeX no te permite cometer esos errores.

Entonces tengo varios documentos escritos en LaTeX y, hasta ahora, tenía el problema de que algunos de ellos los necesitaba tanto en inglés como en español. Mi respuesta a este predicamento, como hubiera optado la mayoría, era escribir el documento en un idioma, crear una copia de este, y traducir la copia al segundio lenguaje. Sin embargo sentía que no era la manera correcta de hacer las cosas.

Sabía que tenía que haber una forma de escribir el código en ambos lenguajes y seleccionar uno de estos al momento de compilar.

Me puse a investigar y encontré una respuesta que me gustó en un foro de LaTeX:

Hacer un archivo .tex con comandos definidos como en el siguiente ejemplo:

\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage[spanish,english]{babel}

\newcommand{\langes}[1]{%
  \ifes\selectlanguage{spanish}#1\fi}
\newcommand{\langen}[1]{%
  \ifen\selectlanguage{english}#1\fi}

\begin{document}

\section{%
\langes{Hola!}
\langen{Hello!}}

\langes{Éste texto está en Español.\\
las reglas tipográficas españolas
\textit{deberían} aplicarse.}
\langen{This is text in English.\\
English typographic rules \textit{should} apply.}

Y compilarlo de la siguiente manera si lo queremos en español:

xelatex -jobname=document-es "\newif\ifes\newif\ifen\estrue \input{document}"

o en en inglés:

xelatex -jobname=document-en "\newif\ifes\newif\ifen\entrue \input{document}"

(Donde "document" es el nombre del archivo .tex y "document-es/document-en" es el nombre que tendrán los PDFs generados). Dando como resultado los siguientes documentos respectivamente:

Documento en español

Documento en inglés

Estoy muy satisfecho con esta técnica, ya empecé a aplicarla a mis documentos.


Dosis de Zeldas I

What if Zelda was a girl?


¡Este sitio web ya es seguro! (o cómo obtener HTTPS para tu sitio web)

HTTPS

HTTPS ha sido estándar desde el 2000, pero al día de hoy muchos sitios web siguen sin utilizarlo principalmente por tres razones:

  • Costo: Las empresas que emiten los certificados cobran por éstos al rededor de $250 USD anuales.
  • Carga en el servidor: Con HTTPS, la información transferida tiene que ser encriptada y desencriptada para poder ser leída, lo cual puee resultar en más trabajo para el servidor (aunque, seamos sinceros, es 2016... computar ya no es un problema).
  • Renovaciones: Renovar el certificado puede llegar a tomar mucho tiempo, debido a las verificaciones que se deben llevar a cabo.

Pero ya no más. Desde abril de 2016, Let's Encrypt ha estado ofreciendo certificados que son gratis, automatizados y abiertos.

El proceso es extremadamente sencillo, no me tomó más de 10 minutos generar el certificado y configurar la renovación automática. En el sitio web de Certbot, la herramienta que crearon con este propósito, puedes encontrar tutoriales para el sistema operativo y el webserver que estés utilizando.

Así que ya no hay excusa. Es 2016 y necesitamos proteger nuestra privacidad.


Seguridad esencial para servidores Linux

Seguridad

Me da mucho miedo el tema de la seguridad. Todo está roto y no importa que tanto te esfuerces, que tanto encriptes tus datos, siempre vas a cometer un descuido (especialmente si eres tan distraído como yo) y algún vivo se va a aprovechar de él.

Por eso no me atrevo a escribir una sola línea de código que tenga que manejar datos sensibles, y cada vez son menos los valientes: hoy en día, muchos sitios no te piden que crees una cuenta, sino que hagas login con tu cuenta de Facebook, Twitter o Gmail, porque ¿para qué guardar tus datos si Facebook ya lo hace y mejor de lo que yo podría llegar hacerlo?

Pero aunque mis necesidades de seguridad no son tan grandes, aún así mantengo un servidor (donde está alojado este blog), y es necesario implementarle, cuando menos, la seguridad más básica.

Por eso fue un alivio encontrar en HackerNews el siguiente artículo:

My First 10 Minutes On a Server - Primer for Securing Ubuntu,

que muestra como en 10 minutos puedes pasar de un servidor recién formateado, a un servidor seguro. Supongo que aquí también aplica el principio de Pareto: con el 20% del esfuerzo, puedes lograr el 80% de seguridad.

Los pasos ahí mostrados son para un servidor de Ubuntu, pero para cualquier otra distro es casi lo mismo.

Claro que esto no va a protejer, para nada, las aplicaciones hosteadas en este servidor, como dice el artículo, "ese es otro animal completamente", pero por lo menos nadie va a hacer login ni va a ejecutar programas si no se lo permites.


Usando etiquetas de metadata social en tu sitio web

My meta

Hace rato envié por mensaje de Facebook Chat un link a mi sitio web. Facebook, como de costumbre, "maquilló" mi URL con una imagen, un título y una descripción:

Wrong meta

En este momento me di cuenta de que todo estaba mal. No quería que saliera, casi al azar, una de las tantas imágenes que tengo en mi website, quería una foto de mí; ni tampoco quería que salirera como descripción un "copy&paste" del texto de mi sitio web, quería poder definir mi propia descripción. El mismo problema, como era de esperarse, ocurría en Twitter y Google+ (¿A caso hay otras redes sociales?).

Me decidí a resolver este problema, así que me puse a investigar un poco. Encontré que hay unas etiquetas especiales de HTML que te permiten definir metadata para las redes sociales. Sin embargo, como el mundo no es perfecto ni estandarizado, cada una de estas tres redes sociales tiene su propio modo de hacerlo.

Escribiendo tu metadata

Los siguientes snippets de código son los necesarios para que estas tres redes sociales obtengan tus datos. Existen más etiquetas, sin embargo sólo pondré las básicas (y suficientes, en mi opinión). En los links del final del post podrán ver las etiquetas extra que existen.

Recuerden cambiar LAS_MAYÚSCULAS por sus propios valores.

Facebook

<meta property="og:title" content="TU_TITULO" />
<meta property="og:type" content="article" />
<meta property="og:url" content="LINK_A_TU_WEBSITE" />
<meta property="og:image" content="LINK_A_TU_IMAGEN" />
<meta property="og:description" content="TU_DESCRIPCION" /> 

Facebook meta

Twitter

<meta name="twitter:card" content="summary" />
<meta name="twitter:site" content="@TU_TWITTER_USERNAME" />
<meta name="twitter:title" content="TU_TITULO" />
<meta name="twitter:description" content="TU_DESCRIPCION" />
<meta name="twitter:creator" content="@TU_TWITTER_USERNAME" />
<meta name="twitter:image" content="TU_IMAGEN" />

Twitter meta

Google+

<meta itemprop="name" content="TU_TITULO" />
<meta itemprop="description" content="TU_DESCRIPCION" />
<meta itemprop="image" content="TU_IMAGEN" /> 

Google+ meta

Revisando la metadata

Al probar poner mi link en Facebook, a ver si mis metadatos ya habían quedado funcionales, me di cuenta de que esta red social mantiene un caché de la página web. Sin embargo, tiene un "Share Debugger", donde puedes pedir que te debugueen tu link y actualicen su caché. Twitter también cuentan con una herramienta parecida:

Más información


Reseña de libro: "Show your work!"

Show your work

Acabo de terminar de leer Show your Work! de Austin Kleon, en inglés, su idioma original. Me pareció magnífico, pues logré aprender bastante sobre el proceso de compartir el trabajo creativo que realizamos.

Kleon, que se autoproclama "un escritor que dibuja" (en referencia a que también es diseñador web) es bastante famoso por su libro anterior, el best seller del New York Times, "Steal like an artist", donde enseña a los lectores a "robar" la creatividad de la comunidad.

En este segundo libro, sin embargo, ayuda a los artistas a dar el siguiente paso: dar a conocer su trabajo, tanto para ser descubiertos por el público, como para retroalimentar a la comunidad devolviendo aquella inspiración que "robaron" anteriormente.

Muchos pensarán que como no se consideran artistas, este libro no es para ellos. Sin embargo, creo que está dirigido para cualquier persona que desarrolle un trabajo creativo: programadores, diseñadores, makers, chefs, etcétera.

Me pareció que la obra está escrita de una manera muy amena, plagada de historias, citas e ilustraciones que te mantendrán adentrado en la lectura.

So what test

Yo soy una persona que no se interesa mucho en eso del networking, pero este libro es precisamente para gente como yo, en palabras del autor, "este libro no es para hacer networking, sino para aprovecharse de la red".

A lo largo del libro, se van presentando diez capítulos que hacen referencia a los diez consejos que según Kleon nos ayudarán a ser descubiertos:

Show your work tips

Cada uno de estos consejos, ejemplificados con historias muy entretenidas del mismo autor o de artistas de distintas diciplinas.

No acostumbro leer este género de libros, pero debo admitir que aprendí y disfruté bastante. Lo recomiendo totalmente a aquellas personas que realizan trabajo creativo y tienen la mentalidad de que su trabajo habla por sí mismo; porque podrá ser un trabajo magnífico, pero si quieres que sea descubierto, tendrás que darle un empujoncito.


A una dama que se llama Poesía

Poesía

Ironía es escribir un soneto
a aquella cuyo nombre ya es Poesía.
a¿Simple consuelo es del alma mía?
¿o en verdad es Erato y su decreto?

Carezco de sus venas por completo,
mas sóbrame para otra melodía,
tan solo contemplarle es garantía
de mi pluma a escribir otro cuarteto.

Que ironía, sin Canto es ser poeta,
que intenta, con sus versos, muy en vano,
matar a la Poesía con poesía.

Si es Poesía de rosa y de violeta
y su boca es cual tinto de verano,
que igual se llame Viña es ironía.


I/O Hack

I/O Hack
Este fin de semana pasado asistí al I/O Hack, un hackathon de 24 horas que se llevó a cabo en el Tecnológico de Monterrey campus Santa Fe.

Tres amigos estudiantes de Ciencias Computacionales y yo aplicamos para asistir y resultamos elegidos entre los aplicantes para asistir con todos los gastos pagados.

Salimos de Mexicali el jueves a al medio día y llegamos al City Express de Santa Fe ya en la noche (maldito tráfico capitalino). El evento no iniciaba hasta las 16:00 del viernes, así que tuvimos tiempo de cenar, conocer a los demás participantes, y tomar algunos tragos.

El tema del evento era Internet of Things enfocado a tres ámbitos: logística, agricultura y retail.

Nosotros elegimos la agricultura y nuestro proyecto fue AgroCar, un pequeño carro robótico capaz de andar a través de un campo de cultivo, analizar distintas propiedades de la tierra y las plantas, y generar un reporte con los datos recabados.

Nos consintieron con bastante comida y bebidas. Hubo un lapso de tiempo en el que no se hizo café y esto me molestó momentáneamente, aunque ahora que lo pienso, creo que si hubiera tomado un poco más de café, mi corazón ya no hubiera resistido.

Bebidas de Lala

Y el Internet también estuvo bastante decente.

Internet cajeta

También había una mesa de hardware con Raspberry Pis, Arduinos, Galileos, e impresoras 3D. Yo llevaba mi propio hardware, aunque tomamos una Raspberry Pi B+ porque no confío en la velocidad de la B.

Hardware

iZettle fue uno de los patrocinadores. Nos regalaron a cada uno una de sus terminales de tarjetas bancarias para celular. Aún no sé qué haré con la mía.

iZettle

Aunque después de la presentación de nuestros prototipos no ganamos ninguno de los premios, me sentí satisfecho con lo que hicimos. Sin duda aprendimos alguna que otra cosa, y por supuesto que nos divertimos.

Presentación

Y a pesar de no haber dormido durante más de 24 horas (mentira, sí tomé un power nap de 15 minutos), eso no me impidió ir a La Condesa en la noche ;). Nuestro vuelo de regreso salió a las 10:00.


El lenguaje de programación Piet

Composition with red, yellow and blue

«Composition with red, yellow and blue». Piet Mondrian (1921)

La pintura anterior inspiró a un lenguaje de programación esotérico, en el que los programas parecen obras de arte moderno.

Las mecánicas del lenguaje son muy sencillas: tienes un stack y puedes realizar operaciones sobre esta dependiendo de cómo "pintes" tu programa. Esto permite que dos programas que hagan exactamente lo mismo se vean completamente diferentes.

La especificación de Piet explica cómo funcionan exactamente los programas.

A mí me pareció muy interesante este lenguaje, así que decidí intentar hacer algo con él. Al principio es muy confusa la forma en la que el lenguaje funciona, pero poco a poco le vas agarrando la onda. Si tienes experiencia con lenguajes de bajo nivel te resultará aún más sencillo.

Me propuse hacer el primer problema de Project Euler (intentando darle un toque artístico) y aquí está:

Piet Project Euler 1

O una versión agrandada para apreciarlo mejor:

Piet Project Euler 1 Enlarged

Y con esta imagen se puede ver el flujo del programa:

Piet Project Euler 1 Trace

Al momento de interpretar la imagen (usé npiet), el programa imprime a la consola el resultado del problema: <SPOILER>233168</SPOILER>.

Me divertí mucho haciendo este programita, probablemente después haga algo más con este lenguaje. O tal vez aprenda algún otro lenguaje esotérico.