Jugando con el sistema

Mi juego favorito

Hace algunos días leí “Gaming de system”, un articulo del blog Rands in Response, y me impacto la claridad de este párrafo:

Vemos el mundo como un complejo pero conocible diagrama de flujo donde hay una finita cantidad de entradas, lo que causa una similar finita cantidad de salidas. Este imposible diagrama nos da la reconfortante ilusión de control y entendimiento del caótico mundo, pero su existencia es un efecto secundario de una vida mirando, deduciendo, y construyendo sistemas. Es también porque nos gustan tanto los juegos – ellos son solamente sistemas mas pequeños – y mientras mas entiendas esta fascinacion con los juegos, mejor vas a ser manejándonos.

En espíritu, el hacker how to expresa las mismas ideas:

Es muy divertido ser un hacker, pero es la clase de diversión que requiere mucho esfuerzo. El esfuerzo requiere motivación. Los atletas triunfadores obtienen su motivación a partir de un tipo de placer físico que surge de trabajar su cuerpo, al forzarse a sí mismos más allá de sus propios límites físicos. De manera similar, para ser un hacker deberás sentir un estremecimiento de tipo primitivo cuando resuelves problemas, afinas tus habilidades y ejercitas tu inteligencia.

Cómo convertirse en hacker, El mundo está lleno de problemas fascinantes que esperan ser resueltos, Eric S. Raymond.

Las derivaciones de este principio son muy importantes, con el ambiente necesario, y planteándolo como un juego, nuestro trabajo de desarrollo se convierte en algo que nos atrapa y nos permite estar sin perder concentración o interés durante horas. ¿No nos pasa lo mismo cuando jugamos un MMORPG y estamos en la tarea de matar 1000 bichitos?

Este articulo es una de las lecturas recomendadas de la semana.

Diagrama de la cultura geek

Estoy sin mucho tiempo para escribir últimamente, pero cuando encuentro algo entretenido trato de compartirlo acá. Hoy, diagrama de la cultura geek (via I love charts)

Diagrama de la cultura geek

Un día en internet

Interesante infografía del volumen de datos que se mueven en internet por día:

A Day in the Internet
Created by OnlineEducation.net

Google Public DNS es rápido

Como sabrán esta semana Google anuncio que abrió un DNS server publico.

Google Public DNS

Las ventajas de usar los servicios de Google las conocemos: Son gratis (la mayoría), tienen un uptime decente y lo mas interesante: son rápidos. Pero, como con todo anuncio de una compañía grande, surgieron en internet un por de dudas:

  • ¿Que información guarda Google sobre el uso que le de a su servidor de DNS?
  • ¿Porque no ayudaron a un proyecto como OpenDNS en lugar de crear su propio proyecto.
  • Google tiene control sobre tantas cosas ya (email, búsquedas, publicidad) que empieza a asustar un poco.

De hecho en sitios como cgisecurity salieron serias criticas, todas relacionadas con la cantidad que de información que le damos a Google, ya que esto les permite hacer un perfil sobre el uso que le damos a internet, aun en sitios que no tengan Google Adsense/Analytics.

La conclusión a la que llegaron algunos bloggers es que a Google le interesa que Internet sea mas rápida, ya que esto les permite imprimir mas banners y ganar mas plata.

Así que me decidí a investigar un poco que tan rápido es Google Public DNS.

Encontré varios artículos criticando la velocidad del servicio, diciendo que no era tan rápido. Pero no me convencían así que decidí hacer mis propias pruebas con nslookup y para mi sorpresa, al menos en mi ISP, Google Public DNS es 5 veces mas rápido que OpenDNS (el cual ya era el doble de mas rápido que mi ISP).

Después de usarlo un par de horas en mi desktop decidí pasar la red de mi casa a este servicio.

En mi caso es fácil, uso un router wifi Linksys WRT54GL que tengo flasheado con DD-WRT (un firmware opensource que me brinda opciones como conectarme a la VPN de la oficina) así que lo único que tuve que hacer fue ir a la opción de Commands, dentro del menú Administration, escribir el siguiente script:

echo “nameserver 8.8.8.8” > /tmp/resolv.dnsmasq
echo “nameserver 8.8.4.4” >> /tmp/resolv.dnsmasq
sleep 1
killall -HUP dnsmasq

Y clickear sobre “Save Firewall”.

Para no tener que reiniciar el router simplemente corrí esos comandos a traves de la interface SSH del mismo.

Conclusión: La velocidad se nota.

Evita linuxera

Hace pocos días descubrí el blog de “Si Evita estuviera viva seria Linuxera”.

Es un blog sobre Linux y peronismo (?) que lleva varias explicaciones de distintos temas con algo de humor, parafraseando a un compañero de trabajo: Es como ver “Peter Capusotto y sus Videos” pero hablando de vim.

Hoy justo Evita esta presentando Python, acá un fragmento:

Es por eso que hoy les traemos la noticia que cambiará la manera de trabajar, el desarrollo está golpeando las puertas de la Patria y es tarea del movimiento  obrero, abrir esa puerta para convertirlo en una realidad nacional. A partir de hoy, queridos compañeros, desde este mismo lugar, tendremos un curso de Python, el lenguaje de programación Justicialista, el que ejerce la tercera posición entre  Java y  .net, los dos males de estos tiempos.

Espero que les guste el blog. Yo me estoy divirtiendo leyendolo.

¿NetBSD rapido?

Yo tengo la costumbre de pensar así:

  • Desktop: Linux (Gentoo, Fedora, Ubuntu o Arch)
  • Server: Linux (Gentoo o Debian) o FreeBSD.

Pero este benchmark me lleno de sorpresas:

Benchmark de MySQL sobre el mismo hardware en distintos OS con SMP.

¿NetBSD con SMP mas rápido que el resto? Voy a tener que hacer algunas pruebas…

Namespaces

Hoy en el blog de Christopher Lenz salio un interesante esbozo de articulo sobre los namespaces y como la mayoría de los lenguajes de programación manejan mal ese concepto.

El ejemplo en C# es clarisimo:

using System;
using System.IO;

public class HelloWorld {
public static void Main(string[] args) {
Console.WriteLine("Hello, World!");
}
}

¿De donde sale Console? Y no queda en C#, hoy por hoy estoy trabajando mucho en C++:

#include <iostream>

int main()
{
std::cout << "Hola mundo!" << std::endl;
}

¿De donde sale std? Y lo que es peor, muchos include te pueden llenar a std de distintas cosas.

La parte que mas me gusto es del articulo es esta:

Resulta que los lenguajes en los que estoy actualmente interesado entienden esto (mas o menos) bien: Python, Erlang, Go, y (aunque no es un lenguaje) node.js.

+1 Python otra ves.