Main Content RSS FeedUltima entrada

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.

Entradas recientes

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.

Como obtener el Window Handle (HWND) de una ventana en Windows y 4 momentos epicos de MSDN

La documentación de Microsoft para desarrolladores es mala. Esta es la conclusión a la que llegue después de ver que en MSDN no sabían unicode.

Pero lo que mas gracia me causa de MSDN es cuando documentan pequeños workarounds para las limitaciones de sus productos. Este es un ejemplo: How To Obtain a Console Window Handle (HWND).

Un HWND se utiliza para acceder a propiedades de la ventana, el problema es que en viejas versiones de la API de Windows no había un método para listar las ventanas de una aplicación que retornara el HWND de estas, así que Microsoft surgió con este hack:

  • Llame a GetConsoleTitle() para guardar el título de ventana de consola actual.
  • Llame a SetConsoleTitle() para cambiar el título de la consola a un título único.
  • Se actualizó Sleep(40) de llamada para garantizar el título de la ventana.
  • Llamada a FindWindow (NULL, uniquetitle) para obtener el objeto HWND esta llamada devuelve el HWND–o NULL si no se pudo realizar la operación.
  • Llamada SetConsoleTitle() con el valor se recupera del paso 1, para restaurar el título de ventana original.

Plop!

¿Soy al único que le parece un hack horrible?

Otros momentos épicos de MSDN:

Bocas sucias

Insultos en el código fuente por lenguaje de programación.

Así es como me vengo a desayunar que los programadores que mas insultos escriben en su código fuente son los que programan en Perl. ¿Alguien puede culparlos?

Igual C viene cerca, es mas, hay un proyecto que se dedica a contar cuantas veces aparece la palabra “fuck” en cada una de las versiones del Kernel de Linux.

Kernel Fuck Count al 2009-11

Completamente OT pero otro dato de color para el día: ¿Firefox se usa en mas países de los que hay en el planeta?

¿Quien llamaria a una funcion bugfix?

PHP bugfix

¿Quien en su sano juicio llamaría a una función bugfix()? Solo en PHP, un lenguaje que ni siquiera sabe sumar.

Que pena que no se pueda linkear a contenido de Code Complete 2, ese libro es la mejor referencia sobre programación que existe.