Link of the day: Open Source Project Management

I spend the first days of this week searching for a good issue tracker with hosted services. Unfortunately, I couldn’t find any that wasn’t paid, or that didn’t force you to share your code with everyone and/or upload the code as well. I ended up using Flyspray, a PHP-based issue tracker, even when I would have preferred another options (like Bugzilla or Trac).

Anyway, that led me to a Wikipedia page called Comparison of Issue Tracking Systems, which is a good way to make a decision based on what you need and what you can use/pay.

Of course, there’s also a Comparison of Project Management Software, and among the products listed there, a lot of them are open source and free. Masters In Project Management (Mr Master) also makes a review of the Top 25 Open Source Project Management Apps.

I’m a managed little skunk.

(Read more →)

Link del día: OpenGraph Protocol

Hace muy poco tiempo fue que en f8 se anunciaron varios de los proyectos de Facebook para el futuro de la web. Causaron conmoción noticias como la colaboración de enormes empresas (por ejemplo CNN, MTV, Microsoft) y más específicamente, la presentación de OpenGraph, que intenta volver social a la web completa.

Como tal, ya podemos comenzar a utilizarlo. La especificación del OpenGraph Protocol posee un sitio propio que sin duda se irá expandiendo en detalles a medida que pase el tiempo. Hasta que Facebook reconozca a los recursos sociales que existen en la web, muy seguramente nos sirva utilizar integración social de otro tipo en nuestras websites. Por supuesto, no es el único tipo de integración que podemos usar, y para eso podemos interiorizarnos dentro de la documentación para desarrolladores de Facebook.

Sobre OpenGraph, también existe una pequeña presentación que Mark Kinsey publicó en la web Facebook Developers, titulada After f8: Implementing the OpenGraph protocol around the web. Muy simple y muy claro.

Soy un zorrinito social.

(Read more →)

Link del día: Entendiendo REST

Un tiempo atrás tuvimos una lectura que trataba de una visión simple de la arquitectura REST. Sin embargo, hay mucho más por comprender en esta arquitectura.

En este caso me dediqué a leer el artículo de Ivan Zuzak, llamado Why understanding REST is hard and what we should do about it (Por qué comprender REST es difícil y qué deberíamos hacer sobre eso). El artículo es extenso en demasía, pero quisiera dejar alguna suerte de resumen para que no tengan que lidiar completamente con él sin conocimientos previos:

El artículo explica cómo bajo una interfaz simple como REST se esconde una arquitectura muy difícil de modelar. Un sistema que tiene sus puntas desconectadas de a momentos y todavía debe mantener estados puede ser representado con distintos modelos matemáticos, pero ninguno se ajusta a la exactitud. Una vez que se logre modelar y generar una representación formal de esta arquitectura, pueden establecerse estándares que facilitarán el avance. Más que esto, la existencia de un modelo matemático preciso permitirá predecir sus limitaciones y sus capacidades.

Como extra, la especificación de una arquitectura correcta permitirá también concebir buenas prácticas y conceptos de seguridad para la utilización de este tipo de comunicación que de a poco logrará volver a la web semántica.

Soy un zorrinito semántico.

(Read more →)

Link del día: Cómo esconder passwords públicamente

últimamente se ha puesto de moda una buena idea que la gente de PasswordCard ha propuesto. PasswordCard es la idea de tener una tarjeta de colores y símbolos y una combinación de letras mayúsculas, minúsculas y números.

¿Cuál es la idea? Nosotros podemos elegir nuestro password de cualquier punto de la tarjeta. Podemos recordar en dónde se encuentra gracias a los colores y a los símbolos de la primera línea. (Por ejemplo, rojo-triángulo, o celeste-dólar.) Dicha combinación nos dará un símbolo con el que podemos comenzar a escribir nuestro password, copiando los que sigan a continuación. Sólo tenemos que recordar dicha combinación, que es ciertamente más fácil de recordar que el password en sí, y con esta tarjeta nos podemos acordar.

La tarjeta la podemos llevar a todos lados, porque, por supuesto, nadie más que nosotros sabe la combinación con la que comienza nuestro password, de forma que esta tarjeta puede mostrarse públicamente sin miedo a que roben tus passwords.

¿Qué ocurre si perdemos nuestra tarjeta? Podemos simplemente volver a imprimirla. Existe un código hexadecimal que identifica a cada tarjeta. Podemos guardar este código por cualquier problema, para reimprimir nuestra tarjeta si es que la perdemos o se arruina. Por supuesto, el código no indica para nada cuál es el password que elegimos, de forma que aún así no lo estaremos revelando.

Como consideración extra, suponiendo que nuestra tarjeta cayera en malas manos, cada una de las tarjetas tiene 29 columnas y 8 filas. Esto significa, nuestro password podría comenzar en 232 posiciones distintas. Asumiendo que nuestro password sólo se utiliza hasta el final de la línea, existen sólo 232 passwords posibles para esta tarjeta, con lo cual, sería fácil para cualquiera crackear nuestro password. Suponiendo que eligiéramos un límite que no es el final de la tarjeta, tendríamos 8 × 29 × 28 × 27 … × 2 × 1 = 8 × 29! ≈ 70 × 1022 combinaciones. Ya es un poco más seguro. Si comparáramos contra cualquier password de la misma longitud que inventáramos nosotros (es decir, sin uso de una tarjeta), utilizando los mismos caracteres, la combinación sería de 62 (10 números + 26 minúsculas + 26 mayúsculas) × 62… × 62 = 6229 ≈ 951, (y esto es, sin considerar la incertidumbre del tamaño del password) con lo que, en el fondo, la buena memoria está más segura que las tarjetas.

Pero para aquellos que, como yo, tengan dificultad en recordar este tipo de cosas, sin duda las tarjetas serán de buena utilidad.

Soy un zorrinito tarjetero.

(Read more →)

Link of the day: Graphics Programming Black Book

I don’t know if you agree with me, but graphics programming is something I always wanted to learn – and will eventually do it someday. For that, we need a book that is as explicative as possible and detailed, going through every concept and being insightful on the concepts. Luckily, I found a web holding a full online version of Graphics Programming Black Book, a full featured book with really deep explanations and concepts.

It goes through optimization techniques and source code examples, even with 3D rendering and known examples as Doom or Quake graphic engines. You may see that the book is quite extensive, and good it is, for 70 short chapters we can really grasp the concepts and get hands to work on C++ and ASM in order to make our graphic programming.

I’m a graphic little skunk.

(Read more →)

Link del día: HTML5 Ilustrado

Nunca viene mal otro link extra sobre HTML5, sabemos que es algo que ya está empezando a tomar fuerza, y de alguna forma todavía es novedad. Mientras esperamos que se decida qué es lo que va a ocurrir con los códecs de video, podemos ir entrenándonos y aprovechando otras features que gran cantidad de navegadores ya aprovechan.

Dejando de lado los links que ya hemos publicado sobre el tema, como HTML5 Test o Dive into HTML5, hoy podemos ver una presentación sobre HTML5 hecha en HTML5, demostrando en vivo y en directo gran parte de las bondades de este nuevo lenguaje, junto con CSS3. El link está en ApiRocks, bajo el título de HTML5 Presentation. Y como si no fuera poco, tenemos una gran variedad de sites mostrando las cosas que se pueden hacer con él.

¡No nos quedemos atrás!

Soy un zorrinito5.

(Read more →)

Link del día: jStorage

Seguro ya aprendimos que todo lo que comience con una jota minúscula viene relacionado con la familia de jQuery. Y aunque no sean todos los casos así, este sí lo es.

jStorage es un plugin de jQuery que nos permite aprovechar una de las bondades de HTML5, que es el uso de bases de datos a través de JavaScript. Si es que el navegador es viejo y el plugin no tiene la oportunidad de grabar nada, no hay errores de por medio, sino que simplemente al recuperar información veremos que no hay nada. Esto es bueno para lograr compatibilidad con muchos navegadores que puede que todavía no soporten HTML5 Storage o que sean versiones desactualizadas y, por ende, no lo soporte tampoco.

En el fondo es un tipo de almacenamiento de tipo key-value, algo a lo que seguramente estaremos acostumbrados desde el uso de cookies o parámetros, y siendo JavaScript e información de cliente, por supuesto, vamos a tener que tener muchos recaudos respecto a la seguridad y el tipo de información que vamos a guardar.

Lo bueno es que ya podemos proveer de mucha interacción del lado del cliente, y con datos semi-persistentes, lo cual nos amplia un poco el horizonte de opciones, en donde no necesariamente necesitamos ir al servidor para que la sesión no se pierda por accidente.

Soy un zorrinito almacenado.

(Read more →)

Link del día: HTML5 Test

Ya hace tiempo venimos mencionando lo nuevo que se viene con HTML5 y CSS3, de cómo van a hacer más fácil la vida de los usuarios de internet, de cómo van a hacer más fácil la vida de los desarrolladores y diseñadores web, de cómo van a volver a la web un entorno semántico de información, etc. Sabemos también que aunque estamos algo lejos todavía de que el estándar se apruebe completamente, muchos navegadores ya han comenzado a implementar sus características. Si mal no recuerdo, fue noticia hace bastante tiempo ya que Firefox comenzó a aceptar los tags

Si queremos verificar cuánto acepta de estas nuevas tecnologías nuestro navegador en cuestión, no tenemos más que visitar la página del HTML5 Test, que nos dará un puntaje para nuestro navegador, dependiendo en la cantidad de elementos que soporte. Yo ando usando Chrome 5.0 y me da un puntaje de 142. Y a ustedes?

Soy un zorrinito 5.

(Read more →)

Link of the day: Google Security

Well… sort of. It’s not anything new these days, but a while ago, Google published it’s own security testing tool for website security testing, called Skipfish. Of course, this is not the first tool that Google releases for this purposes, as many related are already out there (like ratproxy, the Browser Security Handbook, and so on…). However, the new thing today is skipfish.

Skipfish is an active website scanner that will test the web applications for XSS, SQL Injection, Shell injection, XML Injection (that one’s new for me), SSL, insecure cookies, correct MIME headers, server errors, invalid links… etc. The complete list is enormous, and one of the main things is that this tool is being developed on C for high performance. It claims to be able to run with 2000 requests per second on remote servers (of course, if the servers answers in time).

I haven’t had the chance yet to give it a try but I probably will these days. These are the kind of reports that you may see from it, see a skipfish screenshot.

This all came from Google’s Online Security Blog. It is worth a reading, updates are not too much common nor too much big, so you can keep easily up to date with your favorite RSS reader.

I’m a secure little skunk.

(Read more →)

Link del día: El castor ocupado

Para quién no lo sabe, una Máquina de Turing es una máquina conceptual que consta de una “cabeza” sobre una “cinta” que puede moverse a izquierda o derecha, y leer o escribir. Se supone que con esas cuatro operaciones básicas, la máquina conceptual de Turing es capaz de realizar cualquier algoritmo computable existente. Sí, desde sumar dos números hasta calcular los dígitos de π. Desde revertir una cadena de texto hasta ser un servidor web (aunque lo veo como poco eficiente para eso). Para diagramar los algoritmos que ejecutan, se utilizan estados sobre los pasos que están ejecutando, y lo que se puede leer o escribir trata de un alfabeto en particular (es decir, algún conjunto de símbolos que se le llama alfabeto de esa máquina).

Lejos de ser una metáfora a la publicidades de pasta dental, el Castor Ocupado es un algoritmo para máquinas de Turing que, dada una cantidad de estados y una cantidad de elementos de alfabeto, debe correr tanto tiempo como sea posible para luego detenerse. ¿Qué significa esto en términos de computabilidad? Significa que debe de ser, bajo una cantidad limitada de condiciones, el algoritmo más largo no-infinito, lo cual, de alguna forma es un desafío para encontrar aquello que tome más tiempo de computación y no sea interminable.

¿La razón? No es pura búsqueda por el buscar como muchos pueden suponer (y como muchos lo buscan, por simple diversión), sino que detrás de esto existe la teoría de la computación, en cuanto a qué algoritmos son computables (por ejemplo, parece que los que se encuentran sí, pero el algoritmo para encontrarlos no), qué orden de computación tienen, y seguramente también se relaciona con el tipo de problemas que son computables y no computables, pero dejaré eso para el futuro.

Hubo alguien más, Peteris Krumins, que le encontró una veta artística. Por un lado, hay un video en Youtube de una máquina de Turing (construida) corriendo el castor ocupado, y por otro lado, Peteris mismo hizo un programita que va dejando un archivo con el estado de la cinta a medida que la máquina va ejecutando, y de ahí, generar una imagen en donde se vea gráficamente. En su blog, en el artículo del Problema del Castor Ocupado, habla de los algoritmos y los resultados que obtuvo ejecutándolos. Curiosas las imágenes, e impresionante la imagen de 5 estados y2 símbolos, para verla completa hace falta una bueeeeeeeena pantalla.

Soy un zorrinito ocupado.

(Read more →)