Link del día: Academia Virtual de Microsoft

Todos saben lo mucho que me apasiona poder encontrar lugares online en donde se den cursos gratuitos de forma medianamente seria, con profesionales que sepan del tema que hablan, y a veces hasta con exámenes que permitan evaluar y certificar que uno sabe lo que estudió. Mi primera aproximación a uno de estos fue con el programa Desarrollador 5 Estrellas de Microsoft (del cual todavía estoy debiendo un par de exámenes), y luego Sun Learning Connection (el cual vi muy completo pero nunca tuve tiempo suficiente de hacer cursos). Ahora me encuentro con otro más, aparte de la cantidad de links que ya he provisto antes, como el proyecto de Academic Earth, o la compilación de Free Lectures, pero no es el caso de ellos.

En este caso, se trata de la Microsoft Virtual Academy, otro de los proyectos educativos de Microsoft para mantener a la gente informada y capacitándose sobre distintas temáticas, muchas, por supuesto, relacionadas a las tecnologías que ellos desarrollan. Está relacionado al resto de la red de TechNet que ellos han creado, por lo cual todos los estudios que desarrollemos con Microsoft se van relacionando a nuestro Live ID, que utilizaremos en todos estos servicios por igual para identificarnos.

Soy un zorrinito alumno.

(Read more →)

Link del día: eBooks ténicos, viajes, información y más

De casualidad me crucé con un link de un sitio llamado Mic-ro.co(s)m (el paréntesis es porque la URL no tiene la s), que es básicamente una colección de links de este lugar, en alemán. Sin embargo, la sección que más famosa se hizo de este sitio prácticamente estático es la sección de eBooks, que ofrece una buena cantidad de eBooks para bajar y leer (o para leer online) sobre distintas temáticas:

  • C y C++
  • Bases de datos y SQL
  • Patrones de diseño
  • Diseño Gráfico y Diseño de UI
  • HTML y JavaScript
  • Java
  • Matemática
  • Redes e Internet
  • Sistemas Operativos
  • Seguridad y Criptografía
  • Smalltalk
  • Ingeniería de Software
  • Teoría de la Computación e Inteligencia Artificial
  • XML
  • Libros de referencias de informática
  • Temas misceláneos de informática
  • Periódicos online (sobre informática)
  • Guías cortas
  • Libros no relacionados a la informática (hay un poco de literatura, enciclopedias, nutrición, viajes, economía, historia, religión, física, oratoria, etc…)
  • y links a otros lugares…

Y por si no fuera poco con eso, hay una buena colección de links en la homónima sección, sobre temas variados también, y si queremos una colección extra de links con cosas relacionadas a los viajes, podemos visitar la sección viajes de este sitio.

Pero por último yo quería mostrar algo que me hizo acordar a los viejos metabuscadores de sitios que alguna vez todos usamos. Si queremos revivir esa nostalgia, podemos usar el metabuscador de mic.ro-cosm.

Soy un zorrinito linkeado.

(Read more →)

Link del día: Compartir escritorio en dos pasos

Alguna vez comenté de los beneficios de un sistema llamado Crossloop, que tenía la ventaja de ser un programita que bajamos, instalamos, y en dos clicks ya estamos compartiendo nuestro escritorio. Esto hacía muy fácil la posibilidad de ayudar a alguien o brindar servicio técnico a distancia (y de hecho, es el uso primario que se le está dando y lo están mejorando para avanzar en esa dirección), pero a veces no necesitamos tanto control, sino solo poder mostrar la pantalla en tiempo real a alguien más, y queremos alguna herramienta que solo con un click, ya tengamos funcionando eso.

Para eso tenemos una nueva tecnología que LogMeIn hace pública, LogMeIn Express. Esta afamada empresa con sus productos de administración remota ahora nos permite bajar un programita de 700 k, que solo con ejecutar ya estamos compartiendo nuestra pantalla, y con pasar un código numérico a alguien más, esta persona no tiene más que ingresar esos dígitos en esa web y ya estará viendo nuestra pantalla en tiempo real. No sólo eso, tambien podemos darle el control y que esta persona maneje nuestro teclado y nuestro mouse, permitiéndole trabajar por nosotros, mientras nosotros miramos lo que ellos hacen.

En fin, lo que me interesa destacar de esto es la simplicidad: un click, y funciona. Así deberían de ser las cosas.

Soy un zorrinito exigente.

(Read more →)

Link del día: Gráficos con Google

Hace un tiempo anduvimos en búsqueda de un buen plugin / framework / herramienta web que me permitiera utilizar gráficos en una aplicación web que nos encontrabamos desarrollando. Pasamos por varias opciones, algunas de las más interesantes siendo jqPlot para jQuery, o flot (también para jQuery), pero terminamos decidiéndonos por OpenFlashChart.

Sin embargo, encontré luego una opción muy útil para sitios estáticos que quizá necesiten solo un poco de HTML, o sitios dinámicos que no quieran incorporar la complejidad de generar gráficos en su código. Esta opción es la que Google Chart API ofrece. Y es tan fácil como hacer un link a una imagen que tenga ciertos códigos que van a determinar el gráfico que mostremos.

Opciones hay muchas, distintos tipos de gráficos, colores, opciones, aunque siendo imágenes, les falta algo que las otras opciones tienen, que es la interactividad. Pero nuevamente, si lo importante es el diseño simple y la tecnología a usar (o tiempo) es limitada, esta puede ser la mejor opción.

Soy un zorrinito graficado.

(Read more →)

Link del día: URLs cortas de verdad

Para algunos servicios en donde se comparten links, como redes sociales, o como simple comodidad para compartirlos, es muy útil que las URLs sean acortadas. Es decir, que en lugar de tener un http://www.example.com/posts.php?postid=2313&searchterm=search&l=en, podemos tener algo como http://bit.ly/6bCxjl, que lleva al mismo lugar. No sólo eso, muchos servicios de acortamiento de URLs (como Bit.Ly, que acabo de mencionar), ofrecen URL-tracking, que nos permite saber cuánto o de dónde se han usado las URLs que hayamos compartido.

Más allá de eso, quería comentar de un servicio que vi funcionando la semana pasada (ya no, pero tengo esperanzas de que vuelva a funcionar) llamado http://to/. Sí, tal cual, no tiene nombre de dominio. Este acortamiento de URLs parece que lo introdujo el gobierno de Tonga (habrán sido ellos realmente?) y podría acortar nuestra URL de ejemplo a algo como http://to/EVFaj. (No la prueben, no funciona, incluso aunque redireccione, no va a ningún lado).

Pero hasta que ese funcione, podemos probar cualquier cantidad de otros servicios disponibles hoy por hoy, algunos ya muy conocidos:

Cabe destacar que algunos consideran que las URLs cortas “rompen” la internet, porque como usuario, uno no sabe a dónde va a parar, y como bot (como los de Google que surfean la internet), se encuentran con que en realidad los links llevan a un lugar que no es el destinado (ya que estos en realidad funcionan haciendo redirecciones). Para revertir estas situaciones existen servicios como Real-URL, LongURL, Untiny.me y PrevURL.

Soy un zorrinito acortado.

(Read more →)

Link del día: Tecnologías Web

Para cerrar la semana vamos a ver un poquito de nuevas tecnologías web que están aflorando desde hace un tiempo. Comencemos por CSS 3, HTML 5, SVG o Canvas, que son cosas que últimamente están ganando mucho la atención de los desarrolladores multimedia. La pregunta es: cuándo sabremos que esto está disponible para usarse y en donde? Para responder de forma fácil esa pregunta es que tenemos a una aplicación web llamada When can I use…, en donde podemos filtrar según nuestros deseos de compatibilidad y ver qué tan cerca estamos de poder usar estas posibilidades sabiendo que será soportado por el público al que apuntamos.

Como extra (y compensando el link del día de ayer que faltó), les dejo una guía muy didáctica, detallada al extremo llamada Creating a Web App from Scratch. Eso es, cómo se construye una aplicación web, desde que se tiene la idea hasta que se termina y se publica. Muy interesante, y con muchas buenas ideas para aprender cómo organizar un proyecto de este tipo.

Soy un zorrinito web.

(Read more →)

Link del día: TODOs pero con onda

Creo que ya éramos varios los que estábamos en busca de alguna aplicación al estilo agenda, pero sin horarios (es decir, no es una agenda). Algo al estilo de listado de cosas pendientes, que pudiéramos acceder y actualizar de distintos lados. Que fuera simple, que fuera fácil de entender, que no haya que rellenar muchas cosas.

Finalmente encontré algo que se acerca muchísimo a eso que buscábamos y, creo yo, que lo voy a estar usando para poder actualizar el listado de cosas pendientes. La idea es básicamente no olvidarse de las cosas que uno debe hacer, no importa exactamente (o no importa tanto) cuándo se tengan que hacer, sólo cuáles son y cuáles ya están hechas.

Les dejo que visiten entonces a Teux Deux, una aplicación web encargada de eso. (via NQB, via swissmiss). Será el nombre una forma rara de decir “To Do”?

Soy un zorrinito atareado.

(Read more →)

Sistemas Jenga

Suelo decir muchas tonterías a modo de chiste, pero de tanto en tanto, alguna de ellas tiene un poco de verdad. Hoy, hablando de un sistema del que estoy encargado (entre otras personas) de mantener, pensé que estaba muy difícil su actualización, y lo llamé un Sistema Jenga. ¿Qué es un sistema Jenga? Es un sistema para el cual agregar una pieza hace que peligre toda la estructura de su programación.

Aquí participan varios conceptos que alguna vez he mencionado. Uno de ellos es, por supuesto, la arquitectura o la estructura con la cual se ha programado, diseñado y modelado el sistema en cuestión. Es obvio que una buena arquitectura, o una pensada en torno a futuros cambios, pueda ser lo suficientemente flexible como para aceptar futuros nuevos requerimientos sin necesidad de rediseños mayores o cambios drásticos en la programación anterior. Pero ese no es el concepto que más me interesa discutir hoy.

Otro de los conceptos es el hecho de cuál es el propósito de una pieza de software. Lo considero un punto incluso filosófico, porque está claro que no hay un sistema multipropósito, que realice todas las funciones que podamos llegar a necesitar, y creo que no debería haberlo tampoco, porque sería infactible que dicho sistema se adapte a todas las situaciones particulares que puedan surgir. Por tanto, el riesgo que tal hipotético sistema introduciría en nuestros procesos, sería catastrófico. No haría falta mencionar tampoco, que la programación/diseño/análisis de ese sistema se aproximaría a lo altamente infactible. Muchos sistemas operativos ya proveen de estas posibilidades gracias a la integración de muchas pequeñas herramientas, pero no es técnicamente parte del mismo sistema, a pesar de que pueden llegar a interactuar de forma muy íntima.

Entonces, a medida que pasa el tiempo, es muy factible que los requerimientos para un sistema se vayan modificando. Muchas veces los cambios son pequeños, pueden ser cuestiones de usabilidad o cuestiones de performance. Incluso puede que haya una modificación grande en el sistema, agregando nuevas funcionalidades y hasta quitando funcionalidades obsoletas, pero el objetivo o el propósito del sistema se mantiene, hace lo que siempre debió hacer.

** ¿Qué pasa, entonces, cuando cambia el enfoque de negocios y los requerimientos del sistema pasan a tener un propósito distinto del original?**

Yo creo (aunque es mi opinión personal) que en ese caso el sistema se vuelve obsoleto, y pierde su razón de ser. Es entonces en donde el mantenimiento de esos sistemas para acomodarse a los nuevos requerimientos puede ser algo dramático, porque se está intentando usar algo que ni siquiera estaba pensado de la forma que se necesita para algo que ni siquiera estaba pensado que se iba a necesitar. Casos tan drásticos son raros, pero son factibles de ocurrir. Y creánme, ocurren.

{ :align-right}

Esto no es nada nuevo tampoco. Se sabe, y es algo conocido como “la curva de la tina de baño” (o su nombre en inglés “Bathtub curve”) que el ciclo de vida de un sofware, o la utilidad que el mismo proporciona a sus propósitos es poco al principio, hasta que los usuarios logran sacar el máximo provecho de los sistemas, hasta que los demás sistemas lograron integrarse de forma correcta al mismo y hasta que los bugs iniciales hayan sido corregidos. En la etapa media es el ápice de la utilización de esos sistemas, pero pasado el tiempo, es cuando el sistema ya deja de satisfacer las necesidades del usuario.

Aquí surge la discusión de qué sucede con la curva en el final. Para productos comunes (por ejemplo, elementos mecánicos) el desgaste producido comienza a introducir nuevas fallas que de a poco vuelven al producto inusable. En el software, es fácil reacomodar la lógica del mismo y entonces, adaptándose a las nuevas necesidades, cabe la posibilidad de que se mantenga en su estado de mejor uso. Así, la curva finalizaría con una forma de sierra, en donde se observarían pequeños picos (dado que al usuario le deja de resultar útil el sistema) y tras dicho re-acomodamiento, una planicie.

Sin embargo, la manutención de un producto a través de la eternidad no es algo factible, y quizá no es deseable tampoco. Aquí es en donde la otra opinión se asoma al respecto, diciendo que la vida de un software también se desgasta proporcionalmente al tiempo que estuvo activo, y, personalmente, creo que tiene sentido. Las necesidades a través del tiempo suelen cambiar muy drásticamente y, aunque una suma siempre haya sido una suma, las cosas tienden a simplificarse para el usuario y cuando un click antes hacía una suma, ahora debe realizar una estimación a futuro.

Y finalmente, otra cosa que quería mencionar al respecto, es la terrible necesidad del backward compatibility. Esto significa que a medida que vamos mejorando y agregando funcionalidades a nuestro sistema, necesitamos algunas veces tener compatibilidad con las versiones viejas de nuestro sistema. A veces es fácil, porque nuestro sistema puede ser una web application que no requiera de muchas entradas, y por tanto podemos cambiarlo todo sin necesidad de tener esa precaución. ¿Qué pasa si en cambio Microsoft, al implementar su nuevo formato de archivos de Office 2007 hubiera hecho inútiles los archivos de Office 2003 hacia atrás? ¿Qué pasa si en cambio cuando decidieron implementar IPv6 no hubieran tenido en cuenta que somos millones los que estamos actualmente usando IPv4 y que no podemos (o queremos) comprar nuevas placas de red en este momento?

Por eso, siempre es una cuestión a considerar, no hay ni blancos ni negros, pero siempre que un sistema debe mantener compatibilidad con sus versiones anteriores, se agrega complejidad, y de alguna forma es un requerimiento extra que nos impide avanzar con las modificaciones que quisiéramos hacer para avanzar con las nuevas funcionalidades del sistema.

Es entonces, en conclusión, en donde el mantenimiento de un sistema se vuelve algo tan pesado que quizá sería mucho más provechoso realizarlo de cero con las nuevas necesidades, y en donde la modificación del mismo lo hace peligrar cada vez más en su integridad, algo que a mí me gusta llamar Sistemas Jenga.

Soy un zorrinito jenga.

(Read more →)

Link del día: Cloud Computing Ecosystem

Hace no mucho hablamos un poco sobre la importancia y los beneficios del cloud computing, o la computación en la nube, como muchos quieren traducir el término. Volviendo sobre la idea, es el concepto de tener sistemas distribuidos para los cuales muchas computadoras físicas a lo largo y a lo ancho de internet están colaborando para un fin común. Puede que estas computadoras sean computadoras personales, o puede que sean servidores dispuestos a ese fin en algún lugar fuera de nuestro alcance.

Independientemente de eso, deberíamos saber que esto no es algo nuevo y que ya existen muchas plataformas y servicios disponibles gracias a esto, seguramente muchos de los cuales conocemos a través de grandes empresas como Google y Microsoft (no pensaron que Google Docs estaba en un solo servidor, o que las descargas de Microsoft estaban todas en el mismo lugar, verdad?). Pero en realidad existen muchos servicios variados de muchas empresas, algunos disponibles al público y otros no.

Para guiarnos en todo eso es que viene el link del día de hoy, llamado Cloud Computing Ecosystem, un “mapa” que nos muestra qué distintos servicios y para qué distintos fines están disponibles desde qué empresas y qué disponibilidad tienen al público. El mapa está dividido en tres partes verticales y tres horizontales. De las verticales, tenemos por un lado a los servicios disponibles públicamente, a los servicios pagos, y a servicios privados. De las horizontales, tenemos los tipos de servicios divididos según su uso: aplicaciones (ya pre-armadas), plataformas (para desarrollo de aplicaciones), o servicios de infraestructura.

Por último, cabe preguntarse por qué alguien armaría un mapa así (más allá de aparecer como nominado al link del día). La respuesta es que la empresa que lo mantiene, llamada Appirio, es una empresa que brinda soluciones informáticas e integración de sistemas utilizando una gran variedad de servicios en la nube de los cuales ellos dicen ser partners. De esta forma, podemos generar soluciones de negocios enteramente tercerizados en internet, en donde nuestra información estará disponible desde cualquier lado y (supuestamente) segura y accesible.

Soy un zorrinito nublado.

(Read more →)

Link del día: WPA Cracker

Si mal no recuerdo creo que fue Nano quién me compartió por Google Reader este artículo de Kabytes, en donde hablan de una aplicación web llamada WPA Cracker, una aplicación que tomando un archivo pcap de capturas de un wifi WPA, puede compararlo contra una enorme cantidad de palabras y combinaciones (gracias al cloud computing) y devolvernos el password en un pequeño tiempo.

El uso de esta aplicación es paga, no realmente mucho si es que tiene algún beneficio para nosotros la utilización de esa red, pero independientemente de eso, es una buena aproximación a la obtención de claves: no tiene por qué hacer todo el trabajo una sola máquina durante semanas, cuando varias máquinas alrededor del mundo pueden hacerlo en cuestión de horas o minutos.

Fuera de eso, la aplicación es interesante, también permite el crackeo por diccionario de archivos ZIP (sólo porque el público lo pidió), nuevamente también contra un diccionario enorme de palabras en inglés y en alemán.

Según cuenta el autor, es un esfuerzo mucho más grande pero mejor para resultar de esta forma porque utilizar rainbow tables (como las que tienen para bajar en Curch of Wifi) es un poco ineficiente, dado que para eso se necesita crear una serie de rainbow tables para cada ESSID de la red, con lo cual se vuelve impracticable la idea original del rainbow table: tener una solución pre-armada, por pesada que fuera.

El precio que se le pone al servicio es de 17 dólares si es que queremos utilizar el diccionario básico (136 millones de palabras) en modo half-cluster (es decir, la mitad de las máquinas disponibles trabajan), o 35 si queremos utilizar el clúster completo. Además, también se puede hacer una corrida contra un diccionario extendido (que no contiene al diccionario básico) con 284 millones de palabras. Realmente bastante como para que se haga en unos 20 minutos, verdad?

Cabe decir por último que este es otro de los trabajos de Moxie Marlinspike, un hacker que siempre interesado en la seguridad (y en la navegación [marina, no por internet], pero eso es otra cosa). Puede verse mucho más al respecto en su website, más personal que website, y más elegante que completo.

Soy un zorrinito cracker.

(Read more →)