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 →)

Link del día: Máquinas Virtuales

Es bien conocido que la virtualización es una herramienta muy poderosa que amplía vastamente nuestras capacidades de prueba y simulación sobre sistemas para los cuales no disponemos el hardware real – o el dinero equivalente. Hoy por hoy las máquinas virtuales pueden llegar a ser tan poderosas como máquinas reales (con obvias limitaciones) y satisfacer muy bien ciertas necesidades (hosting con administración remota, ambiente de pruebas, testing de stress, investigación, etc.).

El proceso de creación de una máquina virtual es igual (o a veces un poquito más complicado) que la configuración de una máquina real: instalar el sistema operativo, configurarlo acordemente, configurar la red, instalar los programas necesarios, configurarlos, dejar todo en un estado lo más performante posible y finalmente, algún retoque final que querramos, y sabemos que solo el sistema operativo ya puede tomar un buen par de horas que no quisiéramos tener que sacrificar.

Para eso la gente de VMWare Images y VirtualBox Images (via LuAuF) nos deja imágenes prearmadas para bajar, y por mi parte también encontré estas imágenes para Virtual PC (aunque expiran muy prontito). Podemos descargarlas a nuestro disco y una vez ahí, ya tenemos el sistema operativo pre-instalado y a veces con algunas aplicaciones (como es el caso de las de Virtual PC).

Soy un zorrinito virtual.

(Read more →)

Link del día: Google Closure

Hace ya algunos días que Google publicó sus Closure Tools, una serie de herramientas para trabajar con JavaScript eficiente y lograr mejorar la performance, velocidad y tamaño del código. Entre ellos se encuentran Closure Compiler, una suerte de compilador para JavaScript, removiendo código innecesario, mejorando el código existente y minimizando lo que queda. También está la Closure Library, una librería JavaScript pero versión Google, y por último, los Closure Templates, una serie de soluciones “pre-hechas” para elementos reutilizables de HTML y UI.

Ahora, todo esto llama mi atención desde un artículo que encontré llamado Google Closure: How not to write JavaScript, que al principio parecía ser una crítica vacía de estas herramientas, pero luego se llena de fundamentos y (aquí es lo interesante) muchos datos que la gente de Google saltó al momento de crear estas herramientas. Esos datos son los que nos permitirían a nosotros aprender de esos errores y mejorar nuestras propias prácticas. Hay en todos lados para aprender.

Soy un zorrinito JavaScript.

(Read more →)

A Tester's Guide to .NET Programming

Terminé hace poco de leer el libro A Tester’s Guide to .NET Programming, de Randal Root y Mary Romero Sweeney, un interesante libro aproximativo a .NET de unas 630 páginas.

Mi prejuicio de este libro, basándome en su título, era que iba a encontrarme con un libro que mostrara características propias de Visual Studio y de la plataforma .NET para llevar a cabo tareas particulares de testing. Seguramente, pensaba yo, me encontraría con nuevos conceptos de testing y nuevas características o nuevos usos de características existentes que me permitirían mejorar las metodologías que conozco para testing.

Desafortunadamente, no ha sido el caso. El libro, debo decir aún así, es realmente bueno, muy detallado y explicativo en sus puntos. La suposición que el libro hace es: tomemos como tester a aquél que quiere realizar testeos (más que nada de aceptación de usuario) sobre un determinado software, y basado en eso, el programa enseña programación en VB.NET y C# orientado a la utilidad de ciertas cosas.

A pesar de no haber cumplido con lo que esperaba, este libro es una joyita. Al poner un concepto tan poco desarrollado sobre testing, nos permite utilizar este libro como un manual para aprender a programar en ambos lenguajes, planteando al testing como un ejercicio práctico que desarrollaremos a lo largo de toda la lectura. Y esto mismo es interesante, porque no solo tiene una aplicación práctica muy directa – cosa que muchos estudiantes de un lenguaje siempre quieren ver prontamente – sino que es fácil de entender y de sobrellevar.

El libro comienza con conceptos algo vagos de la programación, solo mostrando que con determinadas líneas en determinado lugar podremos lograr cierto resultado. Avanzando más, de a poco nos introducen a las clases, métodos, conceptos de orientación a objetos y reutilización de código. No llega a niveles más avanzados como la creación de frameworks para generar testware más complejo, pero se para a un paso de eso, y lo mantiene simple. Esto nos permite seguir el libro sin necesidad de demasiada atención, en donde sabemos que la información no está condensada sino explicada de formas que son fáciles de comprender, llenos de ejemplos, llenos de ejercicios prácticos y todo eso nos genera el impulso de seguir avanzando.

Como tal, resumo, este libro no tenía lo que yo esperaba encontrar, pero ha sido un muy buen hallazgo aún así.

Soy un zorrinito .NET.

(Read more →)

Link del día: Freenet

Freenet es el nombre de un proyecto (no del todo nuevo) que es tan ambicioso como para querer lograr una nueva internet, libre de restricciones y con pura anonimidad. La idea es que internet, en lugar de funcionar de forma servidor-cliente, funcione de una forma descentralizada, en donde nuestros contenidos pueden estar en cualquier lado, y donde cualquiera puede accederlos sin saber a dónde accede o cómo se está llegando ahí.

El proyecto de Freenet quiere entonces una distribución de la información totalmente libre, independientemente de las barreras legales que las distintas políticas apliquen, creando el concepto de una “internet” con una legislación independiente de la legislación que tengan los países.

No sabemos qué habrá ahí adentro, seguro que muchos lo están utilizando para lo más ilegal que se les ocurra, pero fuera de eso, el proyecto no deja de ser ambicioso y una idea muy interesante. Como toda gran idea, es un arma de doble filo.

Soy un zorrinito libre.

(Read more →)

Link del día: Chrome Inspector

Para aquellos que usamos Google Chrome (Safari también aplica), seguro ya sabemos que tenemos una sección llamada Developer Tools en donde podemos trabajar con el código fuente de una página, los estilos CSS y demás. Pero si es que no le hemos prestado mucha atención (yo no lo había hecho), tenemos muchísimas herramientas detalladas para trabajar con los sitios y no estaría bueno desaprovecharlas. Para las últimas features, aclaro, hace falta la versión del Developing Channel de Google Chrome, o el nightly build de Safari. De todos modos, tarde o temprano serán parte de alguna versión estable.

Con lo primero que me crucé es con el blog de BogoJoker, uno de los desarolladores involucrados en este tema, en donde cuenta varias características amigables al usuario del visor de HTML, del visor de propiedades CSS, y cómo editarlos. También trabajaron un poco con el resaltador de sintaxis para esas secciones, y otros arreglos menores. De ahí él linkea al blog de WebKit en donde podemos encontrar información más detallada sobre varias de sus características y cómo usarlas: la interfaz, la consola, cómo editar HTML, cómo editar CSS, cómo usar el panel de Recursos, cómo debuggear Javascript, cómo hacer profiling de sitios (Chrome agrega snapshots de memoria), cómo jugar con las bases de datos de HTML5, y la búsqueda.

Sabemos que todo esto está en desarollo y todavía está lleno de bugs, pero eso no hace que sea terriblemente útil y que podamos sacarle provecho. Para más ayuda sobre cómo hacer ciertas cosas, check out the enclosed instruction book, o checkeen los resultados de Youtube.

Soy un zorrinito cromado.

(Read more →)

Link del día: Java VisualVM

Gracias a un artículo de TaranFX me enteré de algo que, si bien no es nada nuevo, es terriblemente útil para todo desarrollador de Java. Se trata de una aplicación que Sun distribuye llamada VisualVM, que, básicamente, es un manager de aplicaciones y profiler de datos, muy completo, muy amigable y muy fácil de usar. Solo tenemos que tener la máquina virtual de Java instalada y tras eso, podemos bajarnos esta aplicación y ponerla a funcionar, desde el sitio oficial.

También la podemos integrar con algunos entornos de desarrollo (vi por ahí mencionados a Eclipse y IntelliJ IDea), o podemos incluso agregarle plugins para mejorar sus capacidades. Algo sin duda utilísimo para el desarrollador / tester Java.

Soy un zorrinito de café.

(Read more →)

Link del día: Geo-API

Geo-API es un servicio (por ahora gratuito) que se encuentra en estado alpha de desarollo, que básicamente nos permite obtener información geolocalizada basándose en un punto de latitud y longitud y cosas de interés que puedan estar a su alrededor. Esto incluye negocios, lugares turísticos, atracciones, etc. Podemos entonces obtener información que puede ser muy útil para el usuario de alguna aplicación (o para nosotros mismos) solo desde el punto en donde esté parado este usuario. Algo totalmente valioso para aplicaciones móviles.

Como si fuera poco, el proyecto del SDK (no el fuente) se encuentra en Google Code, que incluye el código de varios demos y de un SDK para programar en iPhone. También hay algo de documentación allí sobre el uso que se le puede dar.

Por último, también tenemos varios demos online funcionando, en la sección Product & Demos del sitio oficial.

Soy un zorrinito geolocalizado.

(Read more →)

Link del día: Mejorando un poquito esa programación

Aquellos que trabajamos con C# sabemos que de a poco el lenguaje se está convirtiendo en algo que tiene otro punto de vista sobre la programación. No es tan estructurado como programación orientada a objetos, atributos, propiedades, métodos, sino que entran a aparecer algunas cosas más, conceptos de la programación funcional. ¿Qué es esto? ¿Cómo aplicarlo? Podemos dejarnos llevar por este artículo llamado Functional Programming for Everyday, que nos cuenta de qué forma podemos ir asimilándolo a nuestras tareas de programación diarias. Si eso no nos alcanza tenemos otras introducciones más simples en Functional Programming in C# (Part I: Is it worth your time? y Part II: High Order Functions). Pero si aún así se quieren quedar con un ejemplo más práctico, pueden ver el de Introduction to Functional Programming in C#.

Si en cambio estamos del otro lado, por ejemplo, del lado web, y sabemos que la interfaz es lo más importante, tenemos que aprender a usar ciertas cosas que le hagan la vida más fácil al usuario. Ahí es donde podemos, por el lado de los estilos, generar dinamismo pensando en CSS Orientado a Objetos (no realmente, pero el concepto es válido). Podríamos pensar en javascript para convertir algún formulario demasiado largo en algún wizard: Turn any webform into a wizard with jQuery, o usando varios tips para hacer el javascript más rápido: Improve your jQuery - Excellent 25 tips.

De estos está la internet llena, solo hay que buscar y ponerse a leer y a elegir qué será lo mejor.

Soy un zorrinito programador.

(Read more →)